Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configurando o ClickHouse para usar LDAP para autenticação e mapeamento de funções

Sem suporte no ClickHouse Cloud

O ClickHouse pode ser configurado para usar LDAP na autenticação de usuários de banco de dados do ClickHouse. Este guia apresenta um exemplo simples de integração do ClickHouse com um sistema LDAP para autenticação em um diretório disponível publicamente.

Configure as definições de conexão LDAP no ClickHouse

  1. Teste a conexão com este servidor LDAP público:

    $ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.com

    A resposta será semelhante a esta:

    # LDIF estendido
    #
    # LDAPv3
    # base <dc=example,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
    
    # example.com
    dn: dc=example,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: example.com
    dc: example
    ...
  2. Edite o arquivo config.xml e adicione o seguinte para configurar o LDAP:

    <ldap_servers>
        <test_ldap_server>
        <host>ldap.forumsys.com</host>
        <port>389</port>
        <bind_dn>uid={user_name},dc=example,dc=com</bind_dn>
        <enable_tls>no</enable_tls>
        <tls_require_cert>never</tls_require_cert>
        </test_ldap_server>
    </ldap_servers>

Estas são as configurações básicas usadas acima:

Parâmetro Descrição Exemplo
host hostname ou IP do servidor LDAP ldap.forumsys.com
port porta do diretório no servidor LDAP 389
bind_dn caminho de modelo para os usuários uid={user_name},dc=example,dc=com
enable_tls se deve usar LDAP seguro no
tls_require_cert se deve exigir certificado para a conexão never
  1. Adicione a seção <ldap> à seção <user_directories> para configurar o mapeamento de roles do usuário. Esta seção define quando um usuário é autenticado e qual role ele receberá. Neste exemplo básico, qualquer usuário autenticado via LDAP receberá a scientists_role, que será definida em uma etapa posterior no ClickHouse. A seção deve ficar semelhante a esta:

    <user_directories>
        <users_xml>
            <path>users.xml</path>
        </users_xml>
        <local_directory>
            <path>/var/lib/clickhouse/access/</path>
        </local_directory>
        <ldap>
              <server>test_ldap_server</server>
              <roles>
                 <scientists_role />
              </roles>
              <role_mapping>
                 <base_dn>dc=example,dc=com</base_dn>
                 <search_filter>(&amp;(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))</search_filter>
                 <attribute>cn</attribute>
              </role_mapping>
        </ldap>
    </user_directories>

    Estas são as configurações básicas usadas acima:

    Parâmetro Descrição Exemplo
    server rótulo definido na seção ldap_servers anterior test_ldap_server
    roles nome das roles definidas no ClickHouse para as quais os usuários serão mapeados scientists_role
    base_dn caminho base para iniciar a busca pelos grupos do usuário dc=example,dc=com
    search_filter filtro de busca LDAP para identificar os grupos a serem selecionados no mapeamento de usuários (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
    attribute nome do atributo cujo valor deve ser retornado cn
  2. Reinicie o servidor ClickHouse para aplicar as configurações.

Configure roles e permissões do banco de dados ClickHouse

  1. Crie uma role no ClickHouse com o mesmo nome usado na seção de mapeamento de roles do arquivo config.xml

    CREATE ROLE scientists_role;
  2. Conceda os privilégios necessários à role. A instrução a seguir concede privilégios de admin a qualquer usuário que consiga se autenticar via LDAP:

    GRANT ALL ON *.* TO scientists_role;

Teste a configuração do LDAP

  1. Faça login usando o clickhouse client
    $ clickhouse-client --user einstein --password password
    ClickHouse client version 22.2.2.1.
    Connecting to localhost:9000 as user einstein.
    Connected to ClickHouse server version 22.2.2 revision 54455.
    
    chnode1 :)
  1. Verifique se o usuário foi mapeado corretamente para a função scientists_role e se tem permissões de Admin

    SHOW DATABASES
    Query id: 93b785ff-1482-4eda-95b0-b2d68b2c5e0f
    
    ┌─name───────────────┐
    │ INFORMATION_SCHEMA │
    │ db1_mysql          │
    │ db2                │
    │ db3                │
    │ db4_mysql          │
    │ db5_merge          │
    │ default            │
    │ information_schema │
    │ system             │
    └────────────────────┘
    
    9 rows in set. Elapsed: 0.004 sec.

Resumo

Este artigo apresentou o básico da configuração do ClickHouse para autenticar em um servidor LDAP e também para mapear uma função. Também há opções para configurar usuários individuais no ClickHouse e fazer com que esses usuários sejam autenticados pelo LDAP, sem configurar o mapeamento automático de funções. O módulo LDAP também pode ser usado para se conectar ao Active Directory.

Navigation