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
-
Teste a conexão com este servidor LDAP público:
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.comA 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 ... -
Edite o arquivo
config.xmle 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 |
-
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á ascientists_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>(&(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 -
Reinicie o servidor ClickHouse para aplicar as configurações.
Configure roles e permissões do banco de dados ClickHouse
-
Crie uma role no ClickHouse com o mesmo nome usado na seção de mapeamento de roles do arquivo
config.xmlCREATE ROLE scientists_role; -
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
- 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 :)
-
Verifique se o usuário foi mapeado corretamente para a função
scientists_rolee se tem permissões de AdminSHOW DATABASESQuery 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.