ClickHouse se puede configurar para usar LDAP para autenticar a los usuarios de la base de datos de ClickHouse. Esta guía ofrece un ejemplo sencillo de cómo integrar ClickHouse con un sistema LDAP que autentica contra un directorio disponible públicamente.
Configura los ajustes de conexión LDAP en ClickHouse
-
Prueba la conexión con este servidor LDAP público:
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.comLa respuesta será similar a esta:
# LDIF extendido # # LDAPv3 # base <dc=example,dc=com> con alcance subtree # filtro: (objectclass=*) # solicitando: ALL # # example.com dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization o: example.com dc: example ... -
Edita el archivo
config.xmly añade lo siguiente para configurar 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>
Estos son los ajustes básicos usados arriba:
| Parámetro | Descripción | Ejemplo |
|---|---|---|
| host | hostname o IP del servidor LDAP | ldap.forumsys.com |
| port | puerto del directorio del servidor LDAP | 389 |
| bind_dn | ruta de plantilla para los usuarios | uid={user_name},dc=example,dc=com |
| enable_tls | si se debe usar LDAP seguro | no |
| tls_require_cert | si se debe exigir un certificado para la conexión | never |
-
Añade la sección
<ldap>a la sección<user_directories>para configurar la asignación de roles de usuario. Esta sección define cuándo se autentica un usuario y qué rol recibirá. En este ejemplo básico, cualquier usuario que se autentique mediante LDAP recibirá elscientists_role, que se definirá más adelante en ClickHouse. La sección debería verse similar 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>Estos son los ajustes básicos usados arriba:
Parámetro Descripción Ejemplo server etiqueta definida en la sección ldap_servers anterior test_ldap_server roles nombre de los roles definidos en ClickHouse a los que se asignarán los usuarios scientists_role base_dn ruta base para iniciar la búsqueda de grupos del usuario dc=example,dc=com search_filter filtro de búsqueda LDAP para identificar los grupos que se seleccionarán al asignar usuarios (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))attribute nombre del atributo cuyo valor se devolverá cn -
Reinicia el servidor ClickHouse para aplicar los ajustes.
Configurar roles y permisos de la base de datos de ClickHouse
-
Cree un rol en ClickHouse con el mismo nombre que se usa en la sección de asignación de roles del archivo
config.xmlCREATE ROLE scientists_role; -
Conceda al rol los privilegios necesarios. La siguiente instrucción concede privilegios de administrador a cualquier usuario que pueda autenticarse mediante LDAP:
GRANT ALL ON *.* TO scientists_role;
Pruebe la configuración de LDAP
- Inicie sesión con el cliente de ClickHouse
$ 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 :)
-
Compruebe que el usuario se haya asignado correctamente al rol
scientists_roley que tenga permisos de administradorSHOW 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.
Resumen
En este artículo se mostraron los conceptos básicos para configurar ClickHouse de modo que se autentique en un servidor LDAP y también se asigne a un rol. También hay opciones para configurar usuarios individuales en ClickHouse y hacer que esos usuarios se autentiquen mediante LDAP sin configurar la asignación automática de roles. El módulo LDAP también puede usarse para conectarse a Active Directory.