Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configuración de ClickHouse para usar LDAP para la autenticación y la asignación de roles

No es compatible con ClickHouse Cloud

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

  1. Prueba la conexión con este servidor LDAP público:

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

    La 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
    ...
  2. Edita el archivo config.xml y 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
  1. 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á el scientists_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>(&amp;(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
  2. Reinicia el servidor ClickHouse para aplicar los ajustes.

Configurar roles y permisos de la base de datos de ClickHouse

  1. Cree un rol en ClickHouse con el mismo nombre que se usa en la sección de asignación de roles del archivo config.xml

    CREATE ROLE scientists_role;
  2. 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

  1. 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 :)
  1. Compruebe que el usuario se haya asignado correctamente al rol scientists_role y que tenga permisos de administrador

    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.

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.

Navigation