Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configuration de ClickHouse pour utiliser LDAP pour l’authentification et le mappage des rôles

Non pris en charge par ClickHouse Cloud

ClickHouse peut être configuré pour utiliser LDAP afin d’authentifier les utilisateurs de base de données ClickHouse. Ce guide présente un exemple simple d’intégration de ClickHouse à un système LDAP utilisant un annuaire public pour l’authentification.

Configurer les paramètres de connexion LDAP dans ClickHouse

  1. Testez votre connexion à ce serveur LDAP public :

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

    La réponse ressemblera à ceci :

    # LDIF étendu
    #
    # LDAPv3
    # base <dc=example,dc=com> avec une portée de sous-arborescence
    # filtre : (objectclass=*)
    # demande : ALL
    #
    
    # example.com
    dn: dc=example,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: example.com
    dc: example
    ...
  2. Modifiez le fichier config.xml et ajoutez ce qui suit pour configurer 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>

Voici les paramètres de base utilisés ci-dessus :

Parameter Description Example
host nom d’hôte ou IP du serveur LDAP ldap.forumsys.com
port port du service d’annuaire LDAP 389
bind_dn chemin modèle vers les utilisateurs uid={user_name},dc=example,dc=com
enable_tls indique s’il faut utiliser LDAP sécurisé no
tls_require_cert indique s’il faut exiger un certificat pour la connexion never
  1. Ajoutez la section <ldap> à la section <user_directories> pour configurer le mappage des rôles utilisateur. Cette section définit comment un utilisateur est authentifié et quel rôle il recevra. Dans cet exemple de base, tout utilisateur s’authentifiant via LDAP recevra le rôle scientists_role, qui sera défini dans ClickHouse à une étape ultérieure. La section doit ressembler à ceci :

    <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>

    Voici les paramètres de base utilisés ci-dessus :

    Parameter Description Example
    server libellé défini dans la section ldap_servers précédente test_ldap_server
    roles nom des rôles définis dans ClickHouse auxquels les utilisateurs seront associés scientists_role
    base_dn chemin de base à partir duquel rechercher les groupes de l’utilisateur dc=example,dc=com
    search_filter filtre de recherche LDAP permettant d’identifier les groupes à sélectionner pour le mappage des utilisateurs (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
    attribute nom de l’attribut dont la valeur doit être renvoyée cn
  2. Redémarrez votre serveur ClickHouse pour appliquer les paramètres.

Configurer les rôles et les permissions de la base de données ClickHouse

  1. Créez un rôle dans ClickHouse portant le même nom que celui utilisé dans la section de mappage des rôles du fichier config.xml

    CREATE ROLE scientists_role;
  2. Accordez au rôle les privilèges nécessaires. L'instruction suivante accorde des privilèges d'administrateur à tout utilisateur pouvant s'authentifier via LDAP :

    GRANT ALL ON *.* TO scientists_role;

Tester la configuration LDAP

  1. Connectez-vous à l’aide du client 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. Vérifiez que l’utilisateur a bien été associé au rôle scientists_role et qu’il dispose des autorisations d’administrateur

    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.

Résumé

Cet article a présenté les bases de la configuration de ClickHouse pour l’authentification auprès d’un serveur LDAP, ainsi que pour l’attribution d’un rôle. Il est également possible de configurer des utilisateurs individuels dans ClickHouse tout en les faisant authentifier par LDAP, sans mettre en place de mappage de rôles automatisé. Le module LDAP peut aussi être utilisé pour se connecter à Active Directory.

Navigation