Passer au contenu principal
Cette page ne s’applique pas à ClickHouse Cloud. La fonctionnalité décrite ici n’est pas disponible dans les services ClickHouse Cloud. Consultez le guide ClickHouse Compatibilité Cloud pour plus d’informations.
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.
1

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>
    
Les balises <test_ldap_server> constituent un libellé arbitraire permettant d’identifier un serveur LDAP donné.
Voici les paramètres de base utilisés ci-dessus :
ParameterDescriptionExample
hostnom d’hôte ou IP du serveur LDAPldap.forumsys.com
portport du service d’annuaire LDAP389
bind_dnchemin modèle vers les utilisateursuid={user_name},dc=example,dc=com
enable_tlsindique s’il faut utiliser LDAP sécuriséno
tls_require_certindique s’il faut exiger un certificat pour la connexionnever
Dans cet exemple, comme le serveur public utilise le port 389 et n’utilise pas de port sécurisé, nous désactivons TLS à des fins de démonstration.
Consultez la page de documentation LDAP pour plus de détails sur les paramètres LDAP.
  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 :
    ParameterDescriptionExample
    serverlibellé défini dans la section ldap_servers précédentetest_ldap_server
    rolesnom des rôles définis dans ClickHouse auxquels les utilisateurs seront associésscientists_role
    base_dnchemin de base à partir duquel rechercher les groupes de l’utilisateurdc=example,dc=com
    search_filterfiltre de recherche LDAP permettant d’identifier les groupes à sélectionner pour le mappage des utilisateurs(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
    attributenom de l’attribut dont la valeur doit être renvoyéecn
  2. Redémarrez votre serveur ClickHouse pour appliquer les paramètres.
2

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

Les procédures de cette section supposent que SQL Access Control and Account Management est activé dans ClickHouse. Pour l’activer, consultez le guide SQL sur les utilisateurs et les rôles.
  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;
    
3

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 :)
    
Utilisez la commande ldapsearch à l’étape 1 pour afficher tous les utilisateurs disponibles dans l’annuaire. Pour tous les utilisateurs, le mot de passe est password.
  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.
Dernière modification le 29 juin 2026