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
-
Testez votre connexion à ce serveur LDAP public :
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.comLa 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 ... -
Modifiez le fichier
config.xmlet 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 |
-
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ôlescientists_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>(&(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 -
Redémarrez votre serveur ClickHouse pour appliquer les paramètres.
Configurer les rôles et les permissions de la base de données ClickHouse
-
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.xmlCREATE ROLE scientists_role; -
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
- 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 :)
-
Vérifiez que l’utilisateur a bien été associé au rôle
scientists_roleet qu’il dispose des autorisations d’administrateurSHOW 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.
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.