ClickHouse можно настроить для использования LDAP при аутентификации пользователей базы данных ClickHouse. В этом руководстве приведён простой пример интеграции ClickHouse с системой LDAP, которая выполняет аутентификацию через общедоступный каталог.
Настройка параметров LDAP-соединения в ClickHouse
-
Проверьте подключение к этому общедоступному LDAP-серверу:
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.comОтвет будет примерно таким:
# расширенный LDIF # # LDAPv3 # база <dc=example,dc=com> с областью subtree # фильтр: (objectclass=*) # запрашивается: ALL # # example.com dn: dc=example,dc=com objectClass: top objectClass: dcObject objectClass: organization o: example.com dc: example ... -
Отредактируйте файл
config.xmlи добавьте следующее, чтобы настроить 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>
Это основные параметры, использованные выше:
| Parameter | Description | Example |
|---|---|---|
| host | имя хоста или IP-адрес LDAP-сервера | ldap.forumsys.com |
| port | порт LDAP-сервера | 389 |
| bind_dn | шаблонный путь к пользователям | uid={user_name},dc=example,dc=com |
| enable_tls | использовать ли защищенный LDAP | no |
| tls_require_cert | требуется ли сертификат для соединения | never |
-
Добавьте раздел
<ldap>в раздел<user_directories>, чтобы настроить сопоставление ролей пользователей. Этот раздел определяет, как аутентифицируется пользователь и какую роль он получит. В этом простом примере любой пользователь, прошедший аутентификацию через LDAP, получит рольscientists_role, которая будет определена на следующем шаге в ClickHouse. Раздел должен выглядеть примерно так:<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>Это основные параметры, использованные выше:
Parameter Description Example server метка, заданная в предыдущем разделе ldap_servers test_ldap_server roles имя ролей, определенных в ClickHouse, которым будут сопоставлены пользователи scientists_role base_dn базовый путь, откуда начинается поиск групп пользователя dc=example,dc=com search_filter LDAP search filter для определения групп, используемых при сопоставлении пользователей (&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))attribute имя attribute, значение которого должно возвращаться cn -
Перезапустите ClickHouse server, чтобы применить параметры.
Настройка ролей и разрешений в базе данных ClickHouse
-
Создайте в ClickHouse роль с тем же именем, что используется в разделе сопоставления ролей файла
config.xmlCREATE ROLE scientists_role; -
Назначьте роли необходимые привилегии. Следующий оператор предоставляет права администратора любому пользователю, который может пройти аутентификацию через LDAP:
GRANT ALL ON *.* TO scientists_role;
Проверьте конфигурацию LDAP
- Войдите в систему с помощью клиента 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 :)
-
Убедитесь, что пользователь правильно сопоставлен с ролью
scientists_roleи имеет права администратораSHOW 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.
Итоги
В этой статье были рассмотрены основы настройки ClickHouse для аутентификации через LDAP-сервер, а также сопоставления с ролью. Также можно настроить отдельных пользователей в ClickHouse так, чтобы они проходили аутентификацию через LDAP без настройки автоматического сопоставления ролей. Модуль LDAP также можно использовать для подключения к Active Directory.