Перейти к основному содержимому
Перейти к основному содержимому

Настройка ClickHouse для использования LDAP для аутентификации и сопоставления ролей

Not supported in ClickHouse Cloud
примечание

Эта страница не применима к ClickHouse Cloud. Функция, описанная здесь, недоступна в сервисах ClickHouse Cloud. Смотрите руководство по совместимости с Cloud для получения дополнительной информации.

ClickHouse можно настроить для использования LDAP для аутентификации пользователей базы данных ClickHouse. В этом руководстве приведен простой пример интеграции ClickHouse с системой LDAP, аутентифицирующейся с использованием общедоступного каталога.

1. Настройка параметров подключения LDAP в ClickHouse

  1. Протестируйте подключение к этому общедоступному LDAP-серверу:
$ ldapsearch -x -b dc=example,dc=com -H ldap://ldap.forumsys.com

Ответ будет примерно таким:


# extended LDIF
#

# LDAPv3

# base <dc=example,dc=com> with scope subtree

# filter: (objectclass=*)

# requesting: ALL
#


# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.com
dc: example
...
  1. Отредактируйте файл 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>
примечание

Тег <test_ldap_server> является произвольной меткой для идентификации конкретного LDAP-сервера.

Вот основные параметры, используемые выше:

ПараметрОписаниеПример
hostимя хоста или IP LDAP-сервераldap.forumsys.com
portпорт каталога для LDAP-сервера389
bind_dnшаблонный путь к пользователямuid={user_name},dc=example,dc=com
enable_tlsиспользовать ли защищенный LDAPнет
tls_require_certтребовать ли сертификат для соединенияникогда
примечание

В этом примере, поскольку публичный сервер использует 389 и не использует защищенный порт, мы отключаем TLS в демонстрационных целях.

примечание

Ознакомьтесь с документацией LDAP для получения дополнительных сведений о настройках LDAP.

  1. Добавьте раздел <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>(&amp;(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))</search_filter>
             <attribute>cn</attribute>
          </role_mapping>
    </ldap>
</user_directories>

Вот основные параметры, используемые выше:

ПараметрОписаниеПример
serverметка, определенная в предыдущем разделе ldap_serverstest_ldap_server
rolesимя ролей, определенных в ClickHouse, к которым будут сопоставлены пользователиscientists_role
base_dnосновной путь для начала поиска групп с пользователямиdc=example,dc=com
search_filterфильтр поиска ldap для идентификации групп для выбора для сопоставления пользователей(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
attributeкакое значение атрибута должно быть возвращеноcn
  1. Перезапустите сервер ClickHouse, чтобы применить настройки.

2. Настройка ролей и разрешений базы данных ClickHouse

примечание

Процедуры в этом разделе предполагают, что контроль доступа SQL и управление аккаунтами в ClickHouse были включены. Для включения ознакомьтесь с руководством пользователей и ролей SQL.

  1. Создайте роль в ClickHouse с тем же именем, которое используется в разделе сопоставления ролей файла config.xml
CREATE ROLE scientists_role;
  1. Предоставьте необходимые привилегии роли. Следующий оператор предоставляет администраторские привилегии любому пользователю, способному аутентифицироваться через LDAP:
GRANT ALL ON *.* TO scientists_role;

3. Тестирование конфигурации LDAP

  1. Войдите, используя клиент 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 :)
примечание

Используйте команду ldapsearch на этапе 1, чтобы просмотреть всех пользователей, доступных в каталоге, и для всех пользователей пароль равен password

  1. Проверьте, что пользователь был правильно сопоставлен с ролью scientists_role и имеет администраторские разрешения
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.

Резюме

В этой статье были продемонстрированы основы настройки ClickHouse для аутентификации на сервере LDAP, а также для сопоставления с ролью. Существуют также варианты настройки отдельных пользователей в ClickHouse, однако, чтобы эти пользователи аутентифицировались с помощью LDAP без настройки автоматического сопоставления ролей. Модуль LDAP также можно использовать для подключения к Active Directory.