Перейти к основному содержанию
Эта страница не применима к ClickHouse Cloud. Описанная здесь возможность недоступна в сервисах ClickHouse Cloud. Дополнительные сведения см. в руководстве ClickHouse Cloud Compatibility.
ClickHouse можно настроить для использования LDAP при аутентификации пользователей базы данных ClickHouse. В этом руководстве приведён простой пример интеграции ClickHouse с системой LDAP, которая выполняет аутентификацию через общедоступный каталог.
1

Настройка параметров LDAP-соединения в ClickHouse

  1. Проверьте подключение к этому общедоступному 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
    ...
    
  2. Отредактируйте файл 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-сервера.
Это основные параметры, использованные выше:
ParameterDescriptionExample
hostимя хоста или IP-адрес LDAP-сервераldap.forumsys.com
portпорт LDAP-сервера389
bind_dnшаблонный путь к пользователямuid={user_name},dc=example,dc=com
enable_tlsиспользовать ли защищенный LDAPno
tls_require_certтребуется ли сертификат для соединенияnever
В этом примере, поскольку общедоступный сервер использует порт 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>
    
    Это основные параметры, использованные выше:
    ParameterDescriptionExample
    serverметка, заданная в предыдущем разделе ldap_serverstest_ldap_server
    rolesимя ролей, определенных в ClickHouse, которым будут сопоставлены пользователиscientists_role
    base_dnбазовый путь, откуда начинается поиск групп пользователяdc=example,dc=com
    search_filterLDAP search filter для определения групп, используемых при сопоставлении пользователей(&(objectClass=groupOfUniqueNames)(uniqueMember={bind_dn}))
    attributeимя attribute, значение которого должно возвращатьсяcn
  2. Перезапустите ClickHouse server, чтобы применить параметры.
2

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

В этом разделе предполагается, что в ClickHouse включена SQL-система управления доступом и учётными записями. Чтобы включить её, см. руководство по SQL-пользователям и ролям.
  1. Создайте в ClickHouse роль с тем же именем, что используется в разделе сопоставления ролей файла config.xml
    CREATE ROLE scientists_role;
    
  2. Назначьте роли необходимые привилегии. Следующий оператор предоставляет права администратора любому пользователю, который может пройти аутентификацию через 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 :)
    
На шаге 1 используйте команду ldapsearch, чтобы просмотреть всех пользователей, доступных в каталоге; для всех пользователей пароль — 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.
Последнее изменение 10 июня 2026 г.