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

Определение сервера LDAP

Чтобы определить сервер LDAP, необходимо добавить в config.xml раздел ldap_servers. Пример
Обратите внимание: в разделе ldap_servers можно задать несколько LDAP-серверов, используя для них разные имена. Параметры Подпараметры user_dn_detection Раздел с параметрами LDAP-поиска для определения фактического user DN привязанного пользователя. В основном используется в search filter для дальнейшего сопоставления ролей, когда сервером является Active Directory. Полученный user DN будет использоваться при замене подстрок {user_dn} везде, где это разрешено. По умолчанию user DN совпадает с bind DN, но после выполнения поиска он будет обновлен до фактически определенного значения user DN.

Внешний аутентификатор LDAP

Удалённый LDAP-сервер можно использовать для проверки паролей локально определённых пользователей (пользователей, определённых в users.xml или в локальных путях управления доступом). Для этого в определении пользователя укажите имя ранее определённого LDAP-сервера вместо password или аналогичных секций. При каждой попытке входа ClickHouse пытается выполнить “bind” с указанным DN, заданным параметром bind_dn в Определении сервера LDAP, используя предоставленные учётные данные, и, если это удаётся, пользователь считается аутентифицированным. Этот способ часто называют методом “simple bind”. Пример
Обратите внимание, что пользователь my_user ссылается на my_ldap_server. Этот LDAP-сервер должен быть настроен в основном файле config.xml, как описано выше. Когда включена система управления доступом и учётными записями, управляемая через SQL, пользователей, аутентифицируемых LDAP-серверами, также можно создавать с помощью оператора CREATE USER.
Query

Внешний каталог пользователей LDAP

Помимо локально определённых пользователей, в качестве источника пользовательских определений можно использовать удалённый LDAP-сервер. Для этого укажите имя ранее определённого LDAP-сервера (см. Определение сервера LDAP) в разделе ldap внутри раздела users_directories файла config.xml. При каждой попытке входа ClickHouse пытается найти определение пользователя локально и аутентифицировать его обычным образом. Если пользователь не определён, ClickHouse будет считать, что он существует во внешнем каталоге LDAP, и попытается выполнить “bind” с указанным DN на LDAP-сервере, используя предоставленные учётные данные. В случае успеха пользователь будет считаться существующим и аутентифицированным. Пользователю будут назначены роли из списка, указанного в разделе roles. Кроме того, можно выполнить LDAP-”search”, а результаты преобразовать в имена ролей и назначить эти роли пользователю, если также настроен раздел role_mapping. Для всего этого должна быть включена система управления доступом и учётными записями, управляемая через SQL, а роли должны создаваться с помощью оператора CREATE ROLE. Пример Добавляется в config.xml.
Обратите внимание, что my_ldap_server, на который есть ссылка в разделе ldap внутри раздела user_directories, должен быть ранее определённым сервером LDAP, настроенным в config.xml (см. Определение сервера LDAP). Параметры Подпараметры role_mapping Раздел с параметрами LDAP-поиска и правилами сопоставления. Когда пользователь проходит аутентификацию, пока соединение всё ещё привязано к LDAP, выполняется LDAP-поиск с использованием search_filter и имени вошедшего пользователя. Для каждой записи, найденной в ходе этого поиска, извлекается значение указанного атрибута. Для каждого значения атрибута с указанным префиксом префикс удаляется, а оставшаяся часть значения становится именем локальной роли, определённой в ClickHouse, которую необходимо заранее создать с помощью оператора CREATE ROLE. Внутри одного и того же раздела ldap можно определить несколько разделов role_mapping. Все они будут применены.
Последнее изменение 3 июля 2026 г.