Существующие и корректно настроенные пользователи ClickHouse могут проходить аутентификацию с помощью протокола Kerberos.
В настоящее время Kerberos можно использовать только как внешний аутентификатор для существующих пользователей, определенных в users.xml или в локальных путях управления доступом. Эти пользователи могут использовать только HTTP-запросы и должны поддерживать аутентификацию с помощью механизма GSS-SPNEGO.
Для такого подхода Kerberos должен быть настроен в системе и включен в конфигурации ClickHouse.
Включение Kerberos в ClickHouse
Чтобы включить Kerberos, добавьте раздел kerberos в файл config.xml. Этот раздел может содержать дополнительные параметры.
Параметры
-
principal— каноническое имя субъекта сервиса, которое будет получено и использовано при приеме контекстов безопасности.- Этот параметр необязателен; если он не указан, будет использоваться субъект по умолчанию.
-
realm— realm, который будет использоваться для ограничения аутентификации только теми запросами, realm инициатора которых с ним совпадает.- Этот параметр необязателен; если он не указан, дополнительная фильтрация по realm применяться не будет.
-
keytab— путь к файлу keytab сервиса.- Этот параметр необязателен; если он не указан, путь к файлу keytab сервиса должен быть задан в переменной окружения
KRB5_KTNAME.
- Этот параметр необязателен; если он не указан, путь к файлу keytab сервиса должен быть задан в переменной окружения
Пример (добавляется в config.xml):
<clickhouse>
<!- ... -->
<kerberos />
</clickhouse>С указанием субъекта:
<clickhouse>
<!- ... -->
<kerberos>
<principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
</kerberos>
</clickhouse>При фильтрации по realm:
<clickhouse>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</clickhouse>Kerberos как внешний аутентификатор для существующих пользователей
Kerberos можно использовать как способ проверки подлинности локально определённых пользователей (пользователей, определённых в users.xml или в локальных путях управления доступом). В настоящее время только запросы через HTTP-интерфейс могут быть керберизованы (с использованием механизма GSS-SPNEGO).
Формат имени субъекта Kerberos обычно выглядит так:
- primary/instance@REALM
Часть /instance может встречаться ноль или более раз. Чтобы аутентификация прошла успешно, ожидается, что часть primary в каноническом имени субъекта инициатора будет совпадать с именем керберизованного пользователя.
Включение Kerberos в users.xml
Чтобы включить аутентификацию Kerberos для пользователя, укажите в определении пользователя секцию kerberos вместо password или аналогичных секций.
Параметры:
realm— realm, который используется для ограничения аутентификации только теми запросами, у которых realm инициатора совпадает с ним.- Этот параметр необязателен; если его не указать, дополнительная фильтрация по realm применяться не будет.
Пример (добавляется в users.xml):
<clickhouse>
<!- ... -->
<users>
<!- ... -->
<my_user>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</my_user>
</users>
</clickhouse>Включение Kerberos с помощью SQL
Когда в ClickHouse включена система управления доступом и учётными записями через SQL, пользователей, идентифицируемых с помощью Kerberos, также можно создавать с помощью команд SQL.
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'…или без фильтрации по realm:
CREATE USER my_user IDENTIFIED WITH kerberos