Kerberos
ClickHouse предоставляет возможность аутентификации существующих (и правильно сконфигурированных) пользователей с использованием Kerberos.
В настоящее время возможно использование Kerberos только как внешнего аутентификатора, то есть для аутентификации уже существующих пользователей с помощью Kerberos. Пользователи, настроенные для Kerberos-аутентификации, могут работать с ClickHouse только через HTTP-интерфейс, причём сами клиенты должны иметь возможность аутентификации с использованием механизма GSS-SPNEGO.
Для Kerberos-аутентификации необходимо предварительно корректно настроить Kerberos на стороне клиента, на сервере и в конфигурационных файлах самого ClickHouse. Ниже описана лишь конфигурация ClickHouse.
Настройка Kerberos в ClickHouse
Для того, чтобы задействовать Kerberos-аутентификацию в ClickHouse, в первую очередь необходимо добавить одну-единственную секцию kerberos в config.xml.
В секции могут быть указаны дополнительные параметры:
-
principal— задаёт имя принципала (canonical service principal name, SPN), используемое при авторизации ClickHouse на Kerberos-сервере.- Это опциональный параметр, при его отсутствии будет использовано стандартное имя.
-
realm— обеспечивает фильтрацию по реалм (realm). Пользователям, чей реалм не совпадает с указанным, будет отказано в аутентификации.- Это опциональный параметр, при его отсутствии фильтр по реалм применяться не будет.
-
keytab— задаёт путь к файлу keytab.- Это опциональный параметр, при его отсутствии путь к файлу keytab должен быть задан в переменной окружения
KRB5_KTNAME.
- Это опциональный параметр, при его отсутствии путь к файлу keytab должен быть задан в переменной окружения
Примеры, как должен выглядеть файл config.xml:
Или, с указанием принципала:
Или, с фильтрацией по реалм:
В конфигурационном файле не могут быть указаны одновременно оба параметра. В противном случае, аутентификация с помощью Kerberos будет недоступна для всех пользователей.
В конфигурационном файле может быть не более одной секции kerberos. В противном случае, аутентификация с помощью Kerberos будет отключена для всех пользователей.
Аутентификация пользователей с помощью Kerberos
Уже существующие пользователи могут воспользоваться аутентификацией с помощью Kerberos. Однако, Kerberos-аутентификация возможна только при использовании HTTP-интерфейса.
Имя принципала (principal name) обычно имеет вид:
- primary/instance@REALM
Для успешной аутентификации необходимо, чтобы primary совпало с именем пользователя ClickHouse, настроенного для использования Kerberos.
Настройка Kerberos в users.xml
Для того, чтобы пользователь имел возможность производить аутентификацию с помощью Kerberos, достаточно включить секцию kerberos в описание пользователя в users.xml (например, вместо секции password или аналогичной ей).
В секции могут быть указаны дополнительные параметры:
realm— обеспечивает фильтрацию по реалм (realm): аутентификация будет возможна только при совпадении реалм клиента с указанным.- Этот параметр является опциональным, при его отсутствии фильтрация применяться не будет.
Пример, как выглядит конфигурация Kerberos в users.xml:
Если пользователь настроен для Kerberos-аутентификации, другие виды аутентификации будут для него недоступны. Если наряду с kerberos в определении пользователя будет указан какой-либо другой способ аутентификации, ClickHouse завершит работу.
Ещё раз отметим, что кроме users.xml, необходимо также включить Kerberos в config.xml.
Настройка Kerberos через SQL
Пользователей, использующих Kerberos-аутентификацию, можно создать не только с помощью изменения конфигурационных файлов. Если SQL-ориентированное управление доступом включено в ClickHouse, можно также создать пользователя, работающего через Kerberos, с помощью SQL.
Или, без фильтрации по реалм: