6.8 KiB
Kerberos
ClickHouse поддерживает аутентификацию существующих (и правильно сконфигурированных) пользователей с использованием Kerberos.
В настоящее время возможна Kerberos-аутентификация уже существующих пользователей, определённых в конфигурационном файле users.xml
или с помощью выражений SQL. Пользователи, имеющие конфигурацию для аутентификации через Kerberos, могут работать только через HTTP-интерфейс, причём сами клиенты должны иметь возможность аутентификации с использованием механизма GSS-SPNEGO.
Для Kerberos-аутентификации необходимо предварительно корректно настроить Kerberos на стороне клиента, на сервере и в конфигурационных файлах самого ClickHouse. Ниже описана лишь конфигурация ClickHouse.
Настройка Kerberos в ClickHouse
Для того, чтобы включить Kerberos-аутентификацию в ClickHouse, необходимо добавить одну-единственную секцию kerberos
в config.xml
. Заметим, что это не единственная необходимая для работы Kerberos настройка.
Примеры, как должен выглядеть файл config.xml
:
<yandex>
<!- ... -->
<kerberos />
</yandex>
...или:
<yandex>
<!- ... -->
<kerberos>
<principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
</kerberos>
</yandex>
...или:
<yandex>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</yandex>
Важно: в конфигурационном файле может быть не более одной секции kerberos
. В противном случае, аутентификация с помощью Kerberos будет недоступна для всех пользователей.
Параметры:
-
principal
— задаёт имя принципала (canonical service principal name, SPN), используемое при авторизации ClickHouse на Kerberos-сервере.- Это опциональный параметр, при его отсутствии будет использовано стандартное имя.
-
realm
&mdash обеспечивает фильтрацию по реалм (realm). Пользователям, чей реалм не совпадает с указанным, будет отказано в аутентификации.- Это опциональный параметр, при его отсутствии фильтр по реалм применяться не будет.
Важно: в конфигурационном файле не могут быть указаны одновременно оба параметра. В противном случае, аутентификация с помощью Kerberos будет недоступна для всех пользователей.
Аутентификация пользователей с помощью Kerberos
Уже существующие пользователи могут воспользоваться аутентификацией с помощью Kerberos. Однако, Kerberos-аутентификация возможна только при использовании HTTP-интерфейса.
Имя принципала (principal name) обычно имеет вид:
- primary/instance@REALM
Для успешной аутентификации необходимо, чтобы primary совпадало с именем пользователя ClickHouse, настроенного для использования Kerberos.
Настройка Kerberos в users.xml
Для того, чтобы пользователь имел возможность аутентификации с помощью Kerberos, достаточно включить секцию kerberos
в описание пользователя в users.xml
(например, вместо секции password
или аналогичной ей).
Важно: если пользователь настроен для Kerberos-аутентификации, другие виды уатентификации будут для него недоступны. Если наряду с kerberos
в определении пользователя будет указан какой-либо другой способ аутентификации, ClickHouse завершит работу.
Пример, как выглядит конфигурация Kerberos в users.xml
:
<yandex>
<!- ... -->
<users>
<!- ... -->
<my_user>
<!- ... -->
<kerberos>
<realm>EXAMPLE.COM</realm>
</kerberos>
</my_user>
</users>
</yandex>
Note, that now, once user my_user
uses kerberos
, Kerberos must be enabled in the main config.xml
file as described previously.
Ещё раз отметим, что кроме users.xml
, необходимо также включить Kerberos в config.xml
.
Параметры:
realm
— обеспечивает фильтрацию по реалм (realm): аутентификация будет возможна только при совпадении реалм клиента с указанным.- Этот параметр является опциональным, при его отсутствии фильтрация применяться не будет.
Настройка Kerberos через SQL
Пользователей, использующих Kerberos-аутентификацию, можно создавать не только в конфигурационном файле users.xml
.
Если SQL-ориентированное управление доступом включено в ClickHouse, можно также создать пользователя, работающего через Kerberos, с помощью SQL.
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'
...или, без фильтрации по реалм:
CREATE USER my_user IDENTIFIED WITH kerberos