mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 08:32:02 +00:00
112 lines
6.8 KiB
Markdown
112 lines
6.8 KiB
Markdown
# Kerberos {#external-authenticators-kerberos}
|
||
|
||
ClickHouse поддерживает аутентификацию существующих (и правильно сконфигурированных) пользователей с использованием Kerberos.
|
||
|
||
В настоящее время возможна Kerberos-аутентификация уже существующих пользователей, определённых в конфигурационном файле `users.xml` или с помощью выражений SQL. Пользователи, имеющие конфигурацию для аутентификации через Kerberos, могут работать только через HTTP-интерфейс, причём сами клиенты должны иметь возможность аутентификации с использованием механизма GSS-SPNEGO.
|
||
|
||
Для Kerberos-аутентификации необходимо предварительно корректно настроить Kerberos на стороне клиента, на сервере и в конфигурационных файлах самого ClickHouse. Ниже описана лишь конфигурация ClickHouse.
|
||
|
||
|
||
## Настройка Kerberos в ClickHouse {#enabling-kerberos-in-clickhouse}
|
||
|
||
Для того, чтобы включить Kerberos-аутентификацию в ClickHouse, необходимо добавить одну-единственную секцию `kerberos` в `config.xml`. Заметим, что это не единственная необходимая для работы Kerberos настройка.
|
||
|
||
Примеры, как должен выглядеть файл `config.xml`:
|
||
|
||
```xml
|
||
<yandex>
|
||
<!- ... -->
|
||
<kerberos />
|
||
</yandex>
|
||
```
|
||
|
||
...или:
|
||
|
||
```xml
|
||
<yandex>
|
||
<!- ... -->
|
||
<kerberos>
|
||
<principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
|
||
</kerberos>
|
||
</yandex>
|
||
```
|
||
|
||
...или:
|
||
|
||
```xml
|
||
<yandex>
|
||
<!- ... -->
|
||
<kerberos>
|
||
<realm>EXAMPLE.COM</realm>
|
||
</kerberos>
|
||
</yandex>
|
||
```
|
||
|
||
**Важно**: в конфигурационном файле может быть не более одной секции `kerberos`. В противном случае, аутентификация с помощью Kerberos будет недоступна для всех пользователей.
|
||
|
||
#### Параметры:
|
||
|
||
- `principal` — задаёт имя принципала (canonical service principal name, SPN), используемое при авторизации ClickHouse на Kerberos-сервере.
|
||
- Это опциональный параметр, при его отсутствии будет использовано стандартное имя.
|
||
|
||
- `realm` &mdash обеспечивает фильтрацию по реалм (realm). Пользователям, чей реалм не совпадает с указанным, будет отказано в аутентификации.
|
||
- Это опциональный параметр, при его отсутствии фильтр по реалм применяться не будет.
|
||
|
||
*Важно*: в конфигурационном файле не могут быть указаны одновременно оба параметра. В противном случае, аутентификация с помощью Kerberos будет недоступна для всех пользователей.
|
||
|
||
## Аутентификация пользователей с помощью Kerberos {#kerberos-as-an-external-authenticator-for-existing-users}
|
||
|
||
Уже существующие пользователи могут воспользоваться аутентификацией с помощью Kerberos. Однако, Kerberos-аутентификация возможна только при использовании HTTP-интерфейса.
|
||
|
||
Имя принципала (principal name) обычно имеет вид:
|
||
|
||
- *primary/instance@REALM*
|
||
|
||
Для успешной аутентификации необходимо, чтобы *primary* совпадало с именем пользователя ClickHouse, настроенного для использования Kerberos.
|
||
|
||
### Настройка Kerberos в `users.xml` {#enabling-kerberos-in-users-xml}
|
||
|
||
Для того, чтобы пользователь имел возможность аутентификации с помощью Kerberos, достаточно включить секцию `kerberos` в описание пользователя в `users.xml` (например, вместо секции `password` или аналогичной ей).
|
||
|
||
**Важно**: если пользователь настроен для Kerberos-аутентификации, другие виды уатентификации будут для него недоступны. Если наряду с `kerberos` в определении пользователя будет указан какой-либо другой способ аутентификации, ClickHouse завершит работу.
|
||
|
||
Пример, как выглядит конфигурация Kerberos в `users.xml`:
|
||
|
||
```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 {#enabling-kerberos-using-sql}
|
||
|
||
Пользователей, использующих Kerberos-аутентификацию, можно создавать не только в конфигурационном файле `users.xml`.
|
||
Если SQL-ориентированное управление доступом включено в ClickHouse, можно также создать пользователя, работающего через Kerberos, с помощью SQL.
|
||
|
||
```sql
|
||
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'
|
||
```
|
||
|
||
...или, без фильтрации по реалм:
|
||
|
||
```sql
|
||
CREATE USER my_user IDENTIFIED WITH kerberos
|
||
```
|