ClickHouse/docs/ru/operations/external-authenticators/kerberos.md
2021-02-24 15:10:37 +05:00

6.8 KiB
Raw Blame History

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