Перейти к основному содержанию
Перейти к основному содержанию

Kerberos

Not supported in ClickHouse Cloud
Примечание

This page is not applicable to ClickHouse Cloud. The feature documented here is not available in ClickHouse Cloud services. See the ClickHouse Cloud Compatibility guide for more information.

Существующие и корректно настроенные пользователи ClickHouse могут аутентифицироваться через протокол Kerberos.

В настоящее время Kerberos может использоваться только как внешний механизм аутентификации для существующих пользователей, которые определены в users.xml или в локальных путях управления доступом. Эти пользователи могут использовать только HTTP-запросы и должны иметь возможность аутентифицироваться с использованием механизма GSS-SPNEGO.

Для этого подхода Kerberos должен быть настроен в системе и включен в конфигурации ClickHouse.

Включение Kerberos в ClickHouse

Чтобы включить Kerberos, необходимо добавить секцию kerberos в config.xml. Эта секция может содержать дополнительные параметры.

Параметры

  • principal - каноническое имя сервисного principal, которое будет использоваться при приёме контекстов безопасности.

    • Этот параметр является необязательным, если он опущен, будет использован principal по умолчанию.
  • realm - realm, который будет использоваться для ограничения аутентификации только запросами, у которых realm инициатора совпадает с ним.

    • Этот параметр является необязательным, если он опущен, дополнительная фильтрация по realm применяться не будет.
  • keytab - путь к сервисному keytab-файлу.

    • Этот параметр является необязательным, если он опущен, путь к сервисному keytab-файлу должен быть задан в переменной окружения KRB5_KTNAME.

Пример (добавляется в config.xml):

<clickhouse>
    <!- ... -->
    <kerberos />
</clickhouse>

С указанием субъекта (principal):

<clickhouse>
    <!- ... -->
    <kerberos>
        <principal>HTTP/clickhouse.example.com@EXAMPLE.COM</principal>
    </kerberos>
</clickhouse>

С фильтром по realm:

<clickhouse>
    <!- ... -->
    <kerberos>
        <realm>EXAMPLE.COM</realm>
    </kerberos>
</clickhouse>
Примечание

Можно задать только один раздел kerberos. Наличие нескольких разделов kerberos приведёт к отключению аутентификации Kerberos в ClickHouse.

Примечание

Разделы principal и realm не могут указываться одновременно. Наличие одновременно и principal, и realm приведёт к отключению аутентификации Kerberos в ClickHouse.

Kerberos в качестве внешнего аутентификатора для существующих пользователей

Kerberos может использоваться как метод проверки подлинности локально определённых пользователей (пользователей, определённых в users.xml или в локальных путях управления доступом). В настоящий момент только запросы через HTTP-интерфейс могут проходить аутентификацию по Kerberos (через механизм GSS-SPNEGO).

Формат имени принципала Kerberos обычно имеет следующий вид:

  • primary/instance@REALM

Часть /instance может встречаться ноль или более раз. Ожидается, что primary-часть канонического имени принципала инициатора будет совпадать с именем пользователя для Kerberos-аутентификации, чтобы аутентификация прошла успешно.

Включение Kerberos в users.xml

Чтобы включить аутентификацию Kerberos для пользователя, укажите секцию kerberos вместо password или аналогичных секций в определении пользователя.

Параметры:

  • realm — область (realm), которая будет использоваться для ограничения аутентификации только запросами, у которых область инициатора совпадает с ней.
    • Этот параметр является необязательным: если он опущен, дополнительная фильтрация по области применяться не будет.

Пример (помещается в users.xml):

<clickhouse>
    <!- ... -->
    <users>
        <!- ... -->
        <my_user>
            <!- ... -->
            <kerberos>
                <realm>EXAMPLE.COM</realm>
            </kerberos>
        </my_user>
    </users>
</clickhouse>
Примечание

Обратите внимание, что аутентификация Kerberos не может использоваться одновременно с другими механизмами аутентификации. Наличие любых других разделов конфигурации, таких как password вместе с kerberos, приведёт к принудительному завершению работы ClickHouse.

Reminder

Обратите внимание, что теперь, когда пользователь my_user использует kerberos, Kerberos должен быть включён в основном файле config.xml, как описано ранее.

Включение Kerberos через SQL

Когда в ClickHouse включена SQL-управляемая система контроля доступа и управления учётными записями, пользователей, аутентифицируемых через Kerberos, также можно создавать с помощью SQL-выражений.

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ my_user ИДЕНТИФИЦИРОВАН С kerberos РЕАЛМ 'EXAMPLE.COM'

...или без фильтрации по реалму:

CREATE USER my_user AUTHENTIFICIROVAN S POMOSHCH'YU kerberos