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

Kerberos

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

Эта страница не относится к ClickHouse Cloud. Описанная здесь функция недоступна в услугах ClickHouse Cloud. См. руководство ClickHouse Совместимость с ClickHouse Cloud для получения дополнительной информации.

Существующие и корректно настроенные пользователи 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