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

Kerberos

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

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

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

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

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

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

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

Параметры

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

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

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

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

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

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

С указанием принципала:

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

С фильтрацией по области:

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

Вы можете определить только одну секцию kerberos. Присутствие нескольких секций kerberos заставит ClickHouse отключить аутентификацию Kerberos.

примечание

Секции principal и realm не могут быть указаны одновременно. Присутствие обеих секций principal и realm заставит ClickHouse отключить аутентификацию Kerberos.

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

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

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

  • primary/instance@REALM

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

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

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

Параметры:

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

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

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

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

Напоминание

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

Включение Kerberos с помощью SQL

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

CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'

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

CREATE USER my_user IDENTIFIED WITH kerberos