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

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

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

Параметры

  • principal — каноническое имя субъекта сервиса, которое будет получено и использовано при приеме контекстов безопасности.
    • Этот параметр необязателен; если он не указан, будет использоваться субъект по умолчанию.
  • realm — realm, который будет использоваться для ограничения аутентификации только теми запросами, realm инициатора которых с ним совпадает.
    • Этот параметр необязателен; если он не указан, дополнительная фильтрация по realm применяться не будет.
  • keytab — путь к файлу keytab сервиса.
    • Этот параметр необязателен; если он не указан, путь к файлу keytab сервиса должен быть задан в переменной окружения KRB5_KTNAME.
Пример (добавляется в config.xml):
<clickhouse>
    <!- ... -->
    <kerberos />
</clickhouse>
С указанием субъекта:
<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, ClickHouse отключит аутентификацию Kerberos.

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

Kerberos можно использовать как способ проверки подлинности локально определённых пользователей (пользователей, определённых в users.xml или в локальных путях управления доступом). В настоящее время только запросы через HTTP-интерфейс могут быть керберизованы (с использованием механизма GSS-SPNEGO). Формат имени субъекта Kerberos обычно выглядит так:
  • primary/instance@REALM
Часть /instance может встречаться ноль или более раз. Чтобы аутентификация прошла успешно, ожидается, что часть primary в каноническом имени субъекта инициатора будет совпадать с именем керберизованного пользователя.

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

Чтобы включить аутентификацию Kerberos для пользователя, укажите в определении пользователя секцию kerberos вместо password или аналогичных секций. Параметры:
  • realm — realm, который используется для ограничения аутентификации только теми запросами, у которых realm инициатора совпадает с ним.
    • Этот параметр необязателен; если его не указать, дополнительная фильтрация по 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

Когда в ClickHouse включена система управления доступом и учётными записями через SQL, пользователей, идентифицируемых с помощью Kerberos, также можно создавать с помощью команд SQL.
CREATE USER my_user IDENTIFIED WITH kerberos REALM 'EXAMPLE.COM'
…или без фильтрации по realm:
CREATE USER my_user IDENTIFIED WITH kerberos
Последнее изменение 10 июня 2026 г.