Kerberos аутентификация#

CedrusData позволяет аутентифицировать пользователей c помощью Kerberos.

Важно

Для использования любого механизма аутентификации необходимо предварительно включить Шифрование клиентского трафика с помощью TLS и Аутентификация узлов в кластере (shared secret).

Конфигурация окружения#

KDC (Key Distribution Center)#

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

Конфигурация MIT Kerberos#

Kerberos необходимо настроить на координаторе. Как минимум, должна присутствовать запись kdc в разделе [realms] файла /etc/krb5.conf. Вы также можете включить запись admin_server и убедиться, что координатор может подключиться к серверу администрирования Kerberos через порт 749.

[realms]
  TRINO.EXAMPLE.COM = {
    kdc = kdc.example.com
    admin_server = kdc.example.com
  }

[domain_realm]
  .trino.example.com = TRINO.EXAMPLE.COM
  trino.example.com = TRINO.EXAMPLE.COM

Полная документация для krb5.conf размещена в проекте MIT Kerberos Project. Если вы используете другую реализацию протокола Kerberos, вам необходимо адаптировать конфигурацию к вашей среде.

Kerberos principals и файлы keytab#

Координатору и пользователю CedrusData необходим Kerberos principal. Вам необходимо создать соответствующих principal в Kerberos с помощью kadmin.

Кроме того, координатору CedrusData необходим файл keytab. После создания Kerberos principal вы можете создать файл keytab с помощью kadmin

kadmin
> addprinc -randkey cedrus/coordinator.example.com@EXAMPLE.COM
> xst -k /path/to/keytab/cedrusdata.keytab cedrus/coordinator.example.com@EXAMPLE.COM

Конфигурация#

Задайте следующую конфигурацию на координаторе CedrusData в файле etc/config.properties, изменив значения некоторых параметров при необходимости:

http-server.authentication.type=KERBEROS
http-server.authentication.krb5.service-name=cedrus
http-server.authentication.krb5.principal-hostname=coordinator.example.com
http-server.authentication.krb5.keytab=/path/to/keytab/cedrusdata.keytab
http.authentication.krb5.config=/etc/krb5.conf
Параметры конфигурации:#

Название

Описание

http-server.authentication.type

Механизм аутентификации. Должно быть установлено значение KERBEROS.

http-server.authentication.krb5.service-name

Должен быть равен primary компоненту principal координатора. Например, если principal координатора cedrus/coordinator.example.com@EXAMPLE.COM, то значение параметра должно быть cedrus.

http-server.authentication.krb5.principal-hostname

Должен быть равен instance компоненту principal координатора. Например, если principal координатора cedrus/coordinator.example.com@EXAMPLE.COM, то значение параметра должно быть coordinator.example.com. Если параметр не указан, будет использовано каноническое сетевое имя координатора. Параметр будет проигнорирован, если http-server.authentication.krb5.name-type имеет значение USER_NAME. Значение по умолчанию: null (использовать каноническое сетевое имя координатора).

http-server.authentication.krb5.name-type

Задает принцип формирования principal координатора для целей аутентификации. Допустимые значения: HOSTBASED_SERVICE, USER_NAME. Если значение равно HOSTBASED_SERVICE, то principal координатора для целей аутентификации будет сформирован как ${SERVICE}@${HOST}, где ${SERVICE} равен значению http-server.authentication.krb5.service-name, а ${HOST} равен http-server.authentication.krb5.principal-hostname. Если значение равно USER_NAME, то principal координатора для целей аутентификации будет сформирован как ${SERVICE}, где ${SERVICE} равен значению http-server.authentication.krb5.service-name. Значение по умолчанию: HOSTBASED_SERVICE.

http-server.authentication.krb5.keytab

Путь к keytab с ключом координатора в локальной файловой системе координатора.

http.authentication.krb5.config

Путь к файлу конфигурации Kerberos в локальной файловой системе координатора. Обычно данный файл расположен по пути /etc/krb5.conf.

http-server.authentication.krb5.user-mapping.pattern

Регулярное выражение для сопоставления имен пользователей {doc}</security/user-mapping>.

http-server.authentication.krb5.user-mapping.file

Файл с правилами сопоставления имен пользователей {doc}</security/user-mapping>.

Устранение неисправностей#

Проверка Kerberos#

Убедитесь, что вы можете подключиться к KDC c координатора CedrusData с помощью команды telnet:

$ telnet kdc.example.com 88

Убедитесь, что keytab координатора валиден с помощью команд kinit и klist. Например:

$ kinit -kt coordinator.keytab cedrus/coordinator.example.com@EXAMPLE.COM
$ klist

Отладка Kerberos#

Вы можете включить печать подробной отладочной информации Kerberos в консоль и лог координатора CedrusData, добавив следующие строки в файл etc/jvm.config:

-Dsun.security.krb5.debug=true
-Dlog.enable-console=true

Воспользуйтесь документацией Java для интерпретации сообщений об ошибках в логах.

Дополнительные ресурсы#