Использование сервера MIT Kerberos
Настройка сервера Kerberos
ПРИМЕЧАНИЕ
|
В приведенном в данной статье примере Kerberos KDC устанавливается на хост dev-adcm-test.ru-central1.internal с операционной системой CentOS. На этом же хосте установлен ADCM.
-
Установите Kerberos KDC на хост:
$ sudo -i
yum install krb5-libs krb5-server krb5-workstation
-
Внесите изменения в файлы конфигурации.
-
В файле /var/kerberos/krb5kdc/kdc.conf замените realm на
RU-CENTRAL1.INTERNAL
:[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] RU-CENTRAL1.INTERNAL = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
-
В файле /etc/krb5.conf укажите значение параметра
default_realm
, а также заполните разделы[realms]
и[domain_realm]
:# Configuration snippets may be placed in this directory as well includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt default_realm = RU-CENTRAL1.INTERNAL default_ccache_name = KEYRING:persistent:%{uid} [realms] RU-CENTRAL1.INTERNAL = { kdc = dev-adcm-test.ru-central1.internal admin_server = dev-adcm-test.ru-central1.internal } [domain_realm] .ru-central1.internal = RU-CENTRAL1.INTERNAL ru-central1.internal = RU-CENTRAL1.INTERNAL
-
Измените содержимое файла /var/kerberos/krb5kdc/kadm5.acl следующим образом, чтобы любой принципал
/admin
в областиRU-CENTRAL1.INTERNAL
имел все административные привилегии, кроме извлечения ключей:*/admin@RU-CENTRAL1.INTERNAL *
-
-
Создайте базу данных принципалов Kerberos с помощью утилиты
kdb5_util
:kdb5_util create -s -P P@ssw0rd
-
Запустите сервисы Kerberos и KDC, выполнив поочередно следующие команды:
systemctl start kadmin systemctl start krb5kdc
Проверить статус запущенных сервисов можно с помощью команд:
systemctl status kadmin systemctl status krb5kdc
-
Создайте принципалы пользователей, используя консоль администратора Kerberos —
kadmin.local
.Имя принципала пользователя в базе данных Kerberos обычно имеет вид
primary/instance@REALM
, где:-
primary
— базовое имя пользователя (для успешной аутентификации в ADQM необходимо, чтобы это имя совпадало с именем пользователя ADQM, настроенного для использования Kerberos); -
instance
— необязательный компонент, квалифицирующийprimary
. Еслиprimary
— имя пользователя, тоinstance
обычно не указывается или может использоваться, чтобы определить дополнительный принципал для пользователя (например, принципалыjohn@RU-CENTRAL1.INTERNAL
иjohn/admin@RU-CENTRAL1.INTERNAL
— отдельные принципалы с разными паролями и разрешениями).
kadmin.local -q "add_principal -pw P@ssw0rd admin/admin"
kadmin.local -q "add_principal -pw P@ssw0rd adqm_kerb"
Полное описание функций интерфейса командной строки
kadmin.local
и применяемых опций приведены в статье kadmin документации MIT Kerberos. -
Включение MIT Kerberos KDC на кластере ADQM
-
В интерфейсе ADCM на странице Clusters выберите установленный и подготовленный кластер ADQM.
-
Инициируйте включение Kerberos для кластера — нажмите на иконку Actions и выберите действие Manage Kerberos.
Включение Kerberos в кластере ADQM -
В открывшемся окне включите опцию Existing MIT KDC, заполните конфигурационные параметры в соответствии с ранее установленными настройками сервера Kerberos и нажмите Run.
Параметры MIT KDC -
Дождитесь завершения активации Kerberos. Процесс и результат выполнения задачи Manage Kerberos отображается на странице Jobs.
Процесс запуска Kerberos
После того, как Kerberos успешно установлен на кластере ADQM, соответствующие настройки появятся на странице конфигурации кластера (секция Kerberos) и сервиса ADQMDB (секция Kerberos configuration).
Проверка аутентификации пользователя через Kerberos
После успешной керберизации выполнение ADQM-команд на узлах кластера возможно только после получения соответствующего тикета Kerberos. Ниже приведен пример доступа к керберизованному кластеру:
-
Создайте в ADQM пользователя, для которого существует принципал в базе данных Kerberos. Для этого используйте выражение
IDENTIFIED WITH kerberos
в запросеCREATE USER
:CREATE USER adqm_kerb IDENTIFIED WITH kerberos;
-
Создайте для принципала пользователя тикет Kerberos:
$ kinit -V adqm_kerb@RU-CENTRAL1.INTERNAL
Введите пароль:
Password for adqm_kerb@RU-CENTRAL1.INTERNAL:
Опции команды
kinit
описаны в статье kinit документации MIT Kerberos. -
Проверьте тикет:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: adqm_kerb@RU-CENTRAL1.INTERNAL Valid starting Expires Service principal 05/04/2023 07:13:58 05/05/2023 07:13:58 krbtgt/RU-CENTRAL1.INTERNAL@RU-CENTRAL1.INTERNAL
-
Для проверки аутентификации через Kerberos отправьте в ADQM тестовую команду, используя утилиту
curl
с поддержкой механизма SPNEGO:$ echo "select currentUser()" | curl --negotiate -u : http://<host_name>:8123/ --data-binary @-
Вывод на экран при успешной аутентификации:
adqm_kerb