Настройка с помощью ADCM
Обзор
Для керберизации кластера с помощью MIT KDC выполните описанные ниже шаги:
-
В веб-интерфейсе ADCM перейдите на страницу Clusters. Выберите установленный и подготовленный кластер ADH и запустите действие Manage Kerberos.
Manage Kerberos -
В появившемся окне выберите опцию Existing MIT KDC.
Выбор соответствующей опции -
Заполните параметры MIT Kerberos (настроенного ранее).
Параметры MIT Kerberos -
Нажмите Run и дождитесь окончания действия. Затем приступайте к настройке Kerberos в кластере.
Запуск действия
Параметры MIT Kerberos
Параметр | Описание |
---|---|
Authentication on WEB UIs |
Включение Kerberos-аутентификации для Web UI |
KDC hosts |
Один или более MIT KDC-хостов |
Realm |
Kerberos realm — сеть, содержащая KDC-хосты и множество клиентов |
Domains |
Домены, в которых находятся хосты |
Kadmin server |
Адрес хоста, на котором запущен |
Kadmin principal |
Имя принципала для подключения через |
Kadmin password |
Пароль принципала для подключения через |
Keytabs directory |
Директория keytab-файла, содержащего записи одного или нескольких принципалов и их ключи |
Additional realms |
Дополнительные сети Kerberos realm |
Trusted Active Directory server |
Сервер с Active Directory для односторенней доверенности от MIT Kerberos KDC внутри realm |
Trusted Active Directory realm |
Realm с Active Directory для односторенней доверенности от MIT Kerberos KDC внутри realm |
Проверка успешной керберизации кластера с помощью MIT Kerberos
После керберизации кластера любое действие пользователя должно выполняться после успешной аутентификации. Ниже вы можете найти примеры запросов HDFS до и после керберизации кластера с помощью MIT Kerberos.
Проверка HDFS перед керберизацией кластера
Пример HDFS-команды:
$ sudo -u hdfs hdfs dfs -touch /tmp/arenadata_test.txt
$ sudo -u hdfs hdfs dfs -ls /tmp
Вывод имеет следующий вид:
Found 1 items -rw-r--r-- 3 hdfs hadoop 0 2022-02-05 11:17 /tmp/arenadata_test.txt
Запрос curl на создание сущности в HDFS:
$ curl -I -H "Content-Type:application/octet-stream" -X PUT 'http://httpfs_hostname:14000/webhdfs/v1/tmp/arenadata_httpfs_test.txt?op=CREATE&data=true&user.name=hdfs'
Ответ имеет следующий вид:
HTTP/1.1 201 Created Date: Sat, 05 Feb 2022 11:23:31 GMT Cache-Control: no-cache Expires: Sat, 05 Feb 2022 11:23:31 GMT Date: Sat, 05 Feb 2022 11:23:31 GMT Pragma: no-cache Set-Cookie: hadoop.auth="u=hdfs&p=hdfs&t=simple-dt&e=1628198611064&s=gS6tylp5MZw+aiHs1EzuNfd1qqbJpFAGeGLxTtXxZfg="; Path=/; HttpOnly Content-Type: application/json;charset=utf-8 Content-Length: 0
Запрос curl на получение данных о файле в HDFS:
$ curl -H "Content-Type:application/json" -X GET 'http://httpfs_hostname:14000/webhdfs/v1/tmp?op=LISTSTATUS&user.name=hdfs'
Ответ имеет следующий вид:
{"FileStatuses":{"FileStatus":[{"pathSuffix":"arenadata_httpfs_test.txt","type":"FILE","length":0,"owner":"hdfs","group":"hadoop","permission":"755","accessTime":1628162611089,"modificationTime":1628162611113,"blockSize":134217728,"replication":3}]}}
Проверка HDFS после керберизации кластера
Пример HDFS-команды:
$ sudo -u hdfs hdfs dfs -ls /tmp
Результат (ошибка доступа):
2022-02-05 11:34:14,753 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS] 2022-02-05 11:34:14,765 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS] 2022-02-05 11:34:14,767 INFO retry.RetryInvocationHandler: java.io.IOException: DestHost:destPort namenode_host:8020 , LocalHost:localPort namenode_host/namenode_ip:0. Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS], while invoking ClientNamenodeProtocolTranslatorPB.getFileInfo over namenode_host/namenode_ip:8020 after 1 failover attempts. Trying to failover after sleeping for 1087ms.
Создание тикета:
$ sudo -u hdfs kinit -k -t /etc/security/keytabs/hdfs.service.keytab hdfs/node_hostname@REALM
Результат (успешный):
Found 1 items -rw-r--r-- 3 hdfs hadoop 0 2022-02-05 11:17 /tmp/arenadata_test.txt
HDFS-запрос:
$ sudo -u hdfs curl -H "Content-Type:application/json" -X GET 'http://httpfs_hostname:14000/webhdfs/v1/tmp?op=LISTSTATUS&user.name=hdfs'
Результат (ошибка доступа):
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Error 401 Authentication required</title> </head> <body><h2>HTTP ERROR 401</h2> <p>Problem accessing /webhdfs/v1/tmp. Reason: <pre> Authentication required</pre></p> </body> </html>
Создание тикета:
$ sudo -u hdfs kinit -k -t /etc/security/keytabs/HTTP.service.keytab HTTP/node_hostname@REALM
HDFS-запрос:
$ sudo -u hdfs curl -sfSIL -I -H "Content-Type:application/octet-stream" -X PUT --negotiate -u : 'http://httpfs_hostname:14000/webhdfs/v1/tmp/arenadata_httpfs_test.txt?op=CREATE&data=true&user.name=hdfs'
Результат (успешный):
HTTP/1.1 201 Created Date: Sat, 05 Feb 2022 11:23:31 GMT Cache-Control: no-cache Expires: Sat, 05 Feb 2022 11:23:31 GMT Date: Sat, 05 Feb 2022 11:23:31 GMT Pragma: no-cache Set-Cookie: hadoop.auth="u=hdfs&p=hdfs&t=simple-dt&e=1628198611064&s=gS6tylp5MZw+aiHs1EzuNfd1qqbJpFAGeGLxTtXxZfg="; Path=/; HttpOnly Content-Type: application/json;charset=utf-8 Content-Length: 0