Обзор Kerberos
Kerberos может быть настроен в кластере с использованием следующих типов KDC:
-
MIT KDC, который состоит из базы данных принципалов и хранилища ключей Kerberos.
-
Active Directory (AD), состоящий из базы данных принципалов и хранилища ключей Windows Server.
-
FreeIPA — бесплатная система управления идентификацией пользователей для Linux/UNIX с открытым исходным кодом.
-
Samba — ПО, которое можно использовать как контроллер домена Active Directory.
Процесс идентификации и аутентификации по любой из схем аналогичен. Единственное различие заключается в типе используемого KDC.
Общие требования
В данном разделе описаны требования, необходимые для внедрения протокола Kerberos в кластер ADH.
Чтобы внедрить Kerberos в существующий кластер ADH, необходимо выполнить следующие условия:
-
На всех хостах должны быть отключены IPTables и SELinux.
-
Кластер ADH установлен и настроен. Включить Kerberos можно только тогда, когда кластер готов к работе.
-
DNS-сервис настроен и доступен, включая конфигурацию обратной DNS-зоны.
-
Существует учетная запись администратора Active Directory или MIT Kerberos, которая имеет привилегии для создания, удаления и управления учетными записями пользователей.
-
Хранилище ключей и пользователей Active Directory или MIT Kerberos настроено и готово.
Настройка сопоставления групп Hadoop для LDAP/AD
В данном разделе описаны требования, необходимые для настройки Active Directory для Kerberos.
Чтобы обеспечить принудительную авторизацию на уровне групп LDAP/AD в Hadoop, необходимо настроить сопоставление групп Hadoop для LDAP/AD.
РЕКОМЕНДАЦИЯ
Настройки LDAP могут отличаться в зависимости от используемой реализации LDAP.
|
Существует два способа настройки сопоставления групп Hadoop.
-
Настройка сопоставления групп Hadoop для LDAP/AD с помощью SSSD (рекомендуемый способ).
Для сопоставления групп мы рекомендуем использовать SSSD или одну из следующих служб для соединения Linux и LDAP:
-
Centrify;
-
NSLCD;
-
Winbind;
-
SAMBA.
Большинство из перечисленных служб позволяют выполнять поиск пользователей, составлять список групп и выполнять другие действия на хосте. Однако ни одно из этих действий не требуется для отображения групп LDAP в Hadoop. Поэтому при оценке этих служб необходимо понимать разницу между модулем NSS (выполняет авторизацию пользователей/групп) и модулем PAM (выполняет аутентификацию пользователей). NSS необходим для поиска или проверки пользователя в LDAP и перечисления групп. PAM также может представлять угрозу безопасности.
-
-
Настройка сопоставления групп через core-site.xml.
Настройка использования отображения групп на основе LDAP в файле core-site.xml выполняется в следующем порядке:
-
Добавьте свойства, показанные в примере ниже, в файл core-site.xml. Необходимо указать значение для связанного пользователя, его пароль и другие свойства, специфичные для экземпляра LDAP. Убедитесь, что фильтры классов объектов, пользователей и групп соответствуют значениям, указанным в экземпляре LDAP.
Настройка параметров аутентификации через core-site.xml<property> <name>hadoop.security.group.mapping</name> <value>org.apache.hadoop.security.LdapGroupsMapping</value> </property> <property> <name>hadoop.security.group.mapping.ldap.bind.user</name> <value>cn=Manager,dc=hadoop,dc=apache,dc=org</value> </property> <!– <property> <name>hadoop.security.group.mapping.ldap.bind.password.file</name> <value>/etc/hadoop/conf/ldap-conn-pass.txt</value> </property> –> <property> <name>hadoop.security.group.mapping.ldap.bind.password</name> <value>hadoop</value> </property> <property> <name>hadoop.security.group.mapping.ldap.url</name> <value>ldap://localhost:389/dc=hadoop,dc=apache,dc=org</value> </property> <property> <name>hadoop.security.group.mapping.ldap.url</name> <value>ldap://localhost:389/dc=hadoop,dc=apache,dc=org</value> </property> <property> <name>hadoop.security.group.mapping.ldap.base</name> <value></value> </property> <property> <name>hadoop.security.group.mapping.ldap.search.filter.user</name> <value>(&(|(objectclass=person)(objectclass=applicationProcess))(cn={0}))</value> </property> <property> <name>hadoop.security.group.mapping.ldap.search.filter.group</name> <value>(objectclass=groupOfNames)</value> </property> <property> <name>hadoop.security.group.mapping.ldap.search.attr.member</name> <value>member</value> </property> <property> <name>hadoop.security.group.mapping.ldap.search.attr.group.name</name> <value>cn</value> </property>
-
В зависимости от конфигурации, вы можете обновить сопоставления пользователей и групп с помощью следующих команд HDFS и YARN:
$ hdfs dfsadmin -refreshUserToGroupsMappings $ yarn rmadmin -refreshUserToGroupsMappings
-
Проверьте сопоставление групп LDAP, выполнив команду
hdfs groups
. Команда отображает группы из LDAP для текущего пользователя. При настроенном отображении групп LDAP разрешения HDFS могут использовать группы, определенные LDAP, для контроля доступа.
-