Обзор Kerberos

Kerberos может быть настроен в кластере с использованием следующих типов KDC:

  • MIT KDC, который состоит из базы данных принципалов и хранилища ключей Kerberos.

  • Active Directory (AD), состоящий из базы данных принципалов и хранилища ключей Windows Server.

  • FreeIPA — бесплатная система управления идентификацией пользователей для Linux/UNIX с открытым исходным кодом.

Процесс идентификации и аутентификации по любой из схем аналогичен. Единственное различие заключается в типе используемого 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 выполняется в следующем порядке:

    1. Добавьте свойства, показанные в примере ниже, в файл 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>(&amp;(|(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>
    2. В зависимости от конфигурации, вы можете обновить сопоставления пользователей и групп с помощью следующих команд HDFS и YARN:

      $ hdfs dfsadmin -refreshUserToGroupsMappings
      $ yarn rmadmin -refreshUserToGroupsMappings
    3. Проверьте сопоставление групп LDAP, выполнив команду hdfs groups. Команда отображает группы из LDAP для текущего пользователя. При настроенном отображении групп LDAP разрешения HDFS могут использовать группы, определенные LDAP, для контроля доступа.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней