Расширенные параметры безопасности для Ambari

Настройка Ambari для аутентификации LDAP или Active Directory

По умолчанию Ambari использует внутреннюю базу данных в качестве хранилища пользователя для аутентификации и авторизации. При необходимости настройки внешней аутентификации LDAP или Active Directory, следует ознакомиться с разделом “Настройка аутентификации пользователя LDAP” и запустить команду настройки (см. раздел “Настройка Ambari для использования LDAP-сервера”).

Также необходимо синхронизировать пользователей и группы LDAP с базой данных Ambari, чтобы иметь возможность управлять их авторизацией и правами (см. раздел “Синхронизация пользователей и групп LDAP”).

При синхронизации пользователей и групп LDAP Ambari использует элементы поиска LDAP для синхронизации большого количества объектов LDAP. Большинство современных серверов LDAP поддерживают этот элемент управления. Но для неподдерживающих серверов, например, Oracle Directory Server Enterprise Edition 11g, Ambari вводит параметр конфигурации для отключения разбивки на страницы. Чтобы отключить элементы управления разбивкой на страницы, необходимо установить значение false свойству authentication.ldap.pagination.enabled в файле /etc/ambari-server/conf/ambari-properties. Это ограничит максимальное количество объектов, которые могут быть импортированы в любой момент времени до максимального предела результатов на сервере LDAP. Чтобы избежать этого, необходимо импортировать пользователей и группы, используя параметры -sers и -groups, как описано в разделе “Определенный набор пользователей и групп”.

Настройка аутентификации пользователя LDAP

В таблице описаны свойства и значения, которые необходимо знать для настройки аутентификации LDAP.

Important

Если оставить установленное по умолчанию значение false для bindAnonymously, необходимо убедиться, что у вас есть имя и пароль LDAP-менеджера. Если будет использоваться SSL, необходимо убедиться, что сертификат и ключи к нему установлены

Табл. 29. Свойства и значения для настройки аутентификации LDAP
Свойство Значение Описание
authentication.ldap. primaryUrl server:port Имя хоста и порт для LDAP или сервера Active Directory (AD). Пример: my.ldap.server: 389
authentication.ldap. secondaryUrl server:port Имя хоста и порт для вторичного сервера LDAP или AD. Пример: my.secondary.ldap.server: 389 Необязательный параметр
authentication.ldap. useSSL true or false Если значение true – использовать SSL при подключении к LDAP или серверу AD
authentication.ldap. usernameAttribute [LDAP attribute] Атрибут для имени пользователя. Пример: uid
authentication.ldap. baseDn [Distinguished Name] root Distinguished Name поиска в каталоге для пользователей. Пример: ou=people,dc=hadoop, dc=apache,dc=org
authentication.ldap. referral [Referral method] Определяет необходимость следовать рекомендациям LDAP
authentication.ldap. bindAnonymously true or false Если значение true – привязать сервер LDAP или AD анонимно
authentication.ldap. managerDn [Full Distinguished Name] Если для параметра «Bind anonymous» установлено значение «false», «Distinguished Name» («DN») для менеджера. Пример: uid=hdfs,ou=people,dc=hadoop, dc=apache,dc=org
authentication.ldap. managerPassword [password] Если для параметра «Bind anonymous» установлено значение «false», пароль для менеджера
authentication.ldap. userObjectClass [LDAP Object Class] Класс объекта для пользователей. Пример: organizationalPerson
authentication.ldap. groupObjectClass [LDAP Object Class] Класс объекта для групп. Пример: groupOfUniqueNames
authentication.ldap. groupMembershipAttr [LDAP attribute] Атрибут принадлежности к группе. Пример: uniqueMember
authentication.ldap. groupNamingAttr [LDAP attribute] Атрибут имени группы

Настройка Ambari для использования LDAP-сервера

Important

Если используется LDAPS, и сертификат сервера LDAPS подписывается доверенным центром сертификации, то нет необходимости импортировать сертификат в Ambari, и поэтому данный раздел следует игнорировать

Если сервер LDAPS – самоподписанный сертификат или подписан неопознанным центром сертификации, таким как внутренний центр сертификации, необходимо импортировать сертификат и создать файл хранилища ключей. В следующем примере создается файл хранилища ключей в файле /keys/ldaps-keystore.jks, но его можно создать в любом месте файловой системы. Для этого следует запустить команду настройки LDAP на сервере Ambari и ответить на вопросы:

  1. Место, где каталог ключей не существует, но в котором должен быть создан:
mkdir /etc/ambari-server/keys
  1. $JAVA_HOME/bin/keytool -import -trustcacerts -alias root -file $PATH_TO_YOUR_LDAPS_CERT -keystore /etc/ambari-server/keys/ldaps-keystore.jks
    
  2. Задать пароль, который будет использоваться при настройке ambari-server-ldap, при появлении запроса:

ambari-server setup-ldap
  1. В запросе “Primary URL*” ввести IP/URL-адрес и порт сервера (Пример: myldap.com:389). Требуются значения, отмеченные звездочкой.
  2. В запросе “Secondary URL*” ввести IP/URL-адрес вторичного сервера и порт (Пример: myldap-secondary.com:389). Необязательный параметр.
  3. В запросе “Use SSL*” ввести свое значение. При использовании LDAPS ввести значение true.
  4. В запросе “User object class*” ввести класс объектов, используемый для пользователей (Пример: user).
  5. В запросе “User name attribute*” ввести свое значение (Пример: sAMAccountName). По умолчанию устанавливается – uid.
  6. В запросе “Group object class*” ввести класс объекта, используемый для групп (Пример: group).
  7. В запросе “Group name attribute*” ввести атрибут имени группы (Пример: CN).
  8. В запросе “Group member attribute*” ввести атрибут принадлежности к группе (Пример: member).
  9. В запросе “Distinguished name attribute*” ввести атрибут, используемый для distinguished name (Пример: distinguishedName).
  10. В запросе “Base DN*” ввести свое значение (Пример: CN=Ambari,OU=Hadoop,DC=EXAMPLE,DC=COM).
  11. В запросе “Referral method*” ввести follow или ignore передачи LDAP.
  12. В запросе “Bind anonymously*” ввести свое значение.
  13. В запросе “Manager DN*” ввести свое значение в том случае, если в запросе “Bind anonymously” установлено значение false (Пример: CN=admin,OU=Hadoop,DC=EXAMPLE,DC=COM).
  14. В запросе “Enter the Manager Password*” ввести пароль DN менеджера LDAP.
  15. Если на шаге 6 установлено значение Use SSL = true, появится следующий запрос:
Do you want to provide custom TrustStore for Ambari?

Возможны следующие варианты ответов:

  • Более безопасный вариант. Если используется самоподписанный сертификат, который вы не хотите импортировать в существующее хранилище ключей JDK, следует ввести значение y.

Например, в случае, если вы хотите, чтобы данный сертификат использовался только Ambari, без других приложений, запущенных JDK на том же узле.

Если выбирается эта опция, то появятся дополнительные запросы:

  • В запросе “TrustStore type” ввести jks;
  • В запросе “Path to TrustStore file” ввести /keys/ldaps-keystore.jks (или фактический путь к файлу хранилища ключей);
  • В запросе “Password for TrustStore” ввести пароль для хранилища ключей.
  • Менее безопасный вариант. Если используется самоподписанный сертификат, который вы хотите импортировать и хранить в существующем ключевом хранилище JDK, введите значение n.
  • Преобразовать сертификат SSL в формат X.509, если это необходимо, выполнив следующую команду, где <slapd.crt> – путь к сертификату X.509:

    openssl x509 -in slapd.pem -out <slapd.crt>

  • Импортировать сертификат SSL в существующее хранилище ключей, например, хранилище сертификатов jre по умолчанию, используя следующую команду:

    /usr/jdk64/jdk1.7.0_45/bin/keytool -import -trustcacerts -file slapd.crt -keystore /usr/jdk64/jdk1.7.0_45/jre/lib/security/cacerts

Где Ambari настроен для использования JDK 1.7, поэтому сертификат должен быть импортирован в хранилище ключей JDK 7.

  1. Проверить все настройки, и если они верны, выбрать значение y.
  2. Запустить или перезапустить сервер:
ambari-server restart

Импортированным пользователям назначаются права пользователя Ambari. Они могут читать метрики, просматривать статус и конфигурацию сервисов, а так же просматривать информацию о задании. Чтобы пользователи могли запускать или останавливать сервисы, менять конфигурации и запускать smoke tests, им необходимо назначить права администратора Ambari. Для внесения данных изменений следует перейти по пунктам меню “Manage Ambari ‣ Users ‣ Edit”.

Пример конфигурации Active Directory

В Directory Server используются специальные классы объектов и атрибуты для хранения идентификаторов. В данном разделе в качестве примера отображаются конфигурации, характерные для Active Directory.

Табл. 30. Пример конфигурации AD
Запрос (значение по умолчанию) Пример значений для Active Directory
User object class* (posixAccount) user
User name attribute* (uid) cn
Group object class* (posixGroup) group
Group member attribute* (memberUid) Member
Distinguished name attribute* (dn) distinguishedName

Синхронизация пользователей и групп LDAP

Для синхронизации LDAP необходимо запустить команду и ответить на запрос:

ambari-server sync-ldap [option]

Important

Для выполнения операции необходимо запустить сервер Ambari

  • При появлении запроса необходимо предоставить учетные данные администратора Ambari;
  • При синхронизации LDAP локальные учетные записи пользователей с совпадающими именами будут переключаться на тип LDAP, что означает, что их аутентификация будет действовать против внешнего LDAP, а не в локальном хранилище пользователей Ambari;
  • LDAP синхронизирует до 1000 пользователей. Если вы планируете импортировать более 1000 пользователей, необходимо при синхронизации использовать опцию –users и указать отфильтрованный список пользователей для выполнения импорта пакетами.

Утилита предоставляет три варианта синхронизации:

  • Определенный набор пользователей и групп;
  • Синхронизация существующих пользователей и групп в Ambari с LDAP;
  • Все пользователи и группы.

По завершению синхронизации необходимо проверить файлы журналов неудачных попыток импорта на /var/log/ambari-server/ambari-server.log на хосте сервера Ambari.

Определенный набор пользователей и групп

Для синхронизации определенного набора пользователей и групп из LDAP в Ambari необходимо использовать параметр:

ambari-server sync-ldap --users users.txt --groups groups.txt

Далее следует предоставить текстовый файл пользователей и групп, разделенных запятыми. Записи в каждом из этих файлов должны основываться на значениях атрибутов в LDAP, выбранных во время установки. Для файла users.txt должен использоваться атрибут “User name attribute”, а для файла groups.txt – “Group name attribute”. Эта команда найдет, импортирует и синхронизирует соответствующие объекты LDAP с Ambari.

Членство в группе определяется с помощью атрибута “groupMembershipAttr”, имя пользователя – с помощью атрибута “usernameAttribute”, указанных во время настройки LDAP.

Существующие пользователи и группы

После синхронизации определенного набора пользователей и групп, следующий параметр используется для синхронизации только тех объектов, которые находятся в Ambari с LDAP:

ambari-server sync-ldap --existing

Несуществующие в LDAP пользователи удаляются из Ambari, а членство в группе Ambari обновляется до соответствия LDAP (членство в группе определяется с помощью атрибута “groupMembershipAttr”, указанного во время настройки LDAP).

Все пользователи и группы

В случае необходимости синхронизации всех пользователей и групп с LDAP в Ambari используется следующий параметр:

ambari-server sync-ldap --all

Это действие импортирует все объекты с соответствующими классами пользователей и групп LDAP в Ambari.

Настройка Ambari для Non-Root

В целях безопасности экосистемы ограничение доступа и сервисов, выполняемых с правами root, является жестким требованием. Для этих сред Ambari может быть настроена для работы без доступа root. Компоненты Ambari Server и Ambari Agent обеспечивают работу без прав root:

Настройка Ambari Server для Non-Root

Для настройки запуска Ambari Server от пользователя (без прав root) во время процесса настройки ambari-сервера необходимо выбрать значение y при запросе:

Customize user account for ambari-server daemon?

В процессе установки предлагается использовать для пользователя, не являющегося root, Ambari Server, например: ambari.

Пользователь без прав root, который выбран для запуска сервера Ambari, должен входить в группу Hadoop. Эта группа должна соответствовать учетным записям службы Hadoop, указанным на вкладке “Customize Services ‣ Misc tab” во время этапа настройки мастера установки. Имя группы, задающееся по умолчанию – hadoop. Если во время установки кластера название группы было изменено, необходимо убедиться, что пользователь, не являющийся пользователем root, входит в данную группу.

Если Ambari Server работает как пользователь без прав root, например, ambari, и планируется использовать Ambari Views, необходимо добавить следующие свойства в “Services ‣ HDFS ‣ Configs ‣ Advanced core-site”:

hadoop.proxyuser.ambari.groups=*
hadoop.proxyuser.ambari.hosts=*

Настройка Ambari Agent для Non-Root

Ambari Agent можно настроить для запуска от пользователя без прав root. Для этого требуется специальный доступ sudo к учетным записям сервиса Hadoop и выполнения определенных привилегированных команд. Настройка агентов Ambari для работы в качестве non-root требует ручной установки агентов на всех узлах кластера (см. руководство “Инструкция по установке кластера”). После установки каждого агента необходимо настроить агента для запуска как пользователя без права root. В данном примере используется пользователь ambari.

Необходимо изменить в файле /etc/ambari-agent/conf/ambari-agent.ini свойство run_as_user:

run_as_user=ambari

Далее для старта работы от пользователя без полномочий root необходимо перезапустить Ambari Agent.

Для запуска определенных команд, требующих дополнительные права, устанавливаемые в конфигурации Sudoer, функция non-root основывается на sudo. Конфигурация sudo разделена на части: настраиваемые пользователи, ненастраиваемые пользователи, команды и значения sudo по умолчанию.

В последующих разделах описано как следует настраивать sudo, чтобы позволить Ambari запускаться от пользователя без прав root. Каждый из разделов включает определенные записи sudo, которые необходимо поместить в /etc/sudoers и запустить команду:

visudo

Настраиваемые пользователи

Данный раздел содержит команды “su” и соответствующие учетные записи сервиса Hadoop, которые настраиваются при установке:

# Ambari Customizable Users
ambari ALL=(ALL) NOPASSWD:SETENV: /bin/su hdfs *,/bin/su ambari-qa *,/bin/su ranger *,/bin/su zookeeper *,/bin/su knox *,/bin/su ams *,/bin/su hbase *,/bin/su spark *,/bin/su hive *,/bin/su hcat *,/bin/su mapred *,/bin/su oozie *,/bin/su tez *,/bin/su atlas *,/bin/su yarn *,/bin/su kms *

Учетные записи пользователей должны соответствовать учетным записям серверов, указанным на вкладке “Customize Services ‣ Misc tab” во время этапа настройки мастера установки. Например, если YARN настроен для запуска как xyz_yarn, необходимо изменить команду su на /bin/su xyz_yarn.

Ненастраиваемые пользователи

Данный раздел содержит команды “su” для системных учетных записей, которые нельзя изменить, и которые требуются только в том случае, если используется MySQL, установленный и управляемый Ambari для Hive Metastore. Если используется существующая база данных MySQL, PostgreSQL или Oracle для Hive Metastore, включать данные команды нет необходимости.

# Ambari Non-Customizable Users
ambari ALL=(ALL) NOPASSWD:SETENV: /bin/su mysql *

Команды

Команды, которые должны входить в стандартные операции агента:

# Ambari Commands
ambari ALL=(ALL) NOPASSWD:SETENV: /usr/bin/yum,/usr/bin/zypper,/usr/bin/apt-get, /bin/mkdir, /usr/bin/test, /bin/ln, /bin/chown, /bin/chmod, /bin/chgrp, /usr/sbin/groupadd, /usr/sbin/groupmod, /usr/sbin/useradd, /usr/sbin/usermod, /bin/cp, /usr/sbin/setenforce, /usr/bin/test, /usr/bin/stat, /bin/mv, /bin/sed, /bin/rm, /bin/kill, /bin/readlink, /usr/bin/pgrep, /bin/cat, /usr/bin/unzip, /bin/tar, /usr/bin/tee, /bin/touch, /usr/bin/distro-select, /usr/bin/conf-select, /usr/phd/current/hadoop-client/sbin/hadoop-daemon.sh, /usr/lib/hadoop/bin/hadoop-daemon.sh, /usr/lib/hadoop/sbin/hadoop-daemon.sh, /sbin/chkconfig gmond off, /sbin/chkconfig gmetad off, /etc/init.d/httpd *, /sbin/service phd-gmetad start, /sbin/service phd-gmond start, /usr/sbin/gmond, /usr/sbin/update-rc.d ganglia-monitor *, /usr/sbin/update-rc.d gmetad *, /etc/init.d/apache2 *, /usr/sbin/service phd-gmond *, /usr/sbin/service phd-gmetad *, /sbin/service mysqld *, /usr/bin/python2.6 /var/lib/ambari-agent/data/tmp/validateKnoxStatus.py *, /usr/phd/current/knox-server/bin/knoxcli.sh *
# Ambari Ranger Commands
ambari ALL=(ALL) NOPASSWD:SETENV: /usr/phd/*/ranger-usersync/setup.sh, /usr/bin/ranger-usersync-stop, /usr/bin/ranger-usersync-start, /usr/phd/*/ranger-admin/setup.sh *, /usr/phd/*/ranger-knox-plugin/disable-knox-plugin.sh *, /usr/phd/*/ranger-hbase-plugin/disable-hbase-plugin.sh *, /usr/phd/*/ranger-hdfs-plugin/disable-hdfs-plugin.sh *,  /usr/phd/current/ranger-admin/ranger_credential_helper.py, /usr/phd/current/ranger-kms/ranger_credential_helper.py

Important

Не изменяйте списки команд, только имена пользователей могут быть изменены в разделе «Customizable Users»

Для повторной итерации необходимо выполнить данную конфигурацию sudo на каждом узле кластера. Чтобы убедиться, что конфигурация выполнена правильно, следует выполнить “su” для пользователя ambari и запустить sudo -l. Там можно проверить, нет ли предупреждений, и убедиться, что результат конфигурации соответствует только что примененному.

Значения Sudo по умолчанию

Некоторые версии sudo имеют конфигурацию по умолчанию, которая предотвращает вызов sudo из не интерактивной оболочки. Чтобы агент выполнял команды не интерактивно, некоторые значения по умолчанию необходимо перенастроить.

Defaults exempt_group = ambari
Defaults !env_reset,env_delete-=PATH
Defaults: ambari !requiretty

Для повторной итерации необходимо выполнить данную конфигурацию sudo на каждом узле кластера. Чтобы убедиться, что конфигурация выполнена правильно, следует выполнить “su” для пользователя ambari и запустить sudo -l. Там можно проверить, нет ли предупреждений, и убедиться, что результат конфигурации соответствует только что примененному.

Шифрование базы данных и паролей LDAP (опционально)

По умолчанию пароли доступа к базе данных Ambari и LDAP-серверу хранятся в простом текстовом файле. Для зашифровки паролей необходимо запустить специальную команду настройки.

Important

Во время шифрования паролей Ambari Server не должен быть запущен: либо внести изменения перед первым запуском сервера Ambari, либо остановить сервер для внесения изменений

  1. На Ambari Server запустить команду настройки:
ambari-server setup-security
  1. При запросе “Choose one of the following options” выбрать вариант 2:
  • [1] Включить HTTPS для сервера Ambari;
  • [2] Шифровать пароли, хранящиеся в файле ambari.properties;
  • [3] Настройка конфигурации JAAS Ambari kerberos;
  1. Дважды ввести ключ для шифрования паролей (если пароли зашифрованы, необходим доступ к ключу, чтобы запустить Ambari Server).
  2. Есть три варианта сохранения ключа:
  • Перенесите его в файл на сервере, нажав y в строке;
  • Создать переменную среду AMBARI_SECURITY_MASTER_KEY и установить на нее ключ;
  • Вручную ввести ключ в командной строке при запуске сервера.
  1. Запустить или перезапустить Ambari Server:
ambari-server restart

Сброс шифрования

Сброс шифрования возможен в следующих случаях:

  • Полное удаление шифрование;
  • Изменение текущего мастер-ключа потому, что ключ забыт, либо для смены текущего ключа в целях безопасности.

Important

Во время сброса шифрования Ambari Server не должен быть запущен

Полное удаление шифрования

Для восстановления базы данных Ambari и паролей LDAP до полностью незашифрованного состояния необходимо выполнить следующие действия:

  1. На хосте Ambari в текстовом редакторе открыть файл /etc/ambari-server/conf/ambari.properties и установить свойство:
security.passwords.encryption.enabled=false
  1. Удалить:
/var/lib/ambari-server/keys/credentials.jceks
  1. Удалить:
/var/lib/ambari-server/keys/master
  1. Сбросить пароль базы данных и, при необходимости, пароль LDAP. Запустить настройку “ambari-server” (см. раздел “Шифрование базы данных и паролей LDAP (опционально)”) и “setup-ldap ambari-server” (см. раздел “Настройка Ambari для использования LDAP-сервера”).

Изменение текущего мастер-ключа

В случае если текущий мастер-ключ известен, для его изменения необходимо повторно запустить команду настройки шифрования и следовать инструкциям:

ambari-server setup-security
  1. Из предложенных вариантов выбрать значение 2:
  • [1] Включить HTTPS для сервера Ambari;
  • [2] Шифровать пароли, хранящиеся в файле ambari.properties;
  • [3] Настройка конфигурации JAAS Ambari kerberos;
  1. При запросе ввести текущий мастер-ключ;
  2. В запросе “Do you want to reset Master Key” ввести значение yes;
  3. В командной строке ввести новый мастер-ключ и подтвердить его.

В случае если текущий мастер-ключ неизвестен:

  1. Полностью удалить шифрование (см. раздел “Полное удаление шифрования”);
  2. Произвести настройку мастер-ключа (как описано в начале текущего раздела):
ambari-server setup-security
  1. Запустить или перезапустить Ambari Server:
ambari-server restart

Настройка SSL для Ambari (опционально)

Для ограничения доступа к серверу Ambari для соединений HTTPS, необходимо предоставить сертификат. Несмотря на то, что первоначально можно использовать самоподписанный сертификат, он не подходит для данной задачи. После того, как сертификат будет установлен, необходимо запустить специальную команду настройки.

Important

Во время настройки Ambari Server не должен быть запущен: либо внести изменения перед первым запуском сервера Ambari, либо остановить сервер для внесения изменений

  1. Войти на хост Ambari Server;
  2. Найти сертификат. Если создается временный самоподписанный сертификат, использовать его в качестве примера:
openssl genrsa -out $wserver.key 2048
openssl req -new -key $wserver.key -out $wserver.csr
openssl x509 -req -days 365 -in $wserver.csr -signkey $wserver.key -out $wserver.crt

Где $wserver – имя хоста сервера Ambari.

Используемый сертификат должен быть PEM-закодирован, а не DER-закодирован. Если использовать DER-закодированный сертификат, выдается следующая ошибка:

unable to load certificate 140109766494024:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c :698:Expecting: TRUSTED CERTIFICATE

Для конвертации DER-закодированного сертификата в PEM-закодированный необходимо использовать следующую команду:

openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

Где cert.crt – DER-закодированный сертификат и cert.pem – итоговый PEM-кодированный сертификат.

  1. Запустить специальную команду настройки и ответить на запросы:
ambari-server setup-security
  • Выбрать значение 1 для включения HTTPS для сервера Ambari;
  • На запрос “Do you want to configure HTTPS?” ответить y;
  • Выбрать порт для использования SSL. Номер порта, установленный по умолчанию – 8443;
  • Предоставить полный путь к файлу сертификата ($wserver.crt from above) и файлу закрытого ключа ($wserver.key from above);
  • Ввести пароль для закрытого ключа;
  • Запустить или перезапустить сервер:
ambari-server restart

Настройка Kerberos для сервера Ambari (опционально)

Когда кластер включен с Kerberos, конечные точки компонента REST (такие как компонент YARN ATS) требуют аутентификации SPNEGO (см. раздел “Аутентификация SPNEGO для Hadoop”).

В зависимости от сервисов в кластере Ambari Web нуждается в доступе к данным API. Также, такие представления, как Tez View, нуждаются в доступе к ATS. Поэтому сервер Ambari требует принципала Kerberos для аутентификации через SPNEGO в отношении этих API. В данном разделе описывается, как настроить сервер Ambari с помощью принципала Kerberos и keytab, чтобы позволить представлениям аутентифицироваться через SPNEGO по компонентам кластера.

  1. Создать принципала в KDC для сервера Ambari. Например, используя kadmin:
addprinc -randkey ambari-server@EXAMPLE.COM
  1. Создать keytab для этого принципала:
xst -k ambari.server.keytab ambari-server@EXAMPLE.COM
  1. Поместить keytab на хост сервера Ambari. Обязательно установить права для файлов, чтобы запускающий Ambari Server пользователь, мог получить доступ к файлу keytab:
/etc/security/keytabs/ambari.server.keytab
  1. Остановить сервер Ambari:
ambari-server stop
  1. Запустить команду setup-security:
ambari-server setup-security
  1. Выбрать 3 для настройки Ambari kerberos JAAS;
  2. Ввести имя принципала Kerberos для сервера Ambari, созданного на 1 шаге;
  3. Ввести путь к keytab для принципала Ambari;
  4. Перезапустить сервер Ambari:
ambari-server restart

Настройка Truststore для сервера Ambari

При использовании шифрования для Hadoop необходимо настроить Truststore Ambari и добавить сертификаты.

Important

Во время настройки Ambari Server не должен быть запущен: либо внести изменения перед первым запуском сервера Ambari, либо остановить сервер для внесения изменений

  1. Войти на хост Ambari Server;
  2. Выбрать 4 для Setup truststore:
  • На запрос “Do you want to import a certificate into Truststore?” ответить y;
  • Ввести тип Truststore. Параметрами являются jks, jceks или pks12;
  • Указать путь к файлу Truststore;
  • Ввести пароль для Truststore и подтвердить его. Пароль должен содержать не менее 6 символов (Примечание: последние три шага требуются только при первичной настройке Truststore для Ambari);
  1. Запустить или перезапустить Ambari Server:
ambari -server restart
  1. Выполнить настройку безопасности и выбрать пункт 5 для импорта сертификата в truststore.

Настройка двустороннего SSL между Ambari Server и Ambari Agents (опционально)

Двусторонний SSL обеспечивает шифрование связи между сервером Ambari и агентами Ambari. По умолчанию Ambari отправляет данные с отключенным двухсторонним SSL.

Important

Во время настройки Ambari Server не должен быть запущен: либо внести изменения перед первым запуском сервера Ambari, либо остановить сервер для внесения изменений

Для включения двухстороннего SSL необходимо:

  1. На хосте сервера Ambari в текстовом редакторе открыть файл /etc/ambari-server/conf/ambari.properties;
  2. Добавить следующее свойство:
security.server.two_way_ssl = true
  1. Запустить или перезапустить Ambari Server:
ambari -server restart

Сертификаты агента автоматически загружаются во время регистрации агента.

Настройка шифров и протоколов для сервера Ambari (опционально)

Ambari обеспечивает контроль шифров и протоколов, которые доступны через Ambari Server.

Чтобы отключить определенные шифры, необходимо добавить список следующего формата в ambari.properties (при указании нескольких шифров, следует отделять каждый шифр с помощью нижнего подчеркивания):

security.server.disabled.ciphers=TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA

Чтобы отключить определенные протоколы, необходимо добавить список следующего формата в ambari.properties (при указании нескольких протоколов, следует отделять каждый протокол с помощью вертикальной черты):

security.server.disabled.protocols=SSL|SSLv2|SSLv3