11. Настройка TLS для HDFS и YARN

В этой части описывается настройка TLS для HDFS и YARN.

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

Manually Configuring TLS/SSL Encryption for CDH Services

Вступление

Помимо настройки кластера Cloudera Manager для использования TLS, различные службы CDH, работающие в кластере, также должны быть настроены для использования TLS. Процесс настройки TLS зависит от компонента, поэтому выполните следующие действия, если это необходимо для вашей системы. Однако, прежде чем пытаться настроить TLS, убедитесь, что ваш кластер соответствует предварительным требованиям.

В общем, все роли на любом узле в кластере могут использовать одни и те же сертификаты, при условии, что сертификаты имеют соответствующий формат (JKS, PEM) и что конфигурация правильно указывает на расположение.

Примечание. TLS для основных сервисов Hadoop — HDFS и YARN — необходимо включить одновременно. TLS для других компонентов, таких как HBase, Hue и Oozie, можно включить независимо.

Не все компоненты поддерживают TLS, и не все внешние механизмы поддерживают TLS. Если явно не указано в этом руководстве, компонент, который вы хотите настроить, может в настоящее время не поддерживать TLS. Например, Sqoop в настоящее время не поддерживает TLS для Oracle, MySQL или других баз данных.

Предпосылки

Cloudera рекомендует, чтобы кластер и все службы использовали Kerberos для проверки подлинности. Если вы включите TLS для кластера, который не был настроен для использования Kerberos, отобразится предупреждение. Прежде чем продолжить, вам следует интегрировать кластер с развертыванием Kerberos.

Для выполнения описанных ниже шагов требуется, чтобы в кластере был включен TLS, и что сертификат сервера Cloudera Manager и сертификаты агента Cloudera Manager правильно настроены и уже установлены. Кроме того, у вас должны быть готовы сертификаты и ключи, необходимые для конкретного сервера CDH.

Если кластер соответствует этим требованиям, вы можете настроить конкретную службу CDH для использования TLS, как подробно описано в этом разделе.

1. Настройка TLS для HDFS и YARN

TLS для основных сервисов Hadoop — HDFS, MapReduce и YARN — необходимо включить одновременно. Поскольку большинство кластеров запускают либо MapReduce, либо YARN, а не оба сразу, вы обычно включаете HDFS и YARN или HDFS и MapReduce. Включение TLS в HDFS необходимо, прежде чем его можно будет включить в MapReduce или YARN. Примечание. Если вы включаете TLS для HDFS, вы также должны включить его для MapReduce или YARN.

Следующие шаги включают включение аутентификации Kerberos для веб-консолей HTTP. При включении TLS для основных служб Hadoop в кластере без включения аутентификации отображается предупреждение.

1.1. Прежде чем вы начнёте

Перед включением TLS хранилища ключей, содержащие сертификаты, привязанные к соответствующим доменным именам, должны быть доступны на всех хостах, на которых работает хотя бы одна роль демона HDFS или YARN.

Поскольку демоны HDFS и YARN действуют как клиенты TLS, а также как серверы TLS, они должны иметь доступ к хранилищам доверенных сертификатов. Во многих случаях наиболее практичным подходом является развертывание доверенных хранилищ на всех хостах в кластере, поскольку может быть нежелательно заранее определять набор хостов, на которых будут работать клиенты.

Хранилища ключей для HDFS и YARN должны принадлежать группе hadoop и иметь разрешения 0440 (то есть их могут читать владелец и группа). У хранилищ доверенных сертификатов должны быть разрешения 0444 (то есть быть доступными для чтения всем).

Cloudera Manager поддерживает конфигурацию TLS для HDFS и YARN на уровне обслуживания. Для каждой из этих служб необходимо указать абсолютные пути к файлам хранилища ключей и доверенных сертификатов. Эти настройки применяются ко всем хостам, на которых выполняются роли демонов рассматриваемой службы. Следовательно, выбранные вами пути должны быть действительны на всех хостах.

Следствием этого является то, что имена файлов хранилища ключей для данной службы должны быть одинаковыми на всех хостах. Если, например, вы получили отдельные сертификаты для демонов HDFS на хостах node1.example.com и node2.example.com, вы могли бы выбрать для хранения этих сертификатов файлы с именами hdfs-node1.keystore и hdfs-node2.keystore ( соответственно). При развертывании этих хранилищ ключей вы должны дать им одинаковое имя на целевом хосте, например, hdfs.keystore.

Несколько демонов, запущенных на хосте, могут совместно использовать сертификат. Например, если на одном хосте запущены DataNode и сервер Oozie, они могут использовать один и тот же сертификат.

1.2. Настройка TLS для HDFS

  1. В настройках службы HDFS, используя фильтр ‘ssl.server.keystore’, изменяем следующие параметры:

  1. Настройка TLS/SSL client truststore. Эти параметры могут быть переопределены в настройках YARN, но там мы их настраивать не будем. Для роли HDFS, используя фильтр ‘ssl.client.truststore’, изменяем следующие параметры:

  1. Этот пункт инструкции необходимо перести в соответствующий раздел, так как здесь Kerberos ещё не активирован. (Optional) Эта настройка была предложена к выполнению в предыдущей инструкции “Включение FreeIPA Kerberos-аутентификации в Cloudera CDH 6.3.2”. Если параметр не был настроен, то есть шанс сделать это сейчас. Cloudera рекомендует включить аутентификацию веб-интерфейса для службы HDFS. Аутентификация веб-интерфейса использует SPNEGO. После включения вы не сможете получить доступ к веб-консолям Hadoop без действительного билета Kerberos и правильной конфигурации на стороне клиента.

  1. Нажимаем Save Changes.

При применении этого изменения может высветиться ошибка: General Error(s) Role is missing Kerberos keytab. Go to the Kerberos Credentials page and click the Generate Missing Credentials button. Но после перезапуска сервисов ошибка пропадает.

1.3. Настройка TLS для YARN

  1. В настройках роли YARN, используя фильтр ‘ssl.server.keystore’, изменяем следующие параметры:

  1. Настройки YARN для TLS/SSL Client Truststore File пропускаем, так как они переопределяют такие же настройки в роли HDFS, что не имеет смысла.

  2. Этот пункт инструкции необходимо перести в соответствующий раздел, так как здесь Kerberos ещё не активирован. Cloudera рекомендует включить аутентификацию веб-интерфейса для рассматриваемой службы. Эта настройка была предложена к выполнению в предыдущей инструкции “Включение FreeIPA Kerberos-аутентификации в Cloudera CDH 6.3.2”. Если параметр не был настроен, то есть шанс сделать это сейчас.

При применении этого изменения может высветиться ошибка: General Error(s) Role is missing Kerberos keytab. Go to the Kerberos Credentials page and click the Generate Missing Credentials button. Но после перезапуска сервисов ошибка пропадает.

  1. Нажимаем Save Changes.

1.4. Включение TLS для HDFS и YARN

  1. В настройках службы HDFS, используя фильтр ‘hadoop.ssl.enabled’, изменяем следующие параметры:

  1. Этот пункт инструкции необходимо перести в соответствующий раздел, так как здесь Kerberos ещё не активирован, впрочем это предупреждение может и не появиться. Для выполнения появившейся рекомендации, изменяем значение HDFS-параметра ‘DataNode Transceiver Port’ c ‘1004’ на предлагаемый номер по умолчанию ‘9866’:
  1. Нажимаем Save Changes.

  2. Перезапускаем все зависимые сервисы по приглашению Cloudera Manager Console.