Encrypted shuffle в MapReduce
Обзор
Hadoop позволяет добавить шифрование данных на этапе перемешивания (shuffle) в MapReduce и YARN. Эта функция использует HTTPS с дополнительной аутентификацией клиента, также известной как двунаправленный HTTPS или HTTPS с клиентскими сертификатами.
ВНИМАНИЕ
Использование encrypted shuffle существенно влияет на производительность кластера. Рекомендуется добавить дополнительные ресурсы для поддержки шифрования данных. |
Функция encrypted shuffle включает в себя несколько дополнительных настроек безопасности кластера:
-
Параметры конфигурации для переключения между HTTP и HTTPS.
-
Параметры конфигурации, определяющие свойства хранилища ключей (keystore) и хранилища доверенных сертификатов (truststore): их расположение, тип, пароли.
-
Параметр перезагрузки хранилищ доверенных сертификатов в кластере при добавлении или удалении ноды.
Чтобы включить encrypted shuffle для MapReduce и YARN, необходимо обновить их файлы конфигурации и добавить информацию о сертификате SSL в настройках хранилища ключей и хранилища доверенных сертификатов.
Файлы конфигурации MapReduce и YARN (core-site.xml и mapred-site.xml) можно отредактировать с помощью ADCM. Настройки хранилищ ключей и сертификатов необходимо обновить вручную.
Конфигурация MapReduce
Чтобы настроить encrypted shuffle для MapReduce через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите в Services и нажмите на HDFS.
-
Включите параметр Show Advanced и найдите core-site.xml.
-
Откройте раскрывающийся список параметров, выберите и отредактируйте необходимые свойства из таблицы ниже.
-
Подтвердите изменения в конфигурации кластера, нажав Save.
Параметр | Описание | Значение по умолчанию |
---|---|---|
hadoop.ssl.require.client.cert |
Логическое значение, указывающее, используются ли клиентские сертификаты |
false |
hadoop.ssl.hostname.verifier |
Используемый тип проверки имени хоста. Принимает следующие значения: |
DEFAULT |
hadoop.ssl.keystores.factory.class |
Используемая реализация KeyStoresFactory. В настоящее время доступна только реализация по умолчанию. Для нее используются свойства, расположенные в файлах ssl-server.xml и ssl-client.xml |
org.apache.hadoop.security.ssl.FileBasedKeyStoresFactory |
hadoop.ssl.server.conf |
Файл ресурсов с информацией о хранилище ключей SSL-сервера |
ssl-server.xml |
hadoop.ssl.client.conf |
Файл ресурсов с информацией о хранилище ключей SSL-клиента |
ssl-client.xml |
hadoop.ssl.enabled.protocols |
Поддерживаемые протоколы SSL. Этот параметр используется только HTTP-сервером DataNode |
TLSv1.2 |
Параметр hadoop.ssl.hostname.verifier
поддерживает следующие типы проверки:
-
DEFAULT
— проверяется соответствие имени хоста первому общему имени (CN) или любому из альтернативных имен (SAN). Имена могут использовать маску (wildcard), например, имя хоста *.example.com будет соответствовать всем субдоменам, включая beta.test.example.com. -
DEFAULT_AND_LOCALHOST
— проверка работает так же, какDEFAULT
, но позволяет использовать все имена хостов типа:localhost
,localhost.example
или127.0.0.1
. -
STRICT
— проверка работает так же, какDEFAULT
, но допускает использование маски (wildcard) только для доменов того же уровня. Например, имя хоста *.example.com будет соответствовать только субдоменам того же уровня, например test.example.com, но не beta.test.example.com. -
STRICT_IE6
— проверка работает так же, какSTRICT
, но разрешает имена хостов, которые соответствуют любому из общих имен (CN) в сертификате сервера X.509. -
ALLOW_ALL
— отключает механизм проверки имени хоста.
Конфигурация YARN
Настроенная конфигурация для MapReduce позволяет также включить encrypted shuffle для YARN.
Чтобы настроить encrypted shuffle для YARN через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите в Services и нажмите на YARN.
-
Включите параметр Show advanced.
-
Найдите параметр mapreduce.shuffle.ssl.enabled и установите для него значение
true
. -
Подтвердите изменения в конфигурации YARN, нажав Save.
Настройки keystore и truststore
Для включения encrypted shuffle необходимо изменить настройки хранилища ключей и хранилища доверенных сертификатов, используемые сервисом MapReduce shuffle.
Эти настройки расположены в файлах ssl-server.xml и ssl-client.xml в директории etc/hadoop/conf/ на хостах кластера.
После редактирования свойств убедитесь, что пользователь mapred
:
-
является владельцем файлов ssl-server.xml и ssl-client.xml;
-
имеет эксклюзивный доступ на чтение файла конфигурации SSL-сервера;
-
имеет разрешения по умолчанию для файла конфигурации клиента SSL.
Параметр клиента | Параметр сервера | Описание | Значение по умолчанию |
---|---|---|---|
ssl.client.keystore.type |
ssl.server.keystore.type |
Тип файла хранилища ключей |
jks |
ssl.client.keystore.location |
ssl.server.keystore.location |
Местоположение файла хранилища ключей. Пользователь |
— |
ssl.client.keystore.password |
ssl.server.keystore.password |
Пароль к файлу хранилища ключей |
— |
ssl.client.truststore.type |
ssl.server.truststore.type |
Тип файла хранилища доверенных сертификатов |
jks |
ssl.client.truststore.location |
ssl.server.truststore.location |
Расположение файла хранилища доверенных сертификатов. Пользователь |
— |
ssl.client.truststore.password |
ssl.server.truststore.password |
Пароль к файлу хранилища доверенных сертификатов |
— |
ssl.client.truststore.reload.interval |
ssl.server.truststore.reload.interval |
Определяет, как часто хранилища доверенных сертификатов перезагружают свою конфигурацию (в миллисекундах) |
10000 |
Если вы скопируете новый файл хранилища доверенных сертификатов поверх старого, система заменит старые сертификаты новыми.
Эта функция полезна для добавления или удаления нод из кластера или доверенных клиентов. В таких случаях сертификат клиента или NodeManager добавляется (или удаляется) из всех файлов хранилища доверенных сертификатов в системе. Новая конфигурация будет реализована без необходимости перезапуска NodeManager.
<?xml version="1.0"?>
<configuration>
<property>
<name>ssl.client.keystore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.client.truststore.reload.interval</name>
<value>10000</value>
</property>
<property>
<name>ssl.client.truststore.type</name>
<value>jks</value>
</property>
</configuration>
<?xml version="1.0"?>
<configuration>
<property>
<name>ssl.server.keystore.type</name>
<value>jks</value>
</property>
<property>
<name>ssl.server.truststore.reload.interval</name>
<value>10000</value>
</property>
<property>
<name>ssl.server.truststore.type</name>
<value>jks</value>
</property>
</configuration>
Активация
После того, как все необходимые параметры конфигурации заданы, активируйте encrypted shuffle, перезапустив все NodeManager через ADCM:
-
На странице Clusters выберите нужный кластер.
-
Перейдите в Services.
-
Раскройте меню Actions
для YARN и выберите Restart
-
Убедитесь, что для параметра Apply configs from ADCM установлено значение
true
, и нажмите Run.