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. Настройки хранилищ ключей и сертификатов необходимо обновить вручную.

Клиентские сертификаты

 

Файл хранилища ключей сертификата клиента, содержащий закрытый ключ (private key), должен быть доступен всем пользователям, создающим задачи в кластере. Это означает, что любой пользователь может получить доступ к файлам хранилища ключей и использовать клиентские сертификаты для установки соединения с shuffle-сервером.

Лучшей защитой данных является механизм JobToken, используемый в Hadoop. Каждое задание использует свой уникальный JobToken для получения только тех данных, к которым разрешен доступ. Без действительного JobToken невозможно получить доступ ко всем данным на сервере.

Если использование клиентского сертификата необходимо, убедитесь, что браузеры, подключающиеся к веб-интерфейсам, используют сертификаты с соответствующей подписью. Если сертификаты подписаны центром сертификации (Certificate Authority, CA), убедитесь, что полная цепочка сертификатов включена в хранилище ключей сервера.

Конфигурация MapReduce

Чтобы настроить encrypted shuffle для MapReduce через ADCM:

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите в Services и нажмите на HDFS.

  3. Включите параметр Show Advanced и найдите core-site.xml.

  4. Откройте раскрывающийся список параметров, выберите и отредактируйте необходимые свойства из таблицы ниже.

  5. Подтвердите изменения в конфигурации кластера, нажав Save.

Свойства encrypted shuffle
Параметр Описание Значение по умолчанию

hadoop.ssl.require.client.cert

Логическое значение, указывающее, используются ли клиентские сертификаты

false

hadoop.ssl.hostname.verifier

Используемый тип проверки имени хоста. Принимает следующие значения: DEFAULT, STRICT, STRICT_IE6, DEFAULT_AND_LOCALHOST или ALLOW_ALL

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:

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите в Services и нажмите на YARN.

  3. Включите параметр Show advanced.

  4. Найдите параметр mapreduce.shuffle.ssl.enabled и установите для него значение true.

  5. Подтвердите изменения в конфигурации 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-клиента и сервера
Параметр клиента Параметр сервера Описание Значение по умолчанию

ssl.client.keystore.type

ssl.server.keystore.type

Тип файла хранилища ключей

jks

ssl.client.keystore.location

ssl.server.keystore.location

Местоположение файла хранилища ключей. Пользователь mapred должен быть владельцем этого файла и иметь эксклюзивный доступ к нему на чтение

 — 

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

Расположение файла хранилища доверенных сертификатов. Пользователь mapred должен быть владельцем этого файла и иметь эксклюзивный доступ к нему на чтение

 — 

ssl.client.truststore.password

ssl.server.truststore.password

Пароль к файлу хранилища доверенных сертификатов

 — 

ssl.client.truststore.reload.interval

ssl.server.truststore.reload.interval

Определяет, как часто хранилища доверенных сертификатов перезагружают свою конфигурацию (в миллисекундах)

10000

Если вы скопируете новый файл хранилища доверенных сертификатов поверх старого, система заменит старые сертификаты новыми.

Эта функция полезна для добавления или удаления нод из кластера или доверенных клиентов. В таких случаях сертификат клиента или NodeManager добавляется (или удаляется) из всех файлов хранилища доверенных сертификатов в системе. Новая конфигурация будет реализована без необходимости перезапуска NodeManager.

Файл ssl-client.xml по умолчанию
<?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>
Файл ssl-server.xml по умолчанию
<?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:

  1. На странице Clusters выберите нужный кластер.

  2. Перейдите в Services.

  3. Раскройте меню Actions actions2 для YARN и выберите Restart

  4. Убедитесь, что для параметра Apply configs from ADCM установлено значение true, и нажмите Run.

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