В oop Как я могу проверить, что у меня шифрование данных при передаче DFS? - PullRequest
0 голосов
/ 05 февраля 2020

Мы выполняем oop 3.2.1 в среде без нескольких пользователей в безопасном центре обработки данных. Мы предпочитаем иметь зашифрованные передачи данных для активности между узлами. Мы определили, что нам не нужно настраивать Kerberos, поэтому я работаю над тем, чтобы шифрование выполнялось при блочной передаче данных и веб-службах.

Мне кажется, что включено шифрование DFS благодаря следующим настройкам в hdfs-site. xml:

<!-- SECURITY -->
  <property>
    <name>dfs.encrypt.data.transfer</name>
    <value>true</value>
  </property>
  <property>
    <name>dfs.block.access.token.enable</name>
    <value>true</value>
  </property>

Я получал ошибки рукопожатия на датодах с включенным dfs.encrypt.data.transfer, пока я также не установил dfs.block.access.token.enable.

Операции файловой системы отлично работают сейчас, но я все еще вижу множество таких вещей:

2020-02-04 15:25:59,492 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false

Я считаю, что SASL - это функция Kerberos, которую я не должен ожидать, чтобы о ней сообщали как о правде. Это звучит правильно?

Есть ли способ проверить, что DFS шифрует данные между узлами? (Я могу достать сниффер ...)

1 Ответ

0 голосов
/ 11 февраля 2020

Чтобы ответить на мой собственный вопрос: я так и не нашел сообщения журнала, в котором говорилось бы: «Да, вы включили шифрование». Однако я выполнил простой тест и заметил различия в производительности, совместимые с имеющимся шифрованием:

Время, необходимое для запуска hadoop distcp:

  • без шифрования: 5 минут
  • 3des: 70 минут
  • rc4: 12 минут
  • 3des + AES, 128 бит: 16 минут
  • 3des + AES, 256 бит: 18 минут

Вот немного шаблона Jinja для hdfs-site.xml, который настраивает dfs.encrypt для 3des, AES 256 бит, IF hadoop_dfs_encrypt=true:

<!-- SECURITY -->
  <property>
    <name>dfs.encrypt.data.transfer</name>
    <value>{{ hadoop_dfs_encrypt | default(false) }}</value>
  </property>
  <property>
    <name>dfs.block.access.token.enable</name>
    <value>{{ hadoop_dfs_encrypt | default(false) }}</value>
  </property>
  <property>
    <name>dfs.encrypt.data.transfer.cipher.suites</name> 
    <value>AES/CTR/NoPadding</value>
  </property>
  <property>
    <name>dfs.encrypt.data.transfer.cipher.key.bitlength</name>
    <value>256</value> 
  </property>

Из чего Я прочитал, что обмен ключами dfs.encrypt между NN и DN не защищен, если вы не установите hadoop.rpc.protection=privacy. По общему мнению, это требует Kerberos, но я все еще изучаю свои варианты там.

...