Сервисный билет в Kerberos - безопасность Hadoop

Я пытаюсь защитить свой кластер hadoop с помощью kerberos. Я могу генерировать TGT с помощью команды kinit. Но за этим я застрял.

1) Я хотел бы знать, что на самом деле означает "serviceTicket". (Не в качестве описания); Используя какую команду / код мы можем использовать билет службы?

2) Какая польза от файла ".keyTab" и ".keyStore"?

История Hadoop-Kerberos

  1. Пользователь отправляет запрос аутентификации в KDC с помощью команды kinit.

  2. KDC отправляет обратно зашифрованный билет.

  3. Пользователь расшифровывает билет, предоставив свой пароль.

4. После проверки подлинности, Пользователь отправляет запрос на сервисный билет.

5. KDC проверяет билет и отправляет обратно сервисный билет.

  1. Пользователь представляет сервисный билет на hdfs@KERBEROS.com.

  2. hdfs@KERBEROS.com расшифровывает тикет, подтверждая личность пользователя

На 4-м шаге "запрос на сервисный билет"; что это на самом деле означает? Чтобы получить TGT, мы используем команду "kinit". Точно так же, какова процедура / метод для получения сервисного билета?

Мой процесс в деталях:

  • LDAP: ActiveDirectory
  • Kerberos: установлен в Ubuntu
  • Кластер Hadoop: настроен на машинах Ubuntu с одним ведущим и одним ведомым
  • Ubuntu имя пользователя: labuser
  • Царство в Ubuntu: KERBEROS.COM

  • План заключается в обеспечении безопасности hadoop с помощью Kerberos и Active Directory.

  • Сгенерированный TGT(с помощью команды kinit) на компьютере Kerberos Server для пользователей, присутствующих в ActiveDirectory

Далее, чтобы интегрировать Kerberos с кластером Ubuntu Hadoop, сделал следующее,

1) Команда для создания принципала: addprinc -randkey namenode/labuser@KERBEROS.COM

2) Команда для создания таблицы ключей: xst -norandkey -k namenode.service.keytab namenode/labuser@KERBEROS.COM (или) ktadd -k namenode.service.keytab namenode/labuser@KERBEROS.COM

3) Добавлены свойства в конфигурационные файлы hadoop с соотв., В Kerberos.

  • Взглянув на кластер hadoop, мы узнаем, что Login успешно работает для всех сервисов (Namenode,Datanode,Resource Manager и Node Manager).

    • Информация журнала:INFO org.apache.hadoop.security.UserGroupInformation: вход в систему успешен для пользователя dn/labuser@KERBEROS.COM с использованием файла keytab * /home/labuser/hadoopC/etc/hadoop/dn.service.keytab
  • Тем не менее кластер Hadoop не запущен, с ошибкой в

    • DataNode(java.lang.RuntimeException: Невозможно запустить безопасный кластер без привилегированных ресурсов)

    • NameNode (java.io.FileNotFoundException: /home/labuser/.keystore (нет такого файла или каталога))

Пожалуйста, предложите, требуют ли вышеупомянутые процессы Kerberos каких-либо изменений? Если да, пожалуйста, обоснуйте

2 ответа

Решение

Kerberos API получит билет службы автоматически, если протокол для службы включен Kerberos.

Серверу нужен секретный ключ, соответствующий hdfs@KERBEROS.com в файле keytab, который он может прочитать, чтобы расшифровать любые входящие соединения. Как правило, вы создаете это с помощью команды kadmin и устанавливаете секрет в файле keytab с помощью соответствующей утилиты (она отличается для разных версий исходного кода Kerberos.)

Как правило, если у вас есть kinit'd в качестве клиента, вам никогда не потребуется запускать другую команду explict kerberos для получения билетов на обслуживание, ПРЕДОСТАВЛЯЯ, что все серверы и клиенты настроены правильно. В этом вся суть Kerberos.

Если вы действительно хотите получить сервисный билет для тестирования, вы можете использовать команду kvno.

http://web.mit.edu/kerberos/krb5-1.13/doc/user/user_commands/kvno.html

Я нашел решение для:

NameNode (java.io.FileNotFoundException: /SOME/PATH/.keystore (нет такого файла или каталога))

Попробуйте настроить параметр HTTP_ONLY в hdfs-site.xml:

<property>
 <name>dfs.http.policy</name>
 <value>HTTP_ONLY</value>
</property>

Если вам нужен https, вам необходимо дополнительно сгенерировать сертификаты и настроить хранилище ключей.

Другие вопросы по тегам