1

我正在尝试使用 kerberos 保护我的 hadoop 集群。我可以使用 kinit 命令生成 TGT。但除此之外,我被困住了。

1)我想知道“serviceTicket”在现实中是什么意思。(不作为描述);使用哪个命令/代码我们可以使用服务票?

2) '.keyTab' 文件和 '.keyStore' 文件有什么用?

Hadoop-Kerberos 故事

  1. 用户使用kinit命令向 KDC 发送身份验证请求。

  2. KDC 发回加密票证。

  3. 用户通过提供他的密码来解密票证。

4. 现在经过身份验证,用户发送服务票证请求。

5. KDC 验证票证并发回服务票证。

  1. 用户将服务票证提交给 hdfs@KERBEROS.com。

  2. hdfs@KERBEROS.com 解密票证,验证用户身份

第四步,“申请服务票”;它实际上是什么意思?要获得 TGT,我们使用“kinit”命令。同样,获得服务票的程序/方法是什么?

我的详细过程:

  • LDAP:活动目录
  • Kerberos:安装在 Ubuntu 中
  • Hadoop 集群:在 Ubuntu 机器上配置,一主一从
  • Ubuntu用户名:labuser
  • Ubuntu 中的领域:KERBEROS.COM

  • 该计划是通过 Kerberos 和 Active Directory 提供 hadoop 安全性

  • 在 Kerberos 服务器机器中为 ActiveDirectory 中存在的用户生成 TGT(使用 kinit 命令)

接下来要将 Kerberos 与 Ubuntu hadoop 集群集成,请执行以下操作,

1)创建委托人的命令:addprinc -randkey namenode/labuser@KERBEROS.COM

2)创建keytab的命令xst -norandkey -k namenode.service.keytab namenode/labuser@KERBEROS.COM (或) ktadd -k namenode.service.keytab namenode/labuser@KERBEROS.COM

3) 分别在 hadoop 配置文件中添加了属性到 Kerberos。

  • 盯着hadoop集群,我们知道所有服务(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过程是否需要任何更改?如果是,请说明理由

4

2 回答 2

2

如果服务的协议启用了 kerberos,kerberos API 将自动获取服务票证。

服务器需要密钥表文件中对应于 hdfs@KERBEROS.com 的密钥,它可以读取该密钥以解密任何传入的连接。通常,您使用 kadmin 命令创建它并使用适当的实用程序将密钥安装在 keytab 文件中(对于不同版本的 kerberos 源代码,它是不同的。)

通常,一旦您将 kinit'd 作为客户端,您将永远不需要运行另一个显式 kerberos 命令来获取服务票证,前提是所有服务器和客户端都已正确配置。这就是kerberos的全部意义所在。

如果你真的想获取服务票据进行测试,可以使用 kvno 命令。

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

于 2014-12-03T00:43:11.853 回答
1

我找到了解决方案:

NameNode(java.io.FileNotFoundException: /SOME/PATH/.keystore (没有这样的文件或目录))

尝试在 hdfs-site.xml 中配置 HTTP_ONLY 选项:

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

如果您需要 https,则需要另外生成证书并配置密钥库。

于 2016-12-08T07:31:48.080 回答