Kerberos中的服务票证 - Hadoop安全性

时间:2014-12-02 12:00:03

标签: security hadoop kerberos spn mit-kerberos

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

1)我想知道'serviceTicket'在现实中的含义。 (不作描述);使用哪个命令/代码我们可以使用服务票证?

2)'。keyTab'文件和'.keyStore'文件的用途是什么?

Hadoop-Kerberos故事

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

  2. KDC发回加密的票证。

  3. 用户通过提供密码来解密故障单。

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

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

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

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

    3. 第四步,“申请服务票”;它到底意味着什么?要获得TGT,我们使用'kinit'命令。同样,获取服务票证的程序/方法是什么?

      我的流程详情:

      • LDAP:ActiveDirectory
      • Kerberos:安装在Ubuntu中
      • Hadoop群集:在Ubuntu计算机中配置一个主服务器和一个服务器
      • Ubuntu用户名:labuser
      • Ubuntu的领域:KERBEROS.COM

      • 计划是使用Kerberos和Active Directory提供hadoop安全性

      • 在Kerberos Server计算机中为ActiveDirectory中的用户生成TGT(使用kinit命令)

      接下来将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配置文件中添加resp。属性到Kerberos。

      • 凝视hadoop群集,我们知道所有服务(Namenode,Datanode,资源管理器和节点管理器)的登录成功

        • 日志信息:INFO org.apache.hadoop.security.UserGroupInformation:使用keytab文件* /home/labuser/hadoopC/etc/hadoop/dn.service.keytab
      • 然而 Hadoop群集未启动,失败,

        • DataNode(java.lang.RuntimeException:无法在没有特权资源的情况下启动安全集群)

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

      请建议上述Kerberos流程是否需要更改?如果是,请证明

2 个答案:

答案 0 :(得分:2)

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

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

一般来说,一旦你作为客户端使用kinit,你将永远不需要再运行另一个kerberos 命令获取服务票证,正确配置所有服务器和客户端。这就是kerberos的重点。

如果您确实想要获取测试服务票证,可以使用kvno命令。

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

答案 1 :(得分:1)

我找到了一个解决方案:

  

NameNode(java.io.FileNotFoundException:/SOME/PATH/.keystore(No such file or directory))

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

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

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