我正在尝试使用kerberos保护我的hadoop集群 . 我可以使用kinit命令生成TGT . 但除此之外,我被困了 .
1)我想知道'serviceTicket'在现实中的含义 . (不作描述);使用哪个命令/代码我们可以使用服务票证?
2)' . keyTab'文件和'.keyStore'文件有什么用?
Hadoop-Kerberos story
-
用户使用 kinit 命令向KDC发送身份验证请求 .
-
KDC发回加密的票证 .
-
用户通过提供密码来解密故障单 .
4. Now authenticated, User sends a request for a service ticket.
5. KDC validates the ticket and sends back a service ticket.
-
用户将服务票证提供给hdfs@KERBEROS.com .
-
hdfs@KERBEROS.com解密票证,验证用户的身份
第四步,“申请服务票”;它到底意味着什么?要获得TGT,我们使用'kinit'命令 . 同样,获取服务票证的程序/方法是什么?
My Process in detail:
-
LDAP:ActiveDirectory
-
Kerberos:安装在Ubuntu中
-
Hadoop集群:在Ubuntu计算机中配置,具有一个主服务器和一个从服务器
-
Ubuntu用户名:labuser
-
Ubuntu的领域:KERBEROS.COM
-
计划是使用Kerberos和Active Directory提供hadoop安全性
-
在Kerberos Server计算机中为ActiveDirectory中的用户生成TGT(使用kinit命令)
接下来将Kerberos与Ubuntu hadoop集群集成,执行以下操作,
1) Command to create Principal :addprinc -randkey namenode/labuser@KERBEROS.COM
2) Command to create keytab :xst -norandkey -k namenode.service.keytab namenode/labuser@KERBEROS.COM (or) ktadd -k namenode.service.keytab namenode/labuser@KERBEROS.COM
3)将带有resp . 的hadoop配置文件中的属性添加到Kerberos .
-
凝视hadoop集群,我们了解所有服务的 Login gets successfull (Namenode,Datanode,Resource Manager和Node Manager) .
-
日志信息:INFO org.apache.hadoop.security.UserGroupInformation:使用keytab文件* /home/labuser/hadoopC/etc/hadoop/dn.service.keytab成功登录用户dn/labuser@KERBEROS.COM
-
然而 Hadoop cluster is not started ,失败了,
-
DataNode(java.lang.RuntimeException:无法在没有特权资源的情况下启动安全集群)
-
NameNode(java.io.FileNotFoundException:/home/labuser/.keystore(没有这样的文件或目录))
请建议上述Kerberos进程是否需要更改?如果是,请证明合理
2 回答
如果服务的协议启用了kerberos,则kerberos API将自动获取服务票证 .
服务器需要密钥表文件中与hdfs@KERBEROS.com对应的密钥,它可以读取以解密任何传入连接 . 通常,您使用kadmin命令创建它,并使用适当的实用程序在密钥表文件中安装密钥(对于不同版本的kerberos源代码,它是不同的 . )
通常,一旦您作为客户端使用kinit,您将永远不需要运行另一个explict kerberos命令来获取服务票证,提供正确配置所有服务器和客户端 . 这就是kerberos的重点 .
如果您确实想获取用于测试的服务票证,可以使用kvno命令 .
http://web.mit.edu/kerberos/krb5-1.13/doc/user/user_commands/kvno.html
我找到了一个解决方案:
尝试在hdfs-site.xml中配置HTTP_ONLY选项:
如果需要https,则需要另外生成证书并配置密钥库 .