我正在尝试使用 kerberos 保护我的 hadoop 集群。我可以使用 kinit 命令生成 TGT。但除此之外,我被困住了。
1)我想知道“serviceTicket”在现实中是什么意思。(不作为描述);使用哪个命令/代码我们可以使用服务票?
2) '.keyTab' 文件和 '.keyStore' 文件有什么用?
Hadoop-Kerberos 故事
用户使用kinit命令向 KDC 发送身份验证请求。
KDC 发回加密票证。
用户通过提供他的密码来解密票证。
4. 现在经过身份验证,用户发送服务票证请求。
5. KDC 验证票证并发回服务票证。
用户将服务票证提交给 hdfs@KERBEROS.com。
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过程是否需要任何更改?如果是,请说明理由