首页 文章

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

提问于
浏览
1

我正在尝试使用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 回答

  • 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

  • 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,则需要另外生成证书并配置密钥库 .

相关问题