【问题标题】:Service Ticket in Kerberos - Hadoop securityKerberos 中的服务票证 - Hadoop 安全性
【发布时间】:2015-01-30 16:05:30
【问题描述】:

我正在尝试使用 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)的登录都成功

    • Lo​​g info: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 进程是否需要任何更改?如果是,请说明理由

【问题讨论】:

    标签: security hadoop kerberos spn mit-kerberos


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我们现在很清楚服务票的流程。我已经编辑了我的问题并添加了我的工作流程,请提出修改后的继续方式,
    【解决方案2】:

    我找到了解决方案:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-14
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多