了解Hadoop客户端API如何使用Kerberos

时间:2016-08-02 15:22:15

标签: hadoop kerberos

UserGroupInformation类有一个loginUserFromKeytab方法,该方法获取用户主体和keytab文件的名称。您没有指定服务主体。我认为Kerberos需要服务主体。有人可以填补我遗漏的空白吗?

2 个答案:

答案 0 :(得分:2)

AFAIK“登录”方法仅负责客户端

上的初始用户身份验证
  • 连接到KDC
  • 断言它是“委托人”,受到质疑,使用加密密码进行回复(这是keytab文件中的内容)
  • 检索显示为krbtgt/REALM@REALM
  • 票证授予票证(TGT)


然后,每个Hadoop API都会管理自己的授权,但在服务器端

客户端:

  • 在连接时呈现TGT,作为身份验证的证据

服务:

  • 检查此主体是否未列入黑名单
  • 连接到KDC以检查TGT是否确实有效,然后生成相应的服务票证 (以便进一步的客户服务流量可以跳过到KDC的往返)
  • 根据可插入的授权库检查主体所属的“组”(例如,参见“权限>组映射”下的HDFS documentation
  • 所有权限检查均基于主体名称和组名称

答案 1 :(得分:0)

在Kerberised群集中,有两种类型的帐户 - 简单用户和用户服务。从技术角度来看,它们是相同的,由三部分组成 - primary / instance @ REALM。但是简单的用户通过提供原则名称和密码进行身份验证。它可以配置为使用群集KDC,也可以在受信任的关系中访问Active Directory KDC。对于用户服务,使用kaytabs方法。这意味着管理员创建了keytab文件,其中包含对其有效的原则列表。您可以通过以下方式获取keytab中的原则:

klist -kt path_to_keytab

使用loginUserFromKeytab表示希望使用keytab文件将Kerberos票证提供给当前用户的某些服务。作为参数,您应该在keytab中提供keytab的路径和service-principle的名称。如果成功,则当前用户或执行上下文所有者将获得具有访问服务所需的所有权限的票证