0


Hadoop Delegation Token

文章目录

Delegation Token

验证过程

在这里插入图片描述

  • 客户端通过kerberos认证之后,可以从server端获取委托令牌,后续所有的访问都可以通过委托令牌来进行。
  • 这样可以将委托令牌传递给其他服务(比如yarn)来进行身份验证,YARN负责续订和分发令牌。这样分布式作业运行的worker节点就可以使用委托令牌替代使用kerberos来进行身份验证。
  • 作业结束之后,YARN再负责取消令牌

使用委托令牌的好处

  • 性能损耗低。委托令牌是一种轻量化的双方认证协议,相对于kerberos性能损耗更低。委托令牌续订凭据更轻量。因为续订过程只有续订者和对应的服务参与,token不会更改,所以所有的令牌使用方也无须更新。
  • 保护KDC。可以避免KDC(Kerberos Key Distribution Center)被大量请求打爆。
  • 安全性好。委托令牌无需分发TGT或keytab文件,避免泄漏风险。同时委托令牌有过期时间,需要定期续订以保持有效性(有最大生命周期)。
  • 可用性良好。委托令牌由server端持久化存储。HDFS NameNode将委托令牌持久化在元数据中(fsimage和edit logs)。即使服务重启委托令牌也能继续使用。

示例

获取令牌日志
INFO hdfs.DFSClient: Created token for xiao: HDFS_DELEGATION_TOKEN owner=xiao@GCE.CLOUDERA.COM, renewer=yarn, realUser=, issueDate=1508730603423, maxDate=1509335403423, sequenceNumber=4, masterKeyId=39 on ha-hdfs:ns1INFO security.TokenCache: Got dt for hdfs://ns1; Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:ns1, Ident: (token for xiao: HDFS_DELEGATION_TOKEN owner=xiao@GCE.CLOUDERA.COM, renewer=yarn, realUser=, issueDate=1508730603423, maxDate=1509335403423, sequenceNumber=4, masterKeyId=39)

server端

主要负责
1.颁发令牌
2.响应续订请求
3.被客户端取消或过期时删除令牌
4.对客户端的令牌进行身份验证

组成部分

  • 委托令牌使用HMAC(Hash-based Message Authentication Code)机制生成和验证。
  • 委托令牌由两部分组成:公开和私有部分。在server端以hashmap形式存储,公共信息为key,私有信息为value。

公开信息:

  • Kind:token的种类(如HDFS_DELEGATION_TOKEN)
  • Owner:令牌的拥有者
  • Renewer:续订令牌的用户
  • Real User:代理用户的代理方
  • Issue Date:颁发令牌的Epoch时间
  • Max Date:令牌可以续订的最大Epoch时间
  • Sequence Number:标识令牌的UUID
  • Master Key ID:用于创建和验证令牌的主密钥的ID

私有信息:

  • renewDate:令牌需要续订的Epoch时间。如果小于当前时间,则代表令牌过期
  • password:使用主密钥以HMAC算法计算出的密码。用于验证客户端向服务器提供的委派令牌
  • trackingId:跟踪标识符,在跨多个客户端会话中跟踪令牌的使用情况。计算的令牌的MD5

master key位于server端,用于生成委托令牌。在配置的间隔时间滚动更新。

server有配置指定续订间隔(默认24小时),也是委托令牌的过期时间。过期的委托令牌不能用于身份验证,server端有后台线程移除过期的委托令牌。

在授权令牌到期之前,只有令牌的续订者才能续订。成功续订会将委派令牌的到期时间延长一个续订间隔,直到达到其最大生存期(默认为7天)。

client端

1.请求令牌。请求时可指定续订者
2.续订令牌(如果客户端指定了续订用户为自己)
3.请求取消令牌
4.出示令牌进行身份验证

客户端的令牌包含内容:

  • identifier:匹配server端的公共信息部分的token标识
  • password:匹配server端的密码
  • kind:令牌的种类
  • service:服务名
  • renewer:续订的用户

生命周期

在这里插入图片描述

相关配置

配置项默认值释义dfs.namenode.delegation.token.renew-interval86400000 (1 day)令牌续订间隔(以毫秒为单位)dfs.namenode.delegation.token.max-lifetime604800000(7 days)令牌最大有效时间(以毫秒为单位)dfs.namenode.delegation.key.update-interval86400000(1 day)namenode中令牌的主密钥的更新间隔(以毫秒为单位)代码,无配置项3600000(1 hour)后台删除过期令牌的时间间隔
参考:https://blog.cloudera.com/hadoop-delegation-tokens-explained/


本文转载自: https://blog.csdn.net/zincooo/article/details/135362083
版权归原作者 zincooo 所有, 如有侵权,请联系我们删除。

“Hadoop Delegation Token”的评论:

还没有评论