前言
本文继续上一篇Hadoop安全认证方面的内容主题,来简单聊聊Hadoop内部的其它认证体系:Delegation Token(授权令牌认证)和Block Access Token(块访问认证)。主要来聊聊这两者间的差异,顺带也会提及一些Kerberos认证的一点内容。这里不深挖其中的技术细节,整体阐述会比较简单,明了。
Kerberos认证
Kerberos认证是业界较为成熟的一种认证体系,其中涉及到三方的通信。大致过程可描述为如下两大步骤:
- 用户请求KDC(秘钥管理中心服务),表明自己身份以及想要访问的服务,如果身份验证通过,获取凭证(TGT)
- 得到TGT后,用户再凭借此请求实际服务
那么这套认证过程会有什么问题呢?主要有以下几点:
第一点,过程比较复杂,认证过程还涉及到第三方服务。
第二点,KDC服务可能存在单点瓶颈问题,尤其当有大量的用户请求需要通过KDC来获取TGT凭证时。
于是乎,一种简单化的认证体系衍生而出了。
Delegation Token
这里我们说的Delegation Token指的是一种“授权”认证,它和Kerberos的授权相比,不同的点在于:用户被“授权”了一次之后,可以接着使用“授权令牌”在后续的请求过程中,无须再次“授权”过程。当然,这里会存在令牌过期更新的问题。
Hadoop内部的Delegation Token的产生,初期是由NameNode和用户之间共享的一个安全秘钥,经过一系列的运算,得到。而这个安全秘钥,只允许由用户和NameNode私自保管,是被保护起来的。
每个用户经过初期验证后,会从NN中获取一个授权Token。同时用户需要告知NN它的Token更新者(Renewer)是谁。这样的话,每当令牌失效的时候,NN只允许给定的用户进行更新令牌期限的操作。这个更新者信息