背景
Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全的方式证明自己的身份。为了管理集群中数据与资源的访问和控制权限,提高集群服务安全性,大数据平台以安全模式安装集群。在安全模式下,客户端应用程序在访问集群中的任意资源之前均需要通过身份认证,建立安全会话链接。大数据平台通过KDC为所有组件提供Kerberos认证功能,实现了可靠的认证机制。
集群开启Kerberos之后:
客户端:可以对可信任的客户端提供认证,使得可信任客户端能够正确提交作业,恶意用户无法伪装成其他用户侵入到集群当中,能够有效防止恶意冒充客户端提交作业的情况。
服务端:集群中的服务都是可以信任的,集群服务之间使用密钥进行通信,避免了冒充服务的情况。
开启Kerberos能够提升集群的安全性,但是也会增加用户使用集群的复杂度:
提交作业的方式与没有开启Kerberos前会有一些区别,需要对作业进行改造,增加Kerberos认证的相关内容。
开启Kerberos前需要用户对Kerberos的原理、使用有一些了解,才能更好地使用Kerberos。
由于集群服务间的通信加入了Kerberos认证机制,认证过程会有一些轻微的时间消耗,相同作业相较于没有开启Kerberos的同规格集群执行速度会有一些下降。
Kerberos 身份认证原理
Kerberos是一种基于对称密钥技术的身份认证协议,可以为其他服务提供身份认证功能,且支持SSO(即客户端身份认证后,可以访问多个服务,例如HBase和HDFS)。
Kerberos主要由以下三个部分组成:
| 组成部分 | 描述 |
|---|---|
| 认证服务器(AS) | 负责验证用户身份并发放初始票据。 |
| 票据授予服务(TGS) | 为客户端发放用于访问特定服务的票据。 |
| 客户端和服务端 | 需要通过Kerberos进行认证的实体。 |
Kerberos的工作流程如下:
1、认证请求:客户端向AS发送认证请求,请求中包含客户端ID以及使用用户密码派生出的密钥加密的认证信息(如时间戳)。
2、票据授予票据(TGT):AS验证客户端身份后,发放TGT给客户端。TGT用于客户端后续向TGS请求服务票据。
3、服务票据请求:客户端使用TGT向TGS请求特定服务的票据。
4、服务票据:TGS验证TGT后,发放服务票据给客户端。
5、服务访问:客户端使用服务票据向服务端证明自己的身份,以获取服务。
6、结果返回:服务端验证通过,放行请求的服务。