Kerberos概述

从EMR-3.43.0和EMR-5.9.0版本开始,E-MapReduce支持创建高安全类型的集群。在这种高安全级别的集群中,所有开源组件均采用Kerberos安全模式启动,确保只有经过Kerberos认证的客户端能够访问集群提供的服务(例如HDFS)。

背景信息

集群开启Kerberos之后:

  • 客户端:可以对可信任的客户端提供认证,使得可信任客户端能够正确提交作业,恶意用户无法伪装成其他用户侵入到集群当中,能够有效防止恶意冒充客户端提交作业的情况。

  • 服务端:集群中的服务都是可以信任的,集群服务之间使用密钥进行通信,避免了冒充服务的情况。

开启Kerberos能够提升集群的安全性,但是也会增加用户使用集群的复杂度:

  • 提交作业的方式与没有开启Kerberos前会有一些区别,需要对作业进行改造,增加Kerberos认证的相关内容。

  • 开启Kerberos前需要用户对Kerberos的原理、使用有一些了解,才能更好地使用Kerberos。

  • 由于集群服务间的通信加入了Kerberos认证机制,认证过程会有一些轻微的时间消耗,相同作业相较于没有开启Kerberos的同规格集群执行速度会有一些下降。

Kerberos身份认证原理

Kerberos是一种基于对称密钥技术的身份认证协议,可以为其他服务提供身份认证功能,且支持SSO(即客户端身份认证后,可以访问多个服务,例如HBase和HDFS)。

Kerberos组成内容如下:

  • KDC:Kerberos的服务端程序。

  • Client:需要访问服务的用户(Principal),KDC和Service会对用户的身份进行认证。

  • Service:集成了Kerberos的服务。例如,HDFS、YARN和HBase。

Kerberos协议认证过程如下图所示。kerbers

Kerberos协议认证过程主要有以下两个阶段:

  • 第一阶段:KDC对Client进行身份认证

    当客户端用户(Principal)访问一个集成了Kerberos的服务之前,需要先通过KDC的身份认证。

    如果身份认证通过,则客户端会获取到一个TGT(Ticket Granting Ticket),后续就可以使用该TGT去访问集成了Kerberos的服务。

  • 第二阶段:Service对Client进行身份认证

    当用户获取TGT后,就可以继续访问Service服务。

    使用TGT以及需要访问的服务名称(例如HDFS)去KDC获取SGT(Service Granting Ticket),然后使用SGT去访问Service。Service会利用相关信息对Client进行身份认证,认证通过后就可以正常访问Service服务。

开启Kerberos

创建集群时,在软件配置页面的高级设置区域中,打开Kerberos身份认证开关。

Kerberos

说明

EMR-3.43.1及后续版本,EMR-5.9.1及后续版本支持选择KDC来源。

您可以选择以下KDC来源:

  • 本群自建KDC(默认):当前集群为您创建KDC。

  • 外部KDC:您外部自建的KDC,需要填写相关的信息,详情请参见EMR对接外部KDC

相关文档