Hadoop使用kerberos进行用户与服务认证。kerberos是第三方认证机制,需要借助kerberos server完成认证。

Keberos Server又称为Key Distribution Center,或者是KDC,它主要包括3个部分:

  • 存储用户与服务的数据库

  • AS(Authentication Server):执行初始认证,签发TGT(Ticket Granting Ticket)

  • TGS(Ticket Granting Server):签发基于TGT的service tickets

当用户(Principal)请求AS认证后,AS会返回TGT(通过用户kerberos密码加密),用户可以在本地使用kerberos密码解密TGT。

在TGT失效之前,用户可以使用TGT从TGS获取service tickets,从而让用户访问服务。

但是cluster resource(hosts或者services)不能提供密码,因此需要使用keytab,其中包含resource(Principal)的认证凭证。

而由Kerberos server控制的hosts,users,services集合称为realm。

概念 说明
Key Distribution Center(KDC) 在kerberos环境中,认证信赖源
Kerberos KDC Server 主机或服务器,充当KDC服务
Kerberos Client 与KDC认证的集群中的任何机器
Principal 与KDC认证的user或service的名字
Keytab 包含一个或多个principal及key的文件
Realm 包含KDC及Clients的kerberos network
KDC Admin Account Ambari使用的管理员账号,用来在KDC创建principal,生成keytab

Principal

Hadoop中的每个服务或子服务都必须有自己的principal。域中的principal的名称包括:主名与实例名,而实例名通常是运行服务的主机的FQDN。服务需要借助keytab获取ticket,而keytab通常是从Kerberos database获取,并保存在本地的安全目录。

Principal及Keytab的命名惯例

Asset 惯例 示例
Principals $service_component_name/[email protected] nn/[email protected]
Keytabs $service_component_abbreviation.service.keytab /etc/security/keytabs/nn.service.keytab

除了Hadoop Service Principals,Ambari自身也需要Ambari Principals,从而对服务进行smoke check,或者是alert health check,或者是返回cluster组件的metrics。

Ambari Principals 说明
Smoke及Headless Service用户 Ambari用来执行smoke check及alter health check
Ambari Server user 当集群启动kerberos,组件的REST端点需要SPNEGO认证

【参考】

1。ambari:kerberos:https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.4/bk_security/content/_kerberos_overview.html

results matching ""

    No results matching ""