管理Kerberized Hadoop集群
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
部署好Kerberized集群(也可以成为Kerberos集群)后,还有必要了解一下管理Kerberos的一些重要工具,这样便于大数据运维工程师后期维护集群。
一.Kerberos工具和守护程序概述
Kerberos提供了几个有关KDC的实用程序,如下所示: kdb5_util: 这是Kerberos数据库维护程序,它可以帮助创建Kerberos域并执行其他任务,如更新和查看keytab文件,导入和导出数据库信息等。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/kdb5_util.html kpasswd: 使用此实用程序可更改用户密码。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/user/user_commands/kpasswd.html klist: 使用此实用程序可查看客户端本地的Kerberos凭证缓存。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/user/user_commands/klist.html kadmin.local: 此管理实用程序用于直接访问Kerberos数据库。它启用存储Kerberos数据库的服务器的root用户来更新Kerberos数据库。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/kadmin_local.html kadmin: 此使用程序用于远程连接kdamind服务器并执行相应的操作。 kadmin和kadmin.local是Kerberos V5管理系统的命令行界面。它们提供几乎相同的功能。区别在于kadmin.local直接访问KDC数据库,而kadmin使用kadmind执行操作。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/kadmin_local.html kinit: 此Kerberos客户端使用Kerberos进行身份验证并检索TGT。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/user/user_commands/kinit.html kdestroy: 此命令运行用户清除其票据缓存。如下图所示,随着时间的推移,用户在其票据缓存中积累了一些过期票据,使用kdestroy命令可清理这些票据。一旦用户清除了票据缓存,用户就需要使用kinit命令再次进行身份验证。 建立新配置时(例如将票据由"nn/hadoop101.yinzhengjie.com@YINZHENGJIE.COM"更换为"root/admin@YINZHENGJIE.COM"),也可以使用kdestory命令。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/user/user_commands/kdestroy.html 除了上面提到的几个程序,我们还应该熟悉两个关键的Kerberos守护进程: kadmind: 是Kerberos管理服务器守护程序,它可以执行一些操作,例如添加新主体和更改密码。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/kadmind.html krb5kdc: 守护程序代表Kerberos AS,负责验证用户和授权票据。 博主推荐阅读: https://web.mit.edu/kerberos/krb5-latest/doc/admin/admin_commands/krb5kdc.html
二.使用Active Directory设置单向信任
一旦配置了Kerberos Hadoop集群,必须通过Kerberos将所有用户配置为用户主体(UPN)。如果有数百或者几十位用户,该怎么办?
已经在企业LDAP目录(如Active Director,简称"AD")中对用户进行了集中管理。我们只需在Hadoop集群中的AD域可KDC域之间建立单向信任关系即可。
服务主体(SPN),如yarn,hdfs和mapred可以在本地KDC内的Hadoop集群中定义。由于服务器主体会产生大量的流量,特别是当所有DataNodes一起启动时,最好不要在公司AD上设置它们,以避免服务拒绝服务。
通常,Hadoop利用Linux(或其他OS)系统中定义的用户组来验证Hadoop集群内的用户。但是Active Directory还使用安全组来管理用户凭据和角色。因此,可以在Active Directory中设置用户和角色管理。
当用户想要连接Hadoop集群时,他们首先联系AD,AD为用户发放Kerberos票据。使用存储在Hadoop集群中的KDC中定义的映射规则,将用户ID映射到适当的用户组。
用户和组信息在AD和Hadoop KDC之间是同步的,以使Hadoop守护程序能够从本地KDC检索组信息,而无需与AD联系。总结步骤如下:
(1)用户提供凭据进行AD验证;
(2)AD验证用户并向用户发放Kerberos票据;
(3)用户将Kerberos票据显示给Hadoop集群;
(4)Hadoop守护进程从AD获取组信息来授权用户访问。在用户ID和Kerberos主体不同的情况下,Hadoop从core-site.xml文件中查找用户ID与用户主体的映射。
这里需要注意的是上面的第2步骤。Hadoop如何接受AD颁发的票据?需要在AD和本地Hadoop KDC之间建立单向跨域信任关系,则所有Hadoop守护进程将信任AD发放的所有票据。
三.将AD于Hadoop集成以建立单向信任关系
以下简要说明如何将AD与Hadoop集成,并在AD和本地Hadoop KDC之间建立单向信任关系。请注意,其中一些任务由AD管理员执行。执行这些步骤之前,请确保将AD Kerberos域(企业域)添加到krb5.conf文件的<realms>下面。
未完待续......