管理Kerberized Hadoop集群

            管理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>下面。

  未完待续......

 

posted @ 2020-09-19 00:50  JasonYin2020  阅读(618)  评论(0编辑  收藏  举报