Hadoop生态圈-开启Ambari的Kerberos安全选项

              Hadoop生态圈-开启Ambari的Kerberos安全选项html

                                       做者:尹正杰 java

版权声明:原创做品,谢绝转载!不然将追究法律责任。node

 

 

  在完成IPA-Server服务的安装以后,咱们已经了解了他提供的基础功能和服务,领略了其Web控制台和CLI接口的便利性,可是这写特性好像并无提示平台的安全性啊。别着急,由于IPA-Server只是提供了诸如LDAP和Kerberos等重要的基础设施,只有将IPA于Ambari进行集成才能彻底显示处它的神威。关于部署IPA-Server的部署可参考我以前的笔记:“使用FreeIPA安装Kerberos和LDAP”。json

 

 

一.集成前的准备centos

   为了让Hadoop相关的服务切换到Kerberos认证模式,须要将Ambari与FreeIPA集成。在正式集成以前须要作一些准备工做,大体思路以下:首先须要在IPA中新增一个ambari组,专门用于管理ambari的相关操做,接着须要在全部的集群服务器上安装IPA-Client程序,最后须要在Ambari-Server所在的服务安装IPA-Admin管理端工具。接下来咱们开始介绍具体如何实施。浏览器

1>.新建Ambari组安全

  首先,在Ambar-Server所在的服务器上使用Kerberos命令登陆amdin帐户。经过远程登陆IPA-Server的方式新建一个名为“ambari-managed-principals”的组,具体操做以下所示: 服务器

[root@node101 ~]# kinit admin
Password for admin@YINZHENGJIE.COM: 
[root@node101 ~]# 
[root@node101 ~]# klist 
Ticket cache: KEYRING:persistent:0:0
Default principal: admin@YINZHENGJIE.COM

Valid starting       Expires              Service principal
12/13/2018 19:16:16  12/14/2018 19:16:14  krbtgt/YINZHENGJIE.COM@YINZHENGJIE.COM
[root@node101 ~]# 
[root@node101 ~]# ipa group-add ambari-managed-principals
---------------------------------------
Added group "ambari-managed-principals"
---------------------------------------
  Group name: ambari-managed-principals
  GID: 238000003
[root@node101 ~]# 

  建立成功后,咱们能够在IPA-Server的Web UI中查看,以下图所示:session

 

2>.安装IPA-Clientapp

[root@node103 ~]# yum -y install ipa-client
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
Package ipa-client-4.6.4-10.el7.centos.x86_64 already installed and latest version
Nothing to do                  #缘由是我已经安装完毕啦!
[root@node103 ~]#     
[root@node103 ~]# yum -y install ipa-client                    #安装客户端工具
[root@node102 ~]# ipa-client-install --domain=YINZHENGJIE.COM --server=node100.yinzhengjie.com --realm=YINZHENGJIE.COM --principal=admin@YINZHENGJIE.COM --enable-dns-updates    #开始安装客户端程序,参数意思下面会详细解释!
WARNING: ntpd time&date synchronization service will not be configured as
conflicting service (chronyd) is enabled
Use --force-ntpd option to disable it and force configuration of ntpd

Autodiscovery of servers for failover cannot work with this configuration.
If you proceed with the installation, services will be configured to always access the discovered server for all operations and will not fail over to other servers in case of failure.
Proceed with fixed values and no DNS discovery? [no]: yes    #注意,这里须要输入的是yes哟!
Client hostname: node102.yinzhengjie.org.cn
Realm: YINZHENGJIE.COM
DNS Domain: yinzhengjie.com
IPA Server: node100.yinzhengjie.com
BaseDN: dc=yinzhengjie,dc=com

Continue to configure the system with these values? [no]: yes    #注意,这里须要输入的是yes哟!
Skipping synchronizing time with NTP server.
Password for admin@YINZHENGJIE.COM:   #对面的小哥哥小姐姐往这里看,这里是须要你输入管理员的用户名密码,也就是你在安装IPA-Server时配置的密码!如今知道为何我当时如此强调要记住他的缘由了吧!
Successfully retrieved CA cert
    Subject:     CN=Certificate Authority,O=YINZHENGJIE.COM
    Issuer:      CN=Certificate Authority,O=YINZHENGJIE.COM
    Valid From:  2018-12-12 11:15:53
    Valid Until: 2038-12-12 11:15:53

Enrolled in IPA realm YINZHENGJIE.COM
Created /etc/ipa/default.conf
New SSSD config will be created
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm YINZHENGJIE.COM
trying https://node100.yinzhengjie.com/ipa/json
[try 1]: Forwarding 'schema' to json server 'https://node100.yinzhengjie.com/ipa/json'
trying https://node100.yinzhengjie.com/ipa/session/json
[try 1]: Forwarding 'ping' to json server 'https://node100.yinzhengjie.com/ipa/session/json'
[try 1]: Forwarding 'ca_is_enabled' to json server 'https://node100.yinzhengjie.com/ipa/session/json'
Systemwide CA database updated.
Hostname (node102.yinzhengjie.org.cn) does not have A/AAAA record.
Failed to update DNS records.
Missing A/AAAA record(s) for host node102.yinzhengjie.org.cn: 172.30.1.102.
Missing reverse record(s) for address(es): 172.30.1.102.
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
[try 1]: Forwarding 'host_mod' to json server 'https://node100.yinzhengjie.com/ipa/session/json'
Could not update DNS SSHFP records.
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring yinzhengjie.com as NIS domain.
Client configuration complete.
The ipa-client-install command was successful
You have new mail in /var/spool/mail/root
[root@node102 ~]# 

  安装客户端工具以后就能够执行上面的“ipa-client-install”命令安装客户端程序。在安装的过程当中会将其所在的服务器向IPA-Server的主机服务注册并加入到IPA域,同时也会向DNS服务注册。接下来咱们对上述配置的几个中待你参数进行必要的说明:

domain: IPA-Server安装时设置的域名

server:
  IPA-Server服务器的FQDN

realm:
  IPA-Server安装时设置的认证管理域

principal:
  IPA-Server安装时设置的管理员帐号


舒适提示:IPA-Clinet服务须要在全部集群服务器进行安装,重复上述的安装动做,只带全部的集群服务器节点都安装完成。

3>.安装IPA-Admin管理工具

  若是一个Ambari系统与IPA完成集成,那么经过Ambari管理的服务器都会被自动注册成IPA的主机。不只如此,Ambari内建的集群用户一样也会在IPA中建立相应的Kerberos用户,Ambari内全部已安装的Hadoop组件也都会在IPA中生成相应组件的服务。Ambari这种高度自动化的集成能力即是依靠IPA提供的IPA-Admin工具在背后默默完成的。因此还须要为Ambari安装这套管理工具,安装的方式很是简单,执行yum -y install ipa-admintools命令便可。

[root@node103 ~]# yum -y install ipa-admintools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.huaweicloud.com
Package ipa-client-4.6.4-10.el7.centos.x86_64 already installed and latest version
Nothing to do                  #这是因为我已经安装过啦!
[root@node103 ~]# 
[root@node103 ~]# yum -y install ipa-admintools          #我们直接安装便可!

4>.开启IPA集成选项 

  Ambari在默认状况下,IPA集成选项是隐藏配置,须要先将其开启才能使用。开启IPA集成选项很是简单,咱们只须要在ambari地址末尾加上exprimental便可,以下图所示,在浏览器输入:“http://node101.yinzhengjie.org.cn:8080/#/experimental”以后会来到一个扩展设置页面,找到名为“enableIpa”的选项,勾选而后保存。

 

 

二.集成IPA

1>.在Ambari界面只能启用“Kerberos”

  前置准备动做所有完成以后,以下图所示,打开浏览器进入Ambari的Admin菜单,能够发现目前Kerberos认证功能是处于关闭状态的,单击绿色的“Enable Kerberos”按钮进入开启Kerberos的设置导航页面。

  以下图所示,可能会出现“YARN日志和本地dir将被删除,ResourceManager状态将被格式化为启用/禁用Kerberos的一部分。”的相关提示,点击“Proceed Anyway”。

2>.确认检查项

  以下图所示,选择Exiting IPA以后,会出现4个确认检查项。以下:(这里主要观察第一个和第四个检查项,其实你若是按照个人博客来操做的话,就直接勾选吧~由于我已经帮你检查过啦!)

    2.1>.集群主机加入IPA域,主机注册在DNS中

    2.2>.为建立的主体或krbPasswordExpiry属性设置没有到期的密码策略是可写的

    2.3>.ipa管理的krb5.conf设置default_ccache_name=/tmp/krb5cc_%{uid}

    2.4>.Java加密扩展(JCE)已经安装在AMBARI服务器主机和集群中的全部主机上。

3>.设置Kerberos信息

   如今开始设置Kerberos的配置信息,以下图所示,按照安装IPA-Server时设置的信息填写KDC地址,管理员帐号和Realm等信息。填写完毕以后可使用“Test KDC Connection”按钮验证配置是否正确,正确无误以后单击“Next”按钮继续。

 

4>.安装和测试Kerberos客户端

   在设置完Kerberos信息以后,以下图所示,Ambari便会开始给全部被它管控的服务器节点安装Kerberos客户端程序并进行一些环境测试工做,安装并测试经过以后单击“Next”按钮继续。

  在这个安装步骤的同窗,若是遇到错误的话,咱们能够按照对应的方法查看日志,详情请参考:Ambari集成Kerberos报错汇总

5>.配置识别

  接着会跳转到配置确认页面,以下图所示。这里会让咱们确认Kerberos服务的一些配置信息,例如KDC服务的地址,KDC类型和Realm名称等等。

   舒适提示:下面我标示的这个信息,你们应该注意和你的域名加起来字符是否超过32个,若是超过了32个长度的话请修改,不然可能会报错!

6>.确认配置

   以下图所示,有意向很是重要的资料须要咱们存档。单击蓝色的“Doownload CSV”按钮能够下载一份名为“Kerberos.csv”的配置文件。

  下载“Kerberos.csv”的配置文件以后,请妥善保存这个CSV文件。以下图所示,它记录了Ambari与IPA集成后Ambari与其Hadoop相关服务生成的有所Kerberos帐号信息,包括用户名,类型和keytab文件路径等重要信息。

7>.完成Stop Services配置

8>.完成Kerberos Cluster配置

 

 

9>.完成Start and Test Services步骤(这个过程可能有点长,由于他须要启动服务嘛!)

 10>.Kerberos启动成功

 

 

三.测试Kerberos认证

  咱们还以HDFS为例,首先经过ssh登陆到安装了HDFS客户端的任意服务器。

1>.查看hdfs的数据信息    

[root@node101 ~]# hdfs dfs -ls /
18/12/18 14:03:33 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
ls: Failed on local exception: java.io.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]; Host Details : local host is: "node101.yinzhengjie.org.cn/172.30.1.101"; destination host is: "node101.yinzhengjie.org.cn":8020; 
[root@node101 ~]# 

  报错分析:

    你们是否是很好奇?结果没有返回任何查询数据,而是发生了异常错误,这是怎么回事呢?别着急,咱们一块儿分析一下:从上面的异常信息能够看到“ GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]”这样一条错误信息,代表当前操做系统请求找不到任何Kerberos的tgt凭证。这么一来报错信息就很明显了,这是因为HDFS服务如今已经开始使用Kerberos协议进行权限验证,因此使用Linux本地用户已经不能操做Hadoop集群中的任何服务了。换句话说,如今必须使用Kerberos用户登陆以后才能使用相关服务,这能证实Hadoop相关服务的Kerberos认证已经生效了。恭喜你,Kerberos是真的启用成功啦!

2>.登陆KDC服务器验证信息。

   如今转为使用Kerberos用户登陆,打开在集成IPA步骤中心下的Kerberos.cvs文件并找到HDFS服务对应的Kerberos用户和它的keytab保存路径等相关信息,以下图所示:

  如上图所示,咱们找到了keytab的路径(“/etc/security/keytabs/hdfs.headless.keytab”)和用户信息(“hdfs-yinzhengjie_cluster@YINZHENGJIE.COM”)。注意对应的主机(“node101.yinzhengjie.org.cn”)哈。咱们登陆KDC服务器,具体操做以下:

[root@node101 ~]# kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs-yinzhengjie_cluster@YINZHENGJIE.COM
[root@node101 ~]# 
[root@node101 ~]# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs-yinzhengjie_cluster@YINZHENGJIE.COM

Valid starting       Expires              Service principal
12/18/2018 14:03:43  12/19/2018 14:03:43  krbtgt/YINZHENGJIE.COM@YINZHENGJIE.COM
        renew until 12/25/2018 14:03:43
[root@node101 ~]# 

 3>.登陆KDC服务器成功后,继续查看hdfs的数据,发现成功啦! 

[root@node101 ~]# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: hdfs-yinzhengjie_cluster@YINZHENGJIE.COM

Valid starting       Expires              Service principal
12/18/2018 14:03:43  12/19/2018 14:03:43  krbtgt/YINZHENGJIE.COM@YINZHENGJIE.COM
        renew until 12/25/2018 14:03:43
[root@node101 ~]# 
[root@node101 ~]# hdfs dfs -ls /
Found 10 items
drwxrwxrwx   - yarn   hadoop          0 2018-12-08 03:46 /app-logs
drwxr-xr-x   - yarn   hadoop          0 2018-12-08 03:46 /ats
drwxr-xr-x   - hdfs   hdfs            0 2018-12-08 03:46 /hdp
drwxr-xr-x   - mapred hdfs            0 2018-12-08 03:46 /mapred
drwxrwxrwx   - mapred hadoop          0 2018-12-08 03:46 /mr-history
drwxr-xr-x   - hdfs   hdfs            0 2018-12-08 22:07 /ranger
drwxr-xr-x   - ranger hdfs            0 2018-12-09 00:53 /test
drwxrwxrwx   - hdfs   hdfs            0 2018-12-18 13:51 /tmp
drwxr-xr-x   - hdfs   hdfs            0 2018-12-07 16:12 /user
drwxrwxrwx   - hdfs   hdfs            0 2018-12-07 22:19 /yinzhengjie
[root@node101 ~]#  

  这一次终于能够正常返回数据了,一切也都符合设定的预期。将Ambari与IPA集成以后,大数据平台中全部的Hadoop相关服务都已经切换到使用Kerberos认证了。由此,Hadoop相关服务的安全隐患问题终于被完全消除。

相关文章
相关标签/搜索