专栏首页Hadoop实操0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证

0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

前面Fayson介绍了《0558-01-如何在Redhat7上安装FreeIPA》和《0559-02-如何在Redhat7上安装FreeIPA的客户端》,那如何在CDH集群中使用?通过Cloudera Manager可以为我们的CHD集群启用Kerberos认证,在前面的文章《如何为CDH集成Active Directory的Kerberos认证》和《如何在CDH集群启用Kerberos》介绍了集成不同服务的Kerberos认证,本篇文章Fayson主要介绍如何将CDH集成的KDC服务切换至FreeIPA下的Kerberos认证。

  • 测试环境

1.RedHat7.3

2.FreeIPA4.6.4

3.CM和CDH版本为5.15.0

2

环境准备

1.确认CDH机器所有节点已安装了FreeIPA Client,可以参考Fayson上一篇文章《02-如何在Redhat7上安装FreeIPA的客户端

2.安装完成FreeIPA客户端后,修改集群所有节点krb.conf文件

3.在FreeIPA上创建一个cloudera-role角色并赋予权限

点击添加按钮添加一个cloudera-role角色

点击“编辑和编辑”进入角色编辑界面

点击“特权”菜单,为该角色授权

完成角色授权

4.在FreeIPA上创建一个cloudera-scm的用户

点击“角色”菜单,为cloudera-scm用户添加角色

完成cloudera-scm用户的创建

3

自定义脚本生成keytab

相较于之前的两片文章,本篇文章会复杂一些,因为CDH默认没有提供FreeIPA的集成,所以需要参考官网的文章使用自定义脚本生成keytab,地址如下:

https://www.cloudera.com/documentation/enterprise/latest/topics/sg_keytab_retrieval_script.html

1.在Cloudera Manager服务所在节点上创建一个脚本目录/opt/cloudera/freeipa

该目录主要存放自定义导出keytab脚本。

2.进入/opt/cloudera/freeipa目录执行如下命令导出cloudera-scm用户的keytab文件

[root@cdh01 freeipa]# cd /opt/cloudera/freeipa/

[root@cdh01 freeipa]# kinit cloudera-scm

[root@cdh01 freeipa]# ipa-getkeytab -p cloudera-scm -k cloudera-scm.keytab -s cdh04.fayson.net

[root@cdh01 freeipa]# chown cloudera-scm. cloudera-scm.keytab 
[root@cdh01 freeipa]# ll

3.在/opt/cloudera/freeipa目录下创建getkeytabs.sh文件内容如下

[root@cdh01 ~]# cd /opt/cloudera/freeipa/
[root@cdh01 freeipa]# vim getkeytabs.sh
#set -e
set -x

CMKEYTAB="/opt/cloudera/keytab/cloudera-scm.keytab"
CMUSER="cloudera-scm"
REALM="FAYSON.NET"
IPASERVER="cdh04.fayson.net"

DEST="$1"
FULLPRINC="$2"

# Passwd based kinit
#echo PASSWORD | kinit $CMUSER@$REALM

# Or per keytab (keytab needs to be generated before)
kinit -k -t $CMKEYTAB $CMUSER@$REALM

PRINC=$( echo $FULLPRINC | sed "s/\@$( echo $REALM )//" )

echo $PRINC

echo Retrieving keytab for $FULLPRINC for $DEST

echo Checking for existing service principle
if ipa service-find $FULLPRINC; then
        echo Service principle found
else
        echo Service principle not created, creating
        ipa service-add $FULLPRINC --pac-type=NONE
fi

echo Ensuring service allows
ipa service-allow-create-keytab --users=$CMUSER $FULLPRINC
ipa service-allow-retrieve-keytab --users=$CMUSER $FULLPRINC

if ipa service-show $FULLPRINC | grep 'Keytab' | grep 'False'; then
        echo Creating keytab for $FULLPRINC for $DEST
        ipa-getkeytab -s $IPASERVER -p $PRINC -k $DEST -e rc4-hmac,aes256-cts,aes128-cts
else
        echo Retrieving keytab for $FULLPRINC for $DEST
        ipa-getkeytab -r -s $IPASERVER -p $PRINC -k $DEST
fi

chmod 600 $DEST

kdestroy

exit 0;

4.修改getkeytabs.sh脚本属主及执行权限

[root@cdh01 freeipa]# pwd

[root@cdh01 freeipa]# chown cloudera-scm. getkeytabs.sh 

[root@cdh01 freeipa]# chmod +x getkeytabs.sh 

注意:getkeytabs.sh脚本中CMKEYTAB、CMUSER、REALM、IPASERVER参数修改为自己相应环境的配置。

4

CDH切换Kerberos认证至FreeIPA

1.停止集群所有服务,CDH和CMS的所有服务

2.进入“管理”->“设置”界面,通过过滤类别筛选Kerberos相关配置

配置FreeIPA相关配置信息

3.配置自定义脚本地址

4.完成keytab生成自定义脚本的配置后,到Kerberos凭据管理界面,重新生成所有服务的Kerberos信息

命令运行成功,以重新生成了所有服务的keytab文件

5.登录FreeIPA也可以看到生成的所有服务的Principal

5

Kerberos集成验证

1.通过CM启动集群所有服务

2.提交一个MapReduce作业测试

作业执行成功

6

总结

1.CDH集成FreeIPA的Kerberos,需要在集群的所有节点安装FreeIPA Client,安装客户端时会默认的配置Kerberos信息到每个节点的/etc/krb5.conf文件中。

2.由于CDH默认不支持集成FreeIPA,因此在集成FreeIPA的Kerberos时需要自定义生成keytab脚本

3.在CM中配置了自定义生成keytab脚本后,会忽略所有的Kerberos的配置信息,以脚本为主生成keytab文件

4.在FreeIPA上我们需要创建一个cloudera-scm用户并授权Service和DNS服务的管理员权限,使cloudera-scm用户有创建服务账号和添加DNS解析的权限。

5.在getkeytabs.sh脚本中,ipa-getkeytab导出keytab时指定了加密类型为rc4-hmac,否则在启动Zookeeper服务时会报错。

6.在生成keytab报错时可以将set -e参数开启,shell脚本运行时会打印详细的日志信息,便于定位脚本执行到哪一步报错,但是ipa service-allow-create-keytab命令成功执行过后,重复执行会导致脚本无法运行成功,除调试外将set -e屏蔽。

7.特别注意需要将FreeIPA默认的krb5.conf配置文件中default_ccache_name = KEYRING:persistent:%{uid}参数注释掉,否则会导致无法访问HDFS服务提交作业等。

参考:

https://mapredit.blogspot.com/2016/10/freeipa-and-hadoop-distributions-hdp-cdh.html

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 系统磁盘优化——"/var/spool/postfix/maildrop"

    最近某服务器磁盘空间告警,在排查过程中发现"/var/spool/postfix/maildrop"目录下堆积了很多小文件,起初想直接删除,但是使用rm删除是提...

    阿dai学长
  • Keepalived+LVS(DR)集群之一键部署rs机器路由转发

    且dir机器与rs机器均关闭防火墙(SELinux&firewalld)并安装rsync工具。

    阿dai学长
  • shell跳板机(较复杂) 转

    使用本菜单选项的方法:将上面jumpserver.sh脚本中“登录界面”下的参数换成下面的参数即可。

    阿dai学长
  • 你真的搞懂logrotate了吗? 原

    centos系统中默认安装logrotate,logrotate主配置文件:/etc/logrotate.conf,其中定义了系统默认的logrotate规则,...

    阿dai学长
  • Docker容器虚拟化(四)—dockerfile的格式与应用(with实例)

    RUN和CMD看起来挺像,但是CMD用来指定容器启动时用到的命令,只能有一条,如: CMD ["/bin/bash", "/usr/local/nginx/s...

    阿dai学长
  • 告警系统主脚本、主配置文件、监控项脚本 原

    作用: 主脚本作为一个入口,判断某服务或项目是否需要监控调用需要监控的项目的子脚本。

    阿dai学长
  • shell 搭建简易跳板机 原

    即,此时可以在jumpserver机器执行脚本/usr/local/sbin/jumpserver.sh登录到各机器了。。。

    阿dai学长
  • 错误cron导致linux宕机 原

    MAILTO是针对用户配置的,于是将该参数加入/var/spool/cron/internal下;

    阿dai学长
  • Centos7.3 安装zabbix3.4 原

    首先需要了解的是zabbix是一种C/S架构的监控工具,即服务端(Server)需要安装zabbix-server用于处理各种监控及告警信息,客户端(Clien...

    阿dai学长
  • expect 构建分发文件系统 原

    需求背景: 对于大公司而言,肯定时不时会有网站或者配置文件更新,而且使用的机器肯定也是好多台,少则几台,多则几十甚至上百台。所以,自动同步文件是至关重要的。

    阿dai学长

扫码关注云+社区

领取腾讯云代金券