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


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文件


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


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


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


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


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


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


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


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


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


完成角色授权


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_06


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


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


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


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


完成cloudera-scm用户的创建


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


3

自定义脚本生成keytab


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

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


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


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_10


该目录主要存放自定义导出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


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_11


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;


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


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


[root@cdh01 freeipa]# pwd

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

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


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_13


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


4

CDH切换Kerberos认证至FreeIPA


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


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_14


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


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


配置FreeIPA相关配置信息



0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_16

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


3.配置自定义脚本地址


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_18


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


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


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


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


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


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


5

Kerberos集成验证


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


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


2.提交一个MapReduce作业测试


0561-04-如何将CDH集成的KDC迁移至FreeIPA的Kerberos认证_自定义_23


作业执行成功


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


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干货,欢迎转发和分享。

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

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操