温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢
1.文档编写目的
在前面Fayson介绍了《如何使用Shibboleth搭建IDP服务并集成OpenLDAP》,通过Shibboleth的IDP服务提供SAML认证服务,本篇文章主要介绍如何使用SAML配置Cloudera Manager的身份验证。下图为CM集成SAML认证流程:
1.环境准备
2.CM配置SAML及注册IDP
3.登录验证
4.总结
1.CM和CDH版本为5.13.1
2.Shibboleth IDP版本为3.3.2
2.环境准备
1.获取IDP服务的metadata.xml文件
在浏览器输入如下地址获取IDP服务的metadata.xml文件
http://ip-172-31-21-83.ap-southeast-1.compute.internal/idp/shibboleth
(可左右滑动)
在CM节点上执行如下目录将如上xml内容保存至shibboleth.xml文件中
[root@ip-172-31-16-68 ~]# mkdir -p /opt/cloudera/shibboleth2
[root@ip-172-31-16-68 ~]# cd /opt/cloudera/shibboleth2/
[root@ip-172-31-16-68 shibboleth2]#
[root@ip-172-31-16-68 shibboleth2]# curl http://ip-172-31-21-83.ap-southeast-1.compute.internal/idp/shibboleth -o shibboleth.xml
(可左右滑动)
将shibboleth.xml文件中有关ArtifactResolutionService和SingleSignOnService标签的Location地址由https修改为http
2.将IDP服务器上的秘钥文件同步至CM节点
将IDP服务器上/opt/shibboleth-idp/credentials/目录下的idp-backchannel.p12文件拷贝至CM节点,执行如下命令生成keystore文件
[root@ip-172-31-16-68 shibboleth2]# scp ip-172-31-21-83.ap-southeast-1.compute.internal:/opt/shibboleth-idp/credentials/idp-backchannel.p12 .
[root@ip-172-31-16-68 shibboleth2]# keytool -v -importkeystore -srckeystore idp-backchannel.p12 -srcstoretype PKCS12 -destkeystore temp.keystore -deststoretype JKS
(可左右滑动)
查看秘钥文件的前面信息
[root@ip-172-31-16-68 shibboleth2]# keytool -list -v -keystore temp.keystore -storepass 123456
(可左右滑动)
3.在/opt/cloudera目录下创建assigin_role.sh文件用户SAML登录成功后调用分配用户角色
[root@ip-172-31-16-68 ~]# vim /opt/cloudera/assigin_role.sh
#!/bin/bash
user=$1
echo $user > /tmp/assigin_role.log
if [ "$user" == "admin" ]; then
exit 0;
elif [ "$user" == "josh" ]; then
exit 5;
else exit -1
fi
(可左右滑动)
修改文件属主及执行权限
[root@ip-172-31-16-68 ~]# chown cloudera-scm. /opt/cloudera/assigin_role.sh
[root@ip-172-31-16-68 ~]# chmod +x /opt/cloudera/assigin_role.sh
[root@ip-172-31-16-68 ~]# ll /opt/cloudera/assigin_role.sh
(可左右滑动)
3.CM配置SAML
1.使用管理员登录CM,点击“管理”->“设置”
2.进入设置页面选择“外部身份验证”
3.在搜索目录输入SAML,配置相应的SAML信息
4.完成以上配置后,保存更新并重启cloudera-scm-server服务
[root@ip-172-31-16-68 ~]# systemctl restart cloudera-scm-server
(可左右滑动)
5.服务重启成功后在浏览器访问CM地址显示如下
由于CM服务未在IDP服务注册,所以访问有限制。
4.注册IDP
1.获取Cloudera Manager的metadata.xml文件,在IDP服务器上执行如下命令
[root@ip-172-31-21-83 ~]# cd /opt/shibboleth-idp/metadata/
[root@ip-172-31-21-83 metadata]# curl http://ip-172-31-16-68.ap-southeast-1.compute.internal:7180/saml/metadata -o cm_saml_metadata.xml
(可左右滑动)
2.编辑/opt/shibboleth-idp/conf/metadata-providers.xml,在MetadataProvider标签内增加如下配置
<MetadataProvider id="LocalMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="/opt/shibboleth-idp/metadata/cm_saml_metadata.xml"/>
(可左右滑动)
3.编辑/opt/shibboleth-idp/conf/attribute-filter.xml,将内容修改为如下配置
<AttributeFilterPolicy id="example1">
<PolicyRequirementRule xsi:type="Requester" value="https://ip-172-31-21-83.ap-southeast-1.compute.internal/idp/shibboleth" />
<AttributeRule attributeID="eduPersonPrincipalName">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
<AttributeRule attributeID="uid">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
<AttributeRule attributeID="mail">
<PermitValueRule xsi:type="ANY" />
</AttributeRule>
</AttributeFilterPolicy>
(可左右滑动)
主要修改PolicyRequirementRule属性的value值为EntityID值。
4.修改完以上配置后,重启Tomcat服务
[root@ip-172-31-21-83 bin]# sh shutdown.sh
[root@ip-172-31-21-83 bin]# sh startup.sh
(可左右滑动)
5.登录验证
1.在浏览器输入CM地址,重定向到IDP服务的登录界面
2.在登录界面输入LDAP用户账号和密码,注意我们再assigin_role.sh脚本中为admin和josh用户分配了角色,其它用户并没有分配角色,我们使用admin用户登录测试
点击登录跳转到如下界面
点Accept,登录成功跳转至CM主页
至此就完成了CM的SAML的身份验证配置。
6.总结
参考:
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_sg_external_auth.html
提示:代码块部分可以左右滑动查看噢 为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操