基于OpenLDAP和Kerberos权限认证,在Ranger配置权限策略,实现三方集成。身份认证和权限管理之间又会产生什么火花~,下面将我们一步步揭开它们的神秘面。
在我们搜索时,常见的两张关于三方集成之间关系的图。可以说很清晰的阐述了三者之间的关系。【图片是借鉴的哈!】
基于图片逻辑,我们来进行实操讲解。
一、OpenLDAP创建用户,并同步到Ranger
1、环境准备OpenLDAP、Ranger
2、创建用户
2.1 安装vim插件apt-get update -y && apt-get install -y vim
2.2 vim用户test.ldif文件
vim test.ldif
dn: [email protected],cn=CYBEROPS.DATAC.COM,cn=kerberos
,dc=datac,dc=com
krbLoginFailedCount: 0
krbPrincipalName: [email protected]
krbPrincipalKey:: MIIBkqADAgEBoQMCAQGiAwIBAaMDAgEBpIIBejCCAXYwRKAHMAWgAwIBAKE5
MDegAwIBEaEwBC4QADDwBeuV42XUcM7rYb5HXj6pLFSQVWuHHuQwZkgBNssStNEKTaWLR1b71KSpM
ESgBzAFoAMCAQChOTA3oAMCARehMAQuEAB9G42BtqYIdZnh9LZ5/RGcjOvKNEIWLj4LSBanqM0EuB
ObXruB5/3LrfjNDjBUoAcwBaADAgEAoUkwR6ADAgEaoUAEPiAADgqlx9kQ1XxqrOI64WQ+MPg6nW7
sA7HqKBGOJf+vMFmeHQRq8WhMeMXGSMWlxzmrvlGU6tJIxC56NJg7MESgBzAFoAMCAQChOTA3oAMC
ARmhMAQuEAA7QNjXfhzks4k2TVFAtPfve/krsyGUpqO5ejcBYQQE+psrTsgSFZObF3pS8TBMoAcwB
aADAgEAoUEwP6ADAgEQoTgENhgAWfnJn9NDBD20Dso7vAgBJ0DcGlIwF5MBwzv8UyAtrXvsdUxgv5
FTYz6N01sxOrWKqvpyHA==
krbLastPwdChange: 20221020055012Z
krbExtraData:: AAKU4VBjcm9vdC9hZG1pbkBDWUJFUk9QUy5EQVRBQy5DT00A
krbExtraData:: AAgBAA==
objectClass: krbPrincipalAux
objectClass: krbTicketPolicyAux
objectClass: person
cn: test
sn: test01
userPassword: 123456
description: 测试用户是否同步
# 将数据拷贝到组件opt下面:
kubectl cp test.ldif k8s的命名空间/ldap的集群节点:/opt/
2.3 向Ldap中添加用户数据
./ldapadd -x -D cn=admin,dc=datac,dc=com -W -f /opt/test.ldif
#进入kerberos下查看用户
cd /opt/kerberos/sbin/
./kadmin.local
#查看添加用户
list_principals
2.4 在Ranger页面查看用户
# 如果用户不存在,可能是ranger-userSync未到同步时间,可查看上次同步时间
#如果未同步,则可以重启ranger-userSync服务:
#进入ranger的Pod内执行命令: ranger-usersync restart
2.5确认Ranger和OpenLDAP是否都 已经存在用户
#在OpenLDAP的web页面查看用户已经同步成功
二、Kerberos创建用户,并同步到OpenLDAP
1、环境准备 Kerberos、Ranger
2、由于我已经安装OpenLDAP环境我就不赘述了,从Kerberos客户端安装开始记录
2.1安装Kerberos客户端,使用如下命令:
yum install krb5-workstation
2.2 配置kerberos的客户端
获取kerberos的配置文件krb5.conf。
方式一:从kerberos的服务端进行获取
# krb5.conf配置文件的位置:/opt/kerberos/etc/krb5.conf
# 使用kubectl cp 拷贝到k8s节点的物理机上,再拷贝到测试用的服务器的/etc/krb5.conf
# 或者安装 openssh-client,使用scp 直接拷贝krb5.conf文件到指定的服务器上;
注意:krb5.conf文件realms的配置项,修改为kerberos服务端外部可访问的ip:端口
方式二:从HDFS的namenode中获取
# HDFS是使用docker部署的,且HDFS中已经集成了kerberos的,可以进入到namenode的容器中
docker exec -it 容器名称 /bin/bash
# 将/etc/krb5.conf拷贝到对应的主机上,可以使用scp命令
scp /etc/krb5.con [email protected]:/etc/krb5.conf
注意:从docker容器内获取kerberos的配置文件时,无需做任何修改
scp命令无法使用需安装插件,命令如下:
apt-get update -y && apt-get install -y openssh-client
2.3创建kerberos账号
# 进入到Kerberos服务端,进行创建账号
# 进入kerberos的命令交互页面
sbin/kadmin.local
# 添加账号
addprinc test
# 查看账户信息
list_principals
# 生成账号对应keytab文件
sbin/kadmin.local -q "xst -norandkey -k keytab文件位置 test/@XX.XX"
注意事项
kerberos验证,因此需要配置组件的主机名和主机ip映射;
ranger时,创建数据库/数据表/目录/文件等所属用户拥有对该项的所有操作权限;
ip的hosts映射
3、Kerberos用户添加成功,同步到OpenLDAP
在三方集成的基础上,可以进行接入大数据组件(Zookeeper、Hadoop、Hive、Hbase、Yarn、Flink、Kafka、Spark、Hue),从而达到使用Ranger + Kerberos +各组件实现用户、权限、认证的控制。