开发者社区> light-rain> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Kerberos使用OpenLDAP作为backend

简介: 本文介绍Kerberos对接OpenLDAP, 使用OpenLDAP作为principal数据库
+关注继续查看

作者:云魄,阿里云E-MapReduce 高级开发工程师,专注于流式计算,Spark Contributor,开源爱好者


本文介绍Kerberos对接OpenLDAP, 使用OpenLDAP作为principal数据库。

1.前置

  • 操作系统为Centos
  • 安装OpenLDAP,并设置了管理员账户和相关的组,可参考OpenLDAP官网

例如ldap的host为localhost,port为10389,添加的管理账户的dn为cn=Manager,dc=example,dc=com

  • 安装Kerberos5

2.添加schema

如果已经添加过,忽略该步骤

2.1添加kerberos schema

以krb5-server-ldap-1.15.1版本为例做说明

  • 获取kerberos.schema

通常kerberos.schema和kerberos.ldif位于路径

/usr/share/doc/krb5-server-ldap-1.15.1

如果该路径下没有,执行

yum install krb5-server-ldap
  • 生成kerberos.ldif

OpenLDAP无法识别/usr/share/doc/krb5-server-ldap-1.15.1中的kerberos.ldif,需要重新生成。例如在/root/tmp下生成

cp /usr/share/doc/krb5-server-ldap-1.15.1/kerberos.* /etc/openldap/schema/
echo "include /etc/openldap/schema/kerberos.schema" > /root/tmp/schema_convert.conf
slaptest -f /root/tmp/schema_convert.conf -F /root/tmp

编辑生成的/root/tmp/cn=config/cn=schema/cn={0}kerberos.ldif文件,将其中的

dn: cn={0}kerberos
cn: {0}kerberos

替换为

dn: cn=kerberos,cn=schema,cn=config
cn: kerberos

去掉结尾的

structuralObjectClass: olcSchemaConfig
entryUUID: ...
creatorsName: cn=config
createTimestamp: ...
entryCSN: ...
modifiersName: cn=config
modifyTimestamp: ...

添加kerberos.schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /root/tmp/cn=config/cn=schema/cn={0}kerberos.ldif

2.2添加其他schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

3.添加kadmin、krb5kdc账户

3.1创建kadmin、krb5kdc账户

以添加kadmin为例,addkadmin.ldif如下

dn: cn=krbadmin,dc=example,dc=com
cn: krbadmin
sn: krbadmin
objectClass: inetOrgPerson
userPassword: ${password}
uid: krbadmin

其中,${password}为账户密码,根据实际设置
执行命令

ldapadd -H ldap://localhost:10389 -D cn=Manager,dc=example,dc=com -f addkadmin.ldif

3.2设置权限

addaccess.ldif如下

dn: olcDatabase={2}hdb,cn=config
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn.exact="cn=Manager,dc=example,dc=com" write by dn.exact="cn=krbadmin,dc=example,dc=com" write by dn.exact="cn=krb5kdc,dc=example,dc=com" read  by self =xw by anonymous auth by * none
-
add: olcAccess
olcAccess: {1}to * by dn.exact="cn=Manager,dc=example,dc=com" write by dn.exact="cn=krbadmin,dc=example,dc=com" write by dn.exact="cn=krb5kdc,dc=example,dc=com" read by self read by users read by * none

执行命令

ldapmodify -Y EXTERNAL -H ldapi:/// -f addaccess.ldif

4.设置kerberos

4.1生成stash文件

例如在/root下生成ldap.stash文件

kdb5_ldap_util stashsrvpw -f /root/ldap.stash "cn=krbadmin,dc=example,dc=com"
kdb5_ldap_util stashsrvpw -f /root/ldap.stash "cn=krb5kdc,dc=example,dc=com"

4.2配置kerberos

  • 将其中的EXAMPLE.COM替换为真实的域名。此处以EXAMPLE.COM做说明
  • 添加database_module

在[realms]下添加database_module = LDAP,例如

3


文件末尾新添加如下内容

[dbdefaults]
        ldap_kerberos_container_dn = cn=krbContainer,dc=example,dc=com

[dbmodules]
        LDAP = {
                db_library = kldap
                ldap_kdc_dn = "cn=krb5kdc,dc=example,dc=com"
                ldap_kadmind_dn = "cn=krbadmin,dc=example,dc=com"
                ldap_service_password_file = /root/ldap.stash
                ldap_servers = ldapi:/// ldap://localhost:10389
                ldap_conns_per_server = 5
        }

4.3创建realm

执行如下命令

kdb5_ldap_util -D  cn=krbadmin,dc=example,dc=com create -subtrees dc=example,dc=com -r EXAMPLE.COM -s -H ldap://localhost:10389

4.3启动kerberos

systemctl start krb5kdc kadmin

如已启动,需重启krb5kdc和kadmin。

5.测试

在kadmin.local中添加kerberos principal,例如添加test

1

执行命令slapcat -b "dc=example,dc=com",在OpenLDAP中可以查到该dn

2

可以使用如下命令查看非kerberos uid

ldapsearch -w xxx -D "cn=Manager,dc=example,dc=com" -H ldap://localhost:10389 -b dc=example,dc=com '(&(!(krb5PrincipalName=))(uid=))' | grep 'dn: uid=.,dc=example,dc=com' | sed 's/dn: uid=(.),dc=example,dc=com/1/g'

阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区近万人Spark技术同学在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!

image.png

对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
image.png

Apache Spark技术交流社区公众号,微信扫一扫关注

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
CDH5.3配置Kerberos+LDAP+Sentry记录
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1010885678/article/details/52448478 系统环境说明 操作系统:Centos6.
2551 0
ldap快速配置
1.【yum lamp环境】 yum  -y install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-common php-gd php-mbstring php-mcrypt php-xml php-devel 2.
621 0
+关注
文章
问答
来源圈子
更多
E-MapReduce是构建于阿里云ECS弹性虚拟机之上,利用开源大数据生态系统,包括Hadoop和Spark,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。加入钉钉群聊阿里云E-MapReduce交流2群,点击进入查看详情 https://qr.dingtalk.com/action/joingroup?code=v1,k1,cNBcqHn4TvG0iHpN3cSc1B86D1831SGMdvGu7PW+sm4=&_dt_no_comment=1&origin=11
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载