docker部署的openldap 使用memberOf属性分组用户

447 阅读2分钟

前言

最近在整合gitlab,nexus+ldap登录时发现用如果账号需要分组或者分部门的话需要利用memberOf属性才能达到效果,记录一下添加memberOf属性的过程~~~

环境:

登录openLdap,创建一个用户组,存储所有用户

image.png

image.png

image.png

image.png

image.png

image.png image.png image.png image.png 提交,用户添加成功(填写的属性,rdn选择cn,填写 cn,sn,password,username)

至此用户组和用户添加完成,接下来添加相关的memberOf属性

查看是否配置了memberOf模块 docker exec -it openldap_service ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config | grep -i module,存在该条目则已开启

image.png 如果未配置,进入cd /data/openldap/database 创建文件 vim add_memberof_module.ldif 内容如下

dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModulePath: /usr/lib/ldap <------这里是你的ldap的lib库的位置

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la

执行 docker exec -it openldap_service ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /var/lib/ldap/add_memberof_module.ldif

groupOfNames 类型配置memberOf属性

查看mdb库的下标 docker exec -it openldap_service ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase | grep mdb

image.png 进入目录 /data/openldap/database 创建文件 vim add_groupofnames_module.ldif 内容如下

dn: olcOverlay=memberof,olcDatabase={1}mdb,cn=config <------我这里是{1}mdb 
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member     
olcMemberOfMemberOfAD: memberOf

执行 docker exec -it openldap_service ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /var/lib/ldap/add_groupofnames_module.ldif 出现以下提示添加成功

image.png

创建类型为groupOfnames 类型的分组(部门)

image.png image.png image.png image.png image.png 查看用户是否已有memberOf属性 docker exec -it openldap_service ldapsearch -H ldapi:/// -Y EXTERNAL -LLL -b "ou=users,dc=xxx,dc=com" memberOf (指令中 -b 的值为需要搜素的基础条目) image.png 到此为止已成功为groupOfnames添加memberOf属性,后续和其他组件整合时就可以通过memberOf属性筛选组成员