LDAP添加 memberOf 模块
ldap的group是一种单独的类型objectClass: groupOfNames, 有个字段叫做member, value就是entry的dn。如此,实现了group-user的映射关系。
我们可以通过group来查询member,然而,并不能通过user直接获取到group。这在配置第三方系统的时候,没办法做group认证,比如airflow要求输入group filter, 默认通过memberof的属性值来获取group。gitlab如果要做分组进行登录限制要求输入 memberof 的属性值来获取 group。所以,理论上user应该有个字段叫做memberof,value是group。
大家可能会觉得dn已经很明显的分组了好吧,为啥还要这么复杂。事实上,ldap也提供了Reverse Group Membership Maintenance.由系统来维护二者的映射关系。即
-
group添加member的时候会自动给对应的entry添加memberof字段
-
当删除entry的时候,也会从group里删除member字段
添加 memberOf 模块
添加 add_module_group.ldif 文件 在不知道memberof.la文件在什么位置时(find / -name memberof.la)
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModulePath: /usr/lib64/openldap
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la
应用ldap 配置
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_module_group.ldif
添加 add_group_objectClass.ldif 文件,增加 objectClass 支持
dn: olcOverlay=memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
应用 ldap 配置
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_group_objectClass.ldif
新增 groupOfNames类型的组,add_group.ldif
dn: cn=gitlab-users,ou=Groups,dc=magic,dc=com
objectClass: groupOfNames
cn: gitlab-users
member: uid=xxx,ou=Users,dc=magic,dc=com
创建组
ldapmodify -a -H ldap://192.168.1.69:389 -D "cn=manager,dc=magic,dc=com" -w root123 -f addgroup.ldif
查看组
ldapsearch -H ldapi:/// -x -D "cn=manager,dc=magic,dc=com" -w root123 -b "ou=Groups,dc=magic,dc=com"
# gitlab-users, Groups, magic.com
dn: cn=gitlab-users,ou=Groups,dc=magic,dc=com
objectClass: groupOfNames
cn: gitlab-users
member: uid=xxx,ou=Users,dc=magic,dc=com
再来查看entry是否添加了memberof, ldapsearch当不指定字段的时候,默认返回全部强制字段,memberof不属于强制,需要单独指明
ldapsearch -H ldapi:/// -x -D "cn=manager,dc=magic,dc=com" -w root123 -b "ou=Users,dc=magic,dc=com" "(|(cn=xxx)(cn=gitlab*))" memberof
# extended LDIF
#
# LDAPv3
# base <ou=Users,dc=magic,dc=com> with scope subtree
# filter: (|(cn=xxx)(cn=gitlab*))
# requesting: memberof
#
# xxx, Users, magic.com
dn: uid=xxx,ou=Users,dc=magic,dc=com
memberOf: cn=gitlab-users,ou=Groups,dc=magic,dc=com
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
完成
更多推荐
所有评论(0)