正常情况下,登录一个 Ldap 用户,可以看到整个树形结构。但在一些情形下,我们希望如 dc=ali,dc=example,dc=com 仅能够被 “ali” 这个节点下的用户看到,而“dc=ali” 这个节点下的用户又仅能访问本节点下的信息,而无法看到如 dc=huawei 节点下的信息。即使 dc=baidu, dc=ali, dc=huawei 之间具有隔离性,各个公司仅能访问自己公司的节点下的 subtree, 而其他公司无法访问或是被访问。
因此要使用 Ldap 中的 ACL 进行控制,在此给出该情形的 ACL 示例。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v79dkZu4-1673233052114)(null)]](https://i-blog.csdnimg.cn/blog_migrate/be4df9fefbf9e4b29f3c55dc7aa07649.png)
# acl.ldif 内容
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to attrs=userPassword
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by self write
by * none
olcAccess: to dn.regex="^cn=system_user,ou=system_user"
by dn="cn=admin,dc=example,dc=com" write
by * read
olcAccess: to dn.regex="dc=([^,]+),dc=example,dc=com$"
by dn.regex="cn=system_user,ou=system_user,dc=$1,dc=example,dc=com" write
by dn.regex="dc=$1,dc=example,dc=com$" read
by * none
olcAccess: to *
by dn="cn=admin,dc=example,dc=com" write
by anonymous auth
by self write
by * read
acl.ldif 内容解读:
内容中第一个 olcAccess 设置的密码规则;
第二个 olcAccess 设置的各个公司下的 cn=system_user,ou=system_user…不可更改 ,仅超管可改;
第三个 olcAccess 设置的各个公司用户隔离,仅看到本公司下的节点;
第四个 olcAccess 设置的所有属性的可见性,匿名用户隔离;
# 最后通过 ldapmodify 指令讲 acl 控制加载到 ldap 配置中
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f acl.ldif
文章讲述了如何通过Ldap的ACL设置,实现不同节点如dc=ali,dc=example,dc=com等之间的访问隔离,确保每个节点下的用户只能访问其所在公司的信息,不能访问其他公司数据。示例展示了具体配置文件acl.ldif的内容和解析,包括密码规则、系统用户权限以及各公司用户的访问限制。
3256

被折叠的 条评论
为什么被折叠?



