openldap 搜索 acl

openldap 搜索 acl

我正在尝试为 OpenLDAP 编写访问控制,以允许用户使用某个基本 DN 进行搜索,但只能从某些子 DN 获得结果。我尝试过很多不同的规则,但无法让它工作。我不确定这是否可行。

例如:
我有一个 dn 为 的用户uid=testuser,ou=people,dc=example,dc=com。我希望此用户能够使用 的基数进行搜索dc=example,dc=com并返回 中的条目ou=people,dc=example,dc=com。 下还有许多其他子 OU dc=example,dc=com,但只ou=people应返回 中的条目(作为奖励,我只希望返回某些属性)。

这能做到吗?

答案1

终于搞明白了。要让它工作,需要很多不同的部分。

首先是 2 个 ACL 规则:

Access to dn.base="dc=example,dc=com" by \
  dn.base="uid=testuser,ou=people,dc=example,dc=com" \
  search

Access to dn.one="ou=people,dc=example,dc=com" \
  attrs=entry,uid,cn,sn,gecos,mail,uidNumber,gidNumber by \
  dn.base="uid=testuser,ou=people,dc=example,dc=com" \
  read
  • 规则的顺序并不重要,因为我们使用dn.base“access to”作为第一条规则。如果是“dn.children”,顺序就很重要了。
  • 第一条规则授予uid=testuser搜索权限dc=example,dc=com,但仅此而已。如果没有第二条规则,返回的结果只是搜索是否匹配,而不是匹配了什么。
  • 第二条规则授予子级一级的uid=testuser读取权限( )。搜索能力包含在读取权限中。ou=peopledn.one
  • 属性entry在第二条规则中很重要,因为执行搜索需要访问此属性才能匹配条目。
  • 一旦条目匹配,搜索将返回所有允许的其他属性。

相关内容