1.8. 目标规则的高级使用
通过组合多个关键字,您可以创建复杂的目标规则。本节提供了目标规则的高级用法示例。
1.8.1. 委派权限以创建和维护组
在某些情况下,管理员希望将权限委派给其他帐户或组。通过组合目标关键字,您可以创建解决此请求的安全访问控制指令(ACI)。
例 1.7. 委派权限以创建和维护组
要启用 uid=user,ou=People,dc=example,dc=com" 帐户以在 ou=groups,dc=example,dc=com 条目中创建和更新组:
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (target = "ldap:///cn=*,ou=Groups,dc=example,dc=com")
(targattrfilters="add=objectclass:(|(objectclas=top)(objectclass=groupOfUniqueNames)))
(targetattr="cn || uniqueMember || objectClass")
(version 3.0; acl "example"; allow (read, search, write, add)
(userdn = "ldap:///uid=test,ou=People,dc=example,dc=com");)
为安全起见,前面的示例会添加某些限制。uid=test,ou=People,dc=example,dc=com
用户:
-
可以创建必须包含
top
和groupOfUniqueNames
对象类的对象。 -
无法添加额外的对象类,如
account
。例如,如果您使用 Directory 服务器帐户进行本地身份验证,这可以防止使用无效用户 ID 创建新用户,如root
用户的0
。
targetfilter
规则确保 ACI 条目只适用于包含 groupofuniquenames
对象类和 targetattrfilter
规则的条目,确保无法添加其他对象类。
1.8.2. 将条目和属性都作为目标
目标
根据可分辨的名称(DN)控制访问权限。但是,如果您将其与通配符和 targetattr
关键字结合使用,您可以同时处理条目和属性。
例 1.8. 将条目和属性都作为目标
要启用 uid=user,ou=People,dc=example,dc.com
用户,在 dc=example,dc=com
子树中读取和搜索所有组织单元中的组的成员:
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (target="ldap:///cn=*,dc=example,dc=com")(targetattr="member" || "cn") (version 3.0;
acl "Allow uid=user to search and read members of groups";
allow (read, search) (userdn = "ldap:///uid=user,ou=People,dc=example,dc.com");)
1.8.3. 针对与过滤器匹配的条目的特定属性
如果您在两个目标规则中组合 targetattr
和 targetfilter
关键字,您可以针对与过滤器匹配的条目的特定属性。
例 1.9. 针对与过滤器匹配的条目的特定属性
要允许 cn=Engineering Admins,dc=example,dc=com
组的成员修改 jpegPhoto
和 manager
属性,并将 department
属性设置为 Engineering
,请输入:
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "jpegPhoto || manager")
(targetfilter = "(department=Engineering)") (version 3.0;
acl "Allow engineering admins updating jpegPhoto and manager of department members";
allow (write) (groupdn = "ldap:///cn=Engineering Admins,dc=example,dc.com");)
1.8.4. 以单一目录条目为目标
要针对单个目录条目,请组合 targetattr
和 targetfilter
关键字。
例 1.10. 以单一目录条目为目标
要启用 uid=user,ou=People,dc=example,dc=com 用户,以便在 ou=Engineering,dc=example,dc=com 条目中读取和搜索 ou=Engineering,dc=example,dc=com 条目:
# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: ou=Engineering,dc=example,dc=com
changetype: modify
add: aci
aci: (targetattr = "ou || cn")
(targetfilter = "(ou=Engineering)") (version 3.0;
acl "Allow uid=user to search and read engineering attributes";
allow (read, search) (userdn = "ldap:///uid=user,ou=People,dc=example,dc.com");)
要使前面的示例仅限制为目标,ou=Engineering,dc=example,dc=com
条目,ou=Engineering,dc=example,dc=com
中的 sub-entries in ou=Engineering,dc=com 不得将 ou
=Engineering 设为 Engineering
。
如果您的目录结构更改,这些类型的 ACI 可能会失败。
或者,您可以创建一个与绑定请求中用户输入匹配的绑定规则,以及存储在目标条目中的属性值。请参阅 根据值匹配,请参阅定义访问。