18.2. ACI 放置
目录服务器将 ACI 存储在目录条目的多值
aci
操作属性中。要设置 ACI,请将 aci
属性添加到对应的目录条目中。目录服务器应用 ACI:
- 只有包含 ACI 的条目,如果它没有任何子条目。例如,如果客户端需要访问 uid=user_name,ou=People,dc=example,dc=com 对象,并且仅在 dc=example,dc=com 上设置 ACI,而不应用于任何子条目,则只应用此 ACI。注意具有 添加权限 的 ACI 也适用于以后创建的子条目。
- 对于包含 ACI 以及下面的所有条目的条目(如果其具有子条目)。因此,当服务器评估对任何给定条目的访问权限时,它会验证请求和目录后缀之间的每个条目的 ACI,以及条目本身的 ACI。例如,在 dc=example,dc=com 和 ou=People,dc=example,dc=com 条目上设置 ACI:如果客户端想要访问 uid=user_name,ou=People,dc=example,dc=com 对象,它没有 ACI,目录服务器首先使用 dc=example,dc=com 和 ou=People,dc=example,dc=com 创建集合。目录服务器从目标条目构建适用的 ACI 底部的列表,最高到顶级后缀。但是,将此列表视为集合,客户端应用程序不应该预计 ACI 评估的任何顺序。服务器选择与资源条目匹配的 ACI,从此初始集合中创建最终适用的 ACI 集合。然后,首先评估拒绝权限的 ACI。如果成功评估了 DENY ACI,则操作会失败。如果没有找到 DENY ACI,Directory 服务器会检查是否存在授予 ALLOW 权限的 ACI。如果至少一个 ACI 允许访问,目录服务器会授予访问权限。如果没有 ACI 授予 ALLOW 权限,Directory 服务器会拒绝访问,操作会失败。
注意
rootDSE 条目中设置的 ACI 仅适用于此条目。
在条目中创建的 ACI 可以被设置为不直接应用到该条目,而是应用于以下子树中的一些或全部条目。这种方法的优点是,一般 ACI 可以被放在目录树中,以便对树中较低条目的影响。例如,目标条目为包括 inetOrgPerson 对象类的 ACI,可以在
organizationalUnit
条目或 locality
条目一级创建。
注意
通过将常规规则放在高级别分支点来最小化目录树中的 ACI 数量。要限制更具体的规则的范围,请尽可能将它们放在叶条目中。