第 12 章 管理访问控制指令

当 Directory Server 收到请求时,它使用 bind 操作中用户提供的身份验证信息以及目录中定义的访问控制指令(ACI)来允许或拒绝访问所请求的条目或属性。服务器可以允许或拒绝执行操作的权限,如 读取写入搜索和 比较。为用户授予的权限级别取决于提供的身份验证信息。

Directory 服务器中的访问控制可让您在 ACI 适用时设置精确规则:

  • 对于整个目录、子树或特定条目
  • 对于特定用户,属于特定组或角色的所有用户,或者 目录中的所有用户
  • 对于特定位置,如 IP 地址、IP 范围或 DNS 名称。

    请注意,负载均衡器可能会影响特定于位置的规则。

重要

难以阅读和理解复杂 ACI。您可以编写多个简单规则来达到同样效果,而不是一个复杂的 ACI。但是,更多 ACI 也会增加 ACI 处理的成本。

12.1. ACI 放置

目录服务器将访问控制指令(ACI)存储在目录条目的多值 aci 操作属性中。要设置 ACI,请将 aci 属性添加到对应的目录条目。目录服务器应用 ACI:

  • 只有包含 ACI 的条目(如果它没有任何子条目)例如,如果客户端需要访问 uid=user_name,ou=People,dc=example,dc=com 对象,而 ACI 仅在 dc=example,dc=com 上设置,而不适用于任何子条目,仅应用此 ACI。

    注意

    具有 添加权限 的 ACI 也适用于在以后创建的子条目。

  • 如果条目含有 ACI 以及以下所有条目,则将其在所有条目中。因此,当服务器评估对任何给定条目的访问权限时,它会验证一个请求和目录后缀之间的每个条目的 ACI,以及条目本身的 ACI。

    例如,在 dc=example,dc=comou=People,dc=example,dc=com 条目中设置了 ACI:如果一个客户端要访问 uid=user_name,ou=People,dc=example,dc=com 对象,它没有设置 ACI,Directory Server 会首先验证 ou=People,dc=example,dc=com 条目中的 ACI。如果这个 ACI 授予访问权限,则评估会停止并授予访问权限。如果没有,Directory 服务器会验证 ou=People,dc=example,dc=com 上的 ACI。如果这个 ACI 成功授权客户端,它可以访问该对象。

注意

rootDSE 条目中设置的 ACI 仅适用于此条目。

可以在条目上创建的 ACI 不能直接应用到该条目,而是指向下面的子树中的部分或全部条目。这种方法的优势在于,通用 ACI 可以在目录树中放置更高的条目,从而对树中较低条目产生影响。例如,可以在 organizationalUnit 条目的级别上创建包含 inetOrgPerson 对象类的 ACI 条目或本地类型条目。

注意

通过将常规规则放置到高级别分支点,以最小化目录树中的 ACI 数量。为限制更具体规则的范围,请尽可能将它们放在叶条目中。