第 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=com
和ou=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 数量。为限制更具体规则的范围,请尽可能将它们放在叶条目中。