目录服务(DS)对象的 自由访问控制列表(DACL)可以包含 访问控制条目的层次结构(ACE),如下所示:
- 保护对象本身的 ACE
- 特定于对象的 ACE,用于保护对象上设置的指定属性
- 保护对象上指定属性的对象特定的 ACE
在此层次结构中,在较高级别授予或拒绝的权限也适用于较低级别。 例如,如果属性集中的对象特定的 ACE 允许受托人ADS_RIGHT_DS_READ_PROP权限,则受托方对该属性集的所有属性具有隐式读取访问权限。 同样,允许ADS_RIGHT_DS_READ_PROP访问的对象本身的 ACE 授予受托方对所有对象的属性的读取访问权限。
下图显示了假设 DS 对象的树及其属性集和属性。
假设你想要允许以下访问此 DS 对象的属性:
- 允许组 A 读取/写入权限访问所有对象的属性
- 允许除属性 D 以外的所有属性的其他人读取/写入权限
为此,请设置对象的 DACL 中的 ACE,如下表所示。
受托 人 | 对象 GUID | ACE 类型 | 访问权限 |
---|---|---|---|
组 A | 没有 | 允许访问的 ACE | ADS_RIGHT_DS_READ_PROP |ADS_RIGHT_DS_WRITE_PROP |
每个人 都 | 属性集 1 | 访问允许的对象 ACE | ADS_RIGHT_DS_READ_PROP |ADS_RIGHT_DS_WRITE_PROP |
每个人 都 | 属性 C | 访问允许的对象 ACE | ADS_RIGHT_DS_READ_PROP |ADS_RIGHT_DS_WRITE_PROP |
组 A 的 ACE 没有对象 GUID,这意味着它允许访问所有对象的属性。 特定于对象的 ACE for Property Set 1 允许每个人访问属性 A 和 B。另一个特定于对象的 ACE 允许每个人访问属性 C。请注意,尽管此 DACL 没有任何访问被拒绝的 ACE,但它隐式拒绝对除组 A 以外的所有人的属性 D 访问。
当用户尝试访问对象的属性时,系统会按顺序检查 ACE,直到显式授予、拒绝请求的访问权限或不再有 ACE,在这种情况下,将隐式拒绝访问。
系统评估:
- 应用于对象本身的 ACE
- 适用于包含所访问属性的属性集的对象特定的 ACE
- 应用于所访问属性的对象特定的 ACE
系统忽略应用于其他属性集或属性的对象特定的 ACE。