控制访问权限(AD DS)

Active Directory 域服务中的所有对象都支持在ADS_RIGHTS_ENUM枚举中定义的一组标准访问权限。 这些访问权限可以在对象的安全描述符的访问控制项(ACE)中使用,以控制对对象的访问;也就是说,控制谁可以执行标准操作,例如创建和删除子对象,或读取和写入对象属性。 但是,对于某些对象类,可能需要以不受标准访问权限支持的方式控制访问权限。 为此,Active Directory 域服务允许通过 controlAccessRight 对象扩展标准访问控制机制。

控制访问权限采用三种方式:

  • 对于扩展权限,这是标准访问权限集未涵盖的特殊操作。 例如,可以向用户类授予 Exchange、Outlook 或任何其他邮件应用程序可以使用的“发送方式”权限,以确定特定用户是否可以代表其他用户发送邮件。 通过将 validAccesses 属性设置为等于 ADS_RIGHT_DS_CONTROL_ACCESS (256) 访问权限,对 controlAccessRight 对象创建扩展权限。

  • 对于定义属性集,若要控制对对象属性子集的访问,而不仅仅是对各个属性的访问。 使用标准访问权限,单个 ACE 可以授予或拒绝对所有对象属性或单个属性的访问权限。 控制访问权限为单个 ACE 提供一种方法,用于控制对一组属性的访问。 例如,用户类支持 个人信息 属性集,其中包括街道地址和电话号码等属性。 通过设置 validAccesses 属性来同时包含ACTR_DS_READ_PROP(16)和ACTRL_DS_WRITE_PROP(32)访问权限,对 controlAccessRight 对象创建属性集权限。

  • 对于已验证的写入,在将值写入 DS 对象上的属性之前,需要系统执行值检查或验证(超出架构所需的值)。 这可确保为属性输入的值符合所需的语义、在法定值范围内,或者经历一些其他特殊检查,这些值不会对属性进行简单的低级别写入。 经过验证的写入与“写入<属性>”权限不同,该权限允许将任何值写入属性,且不检查执行任何值。 验证的写入是三个控件访问权限中唯一一个不能作为应用程序的新控件访问权限创建。 这是因为无法以编程方式修改现有系统以强制验证。 如果在系统中设置了控件访问权限作为已验证的写入,则 controlAccessRight 对象的 validAccesses 属性将包含 ADS_RIGHT_DS_标准版LF (8) 访问权限。

    Windows 2000 Active Directory 架构中只定义了三个经过验证的写入:

    • 对组对象的自成员身份权限,该权限允许调用方帐户(但没有其他帐户)从组的成员身份添加或删除。
    • 计算机对象的 Validated-DNS-Host-Name 权限,该权限允许设置符合计算机名称和域名的 DNS 主机名属性。
    • 计算机对象的 Validated-SPN 权限,该权限允许设置符合计算机的 DNS 主机名的 SPN 属性。

为方便起见,每个控件访问权限都由 Configuration 分区的 Extended-Rights 容器中的 controlAccessRight 对象表示,即使属性集和已验证的写入不被视为扩展权限。 由于配置容器在整个林中副本 (replica),因此控制权限将跨林中的所有域传播。 有许多预定义的控制访问权限,当然,还可以定义自定义访问权限。

所有控制访问权限都可以在 ACL 编辑器中查看为权限。

有关详细信息以及设置 ACE 以控制对属性集的读/写访问权限的 C++ 和 Visual Basic 代码示例,请参阅 用于在目录对象上设置 ACE 的示例代码。

有关使用控制访问权限来控制对特殊操作的访问的详细信息,请参阅: