检索对象的 SACL

Active Directory 域服务中对象的安全描述符可能包含系统访问控制列表 (SACL)。 SACL 包含访问控制项 (ACE),用于指定在域控制器的安全事件日志中生成审核记录的访问尝试的类型。 请注意,SACL 只会在发生访问尝试的域控制器上生成日志条目,而不是在包含对象副本的每个 DC 上生成日志条目。

要从对象安全描述符中设置或获取 SACL,必须在请求线程的访问令牌中启用 SE_SECURITY_NAME 权限。 默认情况下,管理员组拥有此权限,也可将此权限分配给其他用户或组。 有关详细信息,请参阅 SACL 访问权限

要获取和设置 Directory 对象的 SACL,请使用 IADsSecurityDescriptor 接口。 通过使用 C++,IADsSecurityDescriptor::get_SystemAcl 方法会返回一个 IDispatch 指针。 在 IDispatch 指针上调用 QueryInterface 以获得 IADsAccessControlList 接口,并使用该接口上的方法来访问 ACL 中的单个 ACE。 有关修改 SACL 的过程(类似于修改 DACL 的过程)的详细信息,请参阅设置对象访问权限

要枚举 SACL 中的 ACE,请使用 IADsAccessControlList::get__NewEnum 方法,它会返回一个 IUnknown 指针。 在该 IUnknown 指针上调用 QueryInterface 以获取 IEnumVARIANT 接口。 使用 IEnumVARIANT::Next 方法来枚举 ACL 中的 ACE。 每个 ACE 都以 VARIANT 的形式返回,其中包含一个 IDispatch 指针;请注意 vt 成员是 VT_DISPATCH。 在该 IDispatch 指针上调用 QueryInterface 来获取 ACE 的 IADsAccessControlEntry 接口。 使用 IADsAccessControlEntry 接口方法设置或获取 ACE 的组件。

有关 SACL 的详细信息,请参阅: