检查对私有对象的访问权限

在允许客户端访问受保护的私有对象之前,受保护的服务器应用程序必须检查客户端的访问权限。 为此,服务器将向 AccessCheck传递 模拟令牌、安全描述符和一组请求的访问权限。 (Ace) 在 安全描述符的DACL 中的 访问控制项指定了对各种受信者允许或拒绝的访问权限。 AccessCheck 函数将每个 ACE 中的受信者与模拟令牌中标识的受信者进行比较。 有关用于授予或拒绝访问的算法的说明,请参阅 Dacl 如何控制对对象的访问

AccessCheckAndAuditAlarm函数执行类似的访问检查。 此外,它还会根据安全描述符中的 SACL 在安全事件日志中生成审核记录。

AccessCheckByTypeAccessCheckByTypeAndAuditAlarm函数类似于 AccessCheckAccessCheckAndAuditAlarm ,只不过它们允许你检查对某个对象(如属性集或属性)的子对象的访问。 AccessCheckByTypeResultListAccessCheckByTypeResultListAndAuditAlarm函数也类似于 AccessCheck ,只不过它们为对象的属性和属性集的层次结构中的每个子对象提供访问检查结果。 这些函数使用 对象 _ 类型 _ 列表 结构来描述要检查其访问权限的对象的层次结构。 生成审核消息的函数使用 audit _ 事件 _ 类型 枚举类型来指示要检查的对象是否是目录服务对象。 有关对象及其子对象的层次结构的详细信息,请参阅 ace,以控制对对象属性的访问

传递给 AccessCheckAccessCheckAndAuditAlarm 函数的请求的访问权限不能包含任何 一般访问权限。 服务器可以使用 MapGenericMask 函数根据 一般 _ 映射 结构中指定的映射,将任何一般访问权限转换为相应的特定和标准权限。

AreAllAccessesGrantedAreAnyAccessesGranted函数将请求的 访问掩码与授予的访问掩码进行比较。

有关使用 AccessCheck 函数的示例代码,请参阅使用 c + + 中的 Acl 验证客户端访问

ConvertToAutoInheritPrivateObjectSecurity函数将创建并返回一个安全描述符,该格式允许自动传播可继承的 ace。 此安全描述符包含当前安全描述符中的所有 Ace、继承和 noninherited,并且是 自相关 格式。 ConvertToAutoInheritPrivateObjectSecurity 函数通过比较当前安全描述符中的所有 ace 和父安全描述符中的所有 ace 来确定 ace 是继承还是 noninherited 的。 两组 Ace 之间可能不存在一对一的对应关系。 例如,允许读/写权限的 ACE 可以等效于两个 Ace:允许读取权限的 ACE 和允许写入权限的 ACE。 当当前安全描述符为父项时,不能提供父安全说明符。