AuthzAccessCheck 函数 (authz.h)

AuthzAccessCheck 函数确定可为给定的安全描述符集的客户端授予哪些访问位。 AUTHZ_ACCESS_REPLY 结构返回已授予访问掩码和错误状态的数组。 (可选)可以缓存始终授予的访问掩码,并返回缓存值的句柄。

语法

AUTHZAPI BOOL AuthzAccessCheck(
  [in]            DWORD                              Flags,
  [in]            AUTHZ_CLIENT_CONTEXT_HANDLE        hAuthzClientContext,
  [in]            PAUTHZ_ACCESS_REQUEST              pRequest,
  [in, optional]  AUTHZ_AUDIT_EVENT_HANDLE           hAuditEvent,
  [in]            PSECURITY_DESCRIPTOR               pSecurityDescriptor,
  [in, optional]  PSECURITY_DESCRIPTOR               *OptionalSecurityDescriptorArray,
  [in, optional]  DWORD                              OptionalSecurityDescriptorCount,
  [in, out]       PAUTHZ_ACCESS_REPLY                pReply,
  [out, optional] PAUTHZ_ACCESS_CHECK_RESULTS_HANDLE phAccessCheckResults
);

参数

[in] Flags

一个 DWORD 值,该值指定如何复制安全描述符。 此参数的取值可为下列值之一:

从 Windows 8 和 Windows Server 2012 开始,在远程上下文句柄上调用此函数时,高 16 位必须为零。

含义
0
如果 phAccessCheckResults 不为 NULL,则将安全描述符的深层副本复制到 phAccessCheckResults 引用的句柄。
AUTHZ_ACCESS_CHECK_NO_DEEP_COPY_SD
1
不执行安全描述符的深层复制。 调用应用程序必须在 phAccessCheckResults 中传递AUTHZ_ACCESS_CHECK_RESULTS_HANDLE句柄的地址。 AuthzAccessCheck 函数将此句柄设置为在后续调用 AuthzCachedAccessCheck 期间必须保持有效的安全描述符。

[in] hAuthzClientContext

表示客户端的 结构的句柄。

从 Windows 8 和 Windows Server 2012 开始,客户端上下文可以是本地上下文,也可以是远程上下文。

[in] pRequest

指向 AUTHZ_ACCESS_REQUEST 结构的指针,该结构指定所需的访问掩码、主体自我 安全标识符 (SID) ,以及对象类型列表结构(如果存在)。

[in, optional] hAuditEvent

包含特定于对象的审核信息的 结构。 如果此参数的值不为 null,则会自动请求审核。 静态审核信息从资源管理器结构中读取。

从 Windows 8 和 Windows Server 2012 开始,将此函数与远程上下文句柄一起使用时,参数的值必须为 NULL

[in] pSecurityDescriptor

指向要用于访问检查 的SECURITY_DESCRIPTOR 结构的指针。 对象的所有者 SID 是从此安全描述符中选取的。 此安全描述符中 DACL) (NULL 自由访问控制列表 表示整个对象的 NULL DACL。 请确保安全描述符包含 OWNER 和 DACL 信息,否则将生成错误代码 87 或“参数无效”消息。

重要提示NULL DACL 允许所有用户进行所有类型的访问;因此,请勿使用 NULL DACL。 有关创建 DACL 的信息,请参阅 创建 DACL
 
此安全描述符中 (SACL) 的 NULL 系统访问控制列表 处理方式与空 SACL 相同。

[in, optional] OptionalSecurityDescriptorArray

SECURITY_DESCRIPTOR 结构的数组。 这些安全描述符中) 的 ACL (NULL 访问控制列表被视为空 ACL。 整个对象的 ACL 是所有 ACL 的逻辑串联。

[in, optional] OptionalSecurityDescriptorCount

不包括主要安全描述符的安全描述符的数目。

[in, out] pReply

指向包含访问检查结果的AUTHZ_ACCESS_REPLY结构的指针。 在调用 AuthzAccessCheck 函数之前,应用程序必须为 pReply 引用的 AUTHZ_ACCESS_REPLY 结构的 GrantedAccessMaskSaclEvaluationResults 成员分配内存。

[out, optional] phAccessCheckResults

一个指针,用于返回访问检查缓存结果的句柄。 如果此参数值不为 null,则将缓存此访问检查调用的结果。 这会导致MAXIMUM_ALLOWED 检查。

从 Windows 8 和 Windows Server 2012 开始,将此函数与远程上下文句柄一起使用时,参数的值必须为 NULL

返回值

如果函数成功,则函数返回 TRUE

如果函数失败,则返回 FALSE。 要获得更多的错误信息,请调用 GetLastError。

注解

如果 pSecurityDescriptor 参数指向的SECURITY_DESCRIPTOR结构的 DACL 包含 (ACE) 的回调访问控制项,则将调用 AuthzAccessCheckCallback 回调函数。

如果在条件表达式中引用安全属性变量,则必须在客户端上下文中存在,否则引用它们的条件表达式术语的计算结果为未知。 有关详细信息,请参阅 条件 ACE 的安全描述符定义语言 主题。

有关详细信息,请参阅 AccessCheck 的工作原理集中授权策略 概述。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 authz.h
Library Authz.lib
DLL Authz.dll
可再发行组件 Windows XP 上的 Windows Server 2003 管理工具包

另请参阅

AUTHZ_ACCESS_REPLY

AUTHZ_ACCESS_REQUEST

AuthzCachedAccessCheck

基本访问控制函数

集中式授权策略

AccessCheck 的工作原理

SECURITY_DESCRIPTOR

条件 ACE 的安全描述符定义语言