IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity 方法 (aclui.h)
ComputeEffectivePermissionWithSecondarySecurity 方法计算对象的有效权限。 它支持集成辅助或自定义安全策略。 可以选择通过实现 ISecurityInformation4 接口来提供此附加安全信息。 此方法支持复合标识,即主体的访问令牌包含用户和设备授权信息。
语法
HRESULT ComputeEffectivePermissionWithSecondarySecurity(
[in] PSID pSid,
[in, optional] PSID pDeviceSid,
[in, optional] PCWSTR pszServerName,
[in] PSECURITY_OBJECT pSecurityObjects,
[in] DWORD dwSecurityObjectCount,
[in, optional] PTOKEN_GROUPS pUserGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzUserGroupsOperations,
[in, optional] PTOKEN_GROUPS pDeviceGroups,
[in, optional] PAUTHZ_SID_OPERATION pAuthzDeviceGroupsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzUserClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzUserClaimsOperations,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzDeviceClaims,
[in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION pAuthzDeviceClaimsOperations,
[in, out] PEFFPERM_RESULT_LIST pEffpermResultLists
);
参数
[in] pSid
指向 SID 结构的指针,该结构表示要确定其有效权限的安全主体。
[in, optional] pDeviceSid
指向 SID 结构的指针,该结构表示主体从中访问对象的设备。 如果这不是 NULL,并且你正在使用 AuthzAccessCheck 函数来计算有效权限,则设备 SID 可能会通过使用 AuthzInitializeCompoundContext 函数与 pSid 参数复合。
[in, optional] pszServerName
对象所在的服务器的名称。 此名称与从 ISecurityInformation::GetObjectInformation 方法返回的名称相同。
[in] pSecurityObjects
安全对象的数组。 此数组由访问控制编辑器推断的对象以及从 ISecurityInformation4::GetSecondarySecurity 方法返回的对象组成。
[in] dwSecurityObjectCount
pSecurityObjects 参数中的安全对象数,以及 pEffpermResultLists 参数中的结果列表数。
[in, optional] pUserGroups
指向其他用户组的指针,这些用户组应用于修改从 pSid 参数初始化的安全上下文。 如果使用 AuthzAccessCheck 函数计算有效权限,则可以通过使用 AuthzContextInfoGroupsSids 作为 SidClass 参数调用 AuthzModifySids 函数来完成修改。
[in, optional] pAuthzUserGroupsOperations
指向 AUTHZ_SID_OPERATION 结构的数组的指针,这些结构指定如何为 pUserGroups 参数中的每个用户组修改 authz 上下文中的用户组。 此数组包含的元素数与 pUserGroups 参数中的组数相同。
[in, optional] pDeviceGroups
指向其他设备组的指针,这些设备组应用于修改从 pSid 参数初始化的安全上下文,或者通过复合从 pSid 和 pDeviceSid 参数初始化的上下文而创建的安全上下文。 如果使用 AuthzAccessCheck 函数计算有效权限,则可以通过使用 AuthzContextInfoDeviceSids 作为 SidClass 参数调用 AuthzModifySids 函数来完成修改。
[in, optional] pAuthzDeviceGroupsOperations
指向 AUTHZ_SID_OPERATION 枚举类型的数组的指针,这些枚举类型指定如何为 pDeviceGroups 参数中的每个设备组修改 authz 上下文中的设备组。 此数组包含的元素数与 pDeviceGroups 参数中的组数相同。
[in, optional] pAuthzUserClaims
指向 AUTHZ_SECURITY_ATTRIBUTES_INFORMATION 结构的指针,该结构包含用户声明上下文,该上下文应用于修改从 pSid 参数初始化的安全上下文。 如果使用 AuthzAccessCheck 函数计算有效权限,则可以通过使用 AuthzContextInfoUserClaims 作为 ClaimClass 参数调用 AuthzModifyClaims 函数来完成修改。
[in, optional] pAuthzUserClaimsOperations
指向 AUTHZ_SECURITY_ATTRIBUTE_OPERATION 枚举类型的指针,该枚举类型指定与用户声明上下文关联的操作。
[in, optional] pAuthzDeviceClaims
指向设备声明上下文的指针,该上下文应用于修改从 pSid 参数初始化的安全上下文,或者通过复合从 pSid 和 pDeviceSid 参数初始化的上下文来创建的安全上下文。 这可由调用方提供,即使 pDeviceSid 参数不是。 如果使用 AuthzAccessCheck 函数计算有效权限,则可以通过使用 AuthzContextInfoDeviceClaims 作为 ClaimClass 参数调用 AuthzModifyClaims 函数来完成修改。
[in, optional] pAuthzDeviceClaimsOperations
指向 AUTHZ_SECURITY_ATTRIBUTE_OPERATION 枚举类型的指针,该枚举类型指定与设备声明上下文关联的操作。
[in, out] pEffpermResultLists
指向 类型为 EFFPERM_RESULT_LIST 的有效权限结果数组的指针。 此数组为 dwSecurityObjectCount 元素长。 数组由调用方初始化,实现应设置数组中每个成员的所有字段,指示相应的安全对象授予的访问权限。
如果考虑安全对象,则 fEvaluated 成员应设置为 TRUE。 在这种情况下, pObjectTypeList 和 pGrantedAccessList 成员都应为 cObjectTypeListLength 元素长。 pObjectTypeList 成员必须指向资源管理器拥有的内存,并且必须在 EditSecurity 函数退出之前保持有效。 pGrantedAccessList 成员由调用方使用 LocalFree 函数释放。 如果资源管理器不支持对象 ACE,则 pObjectTypeList 成员应指向 NULL GUID,cObjectTypeListLength 成员应为 1,pGrantedAccessList 成员应为单个 DWORD。
返回值
如果函数成功,则返回值S_OK。
如果函数成功但返回了近似结果,则返回值S_FALSE。
如果函数失败,则返回值为 指示错误的 HRESULT 。 有关常见错误代码的列表,请参阅 常见 HRESULT 值。
注解
当 id 成员 SECURITY_OBJECT 结构设置为SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE时, ComputeEffectivePermissionWithSecondarySecurity 方法应首先使用 pData2 成员,然后才使用 pData 成员评估访问权限。
预计调用方将使用 AuthzAccessCheck 来确定有效权限。 如果可能,实现应使用 AuthzInitializeRemoteResourceManager 函数在提供的 pszServerName 成员上初始化远程资源管理器,以确保以主体真正访问对象时相同的方式初始化组和声明。 如果 AuthzInitializeRemoteResourceManager 失败,则实现可能会回退到使用 AuthzInitializeResourceManager 函数并返回S_FALSE以指示返回近似结果。
对于 fEvaluated 成员设置为 TRUE 的每个辅助安全对象,访问控制编辑器将使用 pwszName 成员显示该对象限制的权限和属性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | aclui.h |
另请参阅
AUTHZ_SECURITY_ATTRIBUTE_OPERATION
AuthzInitializeRemoteResourceManager