Método IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity (aclui.h)
O método ComputeEffectivePermissionWithSecondarySecurity calcula as permissões efetivas para um objeto. Ele dá suporte à integração de políticas de segurança secundárias ou personalizadas. Você pode optar por fornecer essas informações de segurança adicionais implementando a interface ISecurityInformation4 . Esse método dá suporte à identidade composta, que é quando o token de acesso de uma entidade de segurança contém informações de autorização de usuário e dispositivo.
Sintaxe
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
);
Parâmetros
[in] pSid
Um ponteiro para uma estrutura sid que representa a entidade de segurança cuja permissão efetiva está sendo determinada.
[in, optional] pDeviceSid
Um ponteiro para uma estrutura sid que representa o dispositivo do qual a entidade de segurança está acessando o objeto. Se isso não for NULL e você estiver usando a função AuthzAccessCheck para calcular as permissões efetivas, o SID do dispositivo poderá ser composto com o parâmetro pSid usando a função AuthzInitializeCompoundContext .
[in, optional] pszServerName
O nome do servidor no qual o objeto reside. Esse é o mesmo nome que foi retornado do método ISecurityInformation::GetObjectInformation .
[in] pSecurityObjects
Uma matriz de objetos de segurança. Essa matriz é composta por objetos que foram deduzidos pelo editor de controle de acesso, além daqueles retornados do método ISecurityInformation4::GetSecondarySecurity .
[in] dwSecurityObjectCount
O número de objetos de segurança no parâmetro pSecurityObjects e o número de listas de resultados no parâmetro pEffpermResultLists .
[in, optional] pUserGroups
Um ponteiro para grupos de usuários adicionais que devem ser usados para modificar o contexto de segurança que foi inicializado do parâmetro pSid . Se você estiver usando a função AuthzAccessCheck para calcular as permissões efetivas, a modificação poderá ser feita chamando a função AuthzModifySids usando AuthzContextInfoGroupsSids como o parâmetro SidClass .
[in, optional] pAuthzUserGroupsOperations
Ponteiro para uma matriz de estruturas de AUTHZ_SID_OPERATION que especificam como os grupos de usuários no contexto authz devem ser modificados para cada grupo de usuários no argumento pUserGroups . Essa matriz contém tantos elementos quanto o número de grupos no parâmetro pUserGroups .
[in, optional] pDeviceGroups
Um ponteiro para grupos de dispositivos adicionais que devem ser usados para modificar o contexto de segurança que foi inicializado do parâmetro pSid ou um que foi criado compondo os contextos que foram inicializados dos parâmetros pSid e pDeviceSid . Se você estiver usando a função AuthzAccessCheck para calcular as permissões efetivas, a modificação poderá ser feita chamando a função AuthzModifySids usando AuthzContextInfoDeviceSids como o parâmetro SidClass .
[in, optional] pAuthzDeviceGroupsOperations
Ponteiro para uma matriz de tipos de enumeração AUTHZ_SID_OPERATION que especificam como os grupos de dispositivos no contexto authz devem ser modificados para cada grupo de dispositivos no argumento pDeviceGroups . Essa matriz contém tantos elementos quanto o número de grupos no parâmetro pDeviceGroups .
[in, optional] pAuthzUserClaims
Ponteiro para uma estrutura AUTHZ_SECURITY_ATTRIBUTES_INFORMATION que contém o contexto de declarações do usuário que deve ser usado para modificar o contexto de segurança inicializado do parâmetro pSid . Se você estiver usando a função AuthzAccessCheck para calcular as permissões efetivas, a modificação poderá ser feita chamando a função AuthzModifyClaims usando AuthzContextInfoUserClaims como o parâmetro ClaimClass .
[in, optional] pAuthzUserClaimsOperations
Ponteiro para um tipo de enumeração AUTHZ_SECURITY_ATTRIBUTE_OPERATION que especifica as operações associadas ao contexto de declarações do usuário.
[in, optional] pAuthzDeviceClaims
Um ponteiro para o contexto de declarações do dispositivo que deve ser usado para modificar o contexto de segurança inicializado do parâmetro pSid ou um que foi criado compondo os contextos que foram inicializados dos parâmetros pSid e pDeviceSid . Isso pode ser fornecido pelo chamador, mesmo que o parâmetro pDeviceSid não seja. Se você estiver usando a função AuthzAccessCheck para calcular as permissões efetivas, a modificação poderá ser feita chamando a função AuthzModifyClaims usando AuthzContextInfoDeviceClaims como o parâmetro ClaimClass .
[in, optional] pAuthzDeviceClaimsOperations
Ponteiro para um tipo de enumeração AUTHZ_SECURITY_ATTRIBUTE_OPERATION que especifica as operações associadas ao contexto de declarações do dispositivo.
[in, out] pEffpermResultLists
Um ponteiro para uma matriz dos resultados efetivos de permissões do tipo EFFPERM_RESULT_LIST. Essa matriz tem elementos dwSecurityObjectCount longos. A matriz é inicializada pelo chamador e espera-se que a implementação defina todos os campos de cada membro na matriz, indicando qual acesso foi concedido pelo objeto de segurança correspondente.
Se um objeto de segurança tiver sido considerado, o membro fEvaluated deverá ser definido como TRUE. Nesse caso, os membros pObjectTypeList e pGrantedAccessList devem ter os elementos cObjectTypeListLength longos. O membro pObjectTypeList deve apontar para a memória que pertence ao gerenciador de recursos e deve permanecer válido até que a função EditSecurity seja encerrada. O membro pGrantedAccessList é liberado pelo chamador usando a função LocalFree . Se o gerenciador de recursos não der suporte a ACEs de objeto, o membro pObjectTypeList deverá apontar para o GUID NULL , o membro cObjectTypeListLength deverá ser 1 e o membro pGrantedAccessList deverá ser um único DWORD.
Retornar valor
Se a função for bem-sucedida, o valor retornado será S_OK.
Se a função for bem-sucedida, mas retornar um resultado aproximado, o valor retornado será S_FALSE.
Se a função falhar, o valor retornado será um HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.
Comentários
Quando o membro da ID, a estrutura SECURITY_OBJECT é definida como SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE, o método ComputeEffectivePermissionWithSecondarySecurity deve usar o membro pData2 primeiro e, em seguida, avaliar o acesso usando o membro pData.
Espera-se que o chamador use AuthzAccessCheck para determinar as permissões efetivas. Quando possível, a implementação deve inicializar um gerenciador de recursos remotos no membro pszServerName fornecido, usando a função AuthzInitializeRemoteResourceManager para garantir que os grupos e as declarações sejam inicializados da mesma maneira que quando a entidade de segurança realmente acessa o objeto. Se AuthzInitializeRemoteResourceManager falhar, a implementação poderá voltar a usar a função AuthzInitializeResourceManager e retornar S_FALSE para indicar que os resultados aproximados são retornados.
Para cada um dos objetos de segurança secundários cujo membro fEvaluated está definido como TRUE, o editor de controle de acesso exibirá quais permissões e propriedades foram limitadas por esse objeto usando o membro pwszName .
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2012 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | aclui.h |
Confira também
AUTHZ_SECURITY_ATTRIBUTE_OPERATION
AuthzInitializeRemoteResourceManager