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

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT