Partager via


Méthode IEffectivePermission2 ::ComputeEffectivePermissionWithSecondarySecurity (aclui.h)

La méthode ComputeEffectivePermissionWithSecondarySecurity calcule les autorisations effectives pour un objet. Il prend en charge l’intégration de stratégies de sécurité secondaires ou personnalisées. Vous pouvez choisir de fournir ces informations de sécurité supplémentaires en implémentant l’interface ISecurityInformation4 . Cette méthode prend en charge l’identité composée, c’est-à-dire lorsque le jeton d’accès d’un principal contient des informations d’autorisation d’utilisateur et d’appareil.

Syntaxe

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
);

Paramètres

[in] pSid

Pointeur vers une structure SID qui représente le principal de sécurité dont l’autorisation effective est déterminée.

[in, optional] pDeviceSid

Pointeur vers une structure SID qui représente l’appareil à partir duquel le principal accède à l’objet. Si ce n’est pas NULL et que vous utilisez la fonction AuthzAccessCheck pour calculer les autorisations effectives, le SID de l’appareil peut être composé avec le paramètre pSid à l’aide de la fonction AuthzInitializeCompoundContext .

[in, optional] pszServerName

Nom du serveur sur lequel réside l’objet. Il s’agit du même nom que celui retourné par la méthode ISecurityInformation ::GetObjectInformation .

[in] pSecurityObjects

Tableau d’objets de sécurité. Ce tableau est composé d’objets qui ont été déduits par l’éditeur de contrôle d’accès en plus de ceux retournés par la méthode ISecurityInformation4 ::GetSecondarySecurity .

[in] dwSecurityObjectCount

Nombre d’objets de sécurité dans le paramètre pSecurityObjects et nombre de listes de résultats dans le paramètre pEffpermResultLists .

[in, optional] pUserGroups

Pointeur vers des groupes d’utilisateurs supplémentaires qui doivent être utilisés pour modifier le contexte de sécurité initialisé à partir du paramètre pSid . Si vous utilisez la fonction AuthzAccessCheck pour calculer les autorisations effectives, la modification peut être effectuée en appelant la fonction AuthzModifySids à l’aide d’AuthzContextInfoGroupsSids comme paramètre SidClass .

[in, optional] pAuthzUserGroupsOperations

Pointeur vers un tableau de structures AUTHZ_SID_OPERATION qui spécifient la façon dont les groupes d’utilisateurs dans le contexte authz doivent être modifiés pour chaque groupe d’utilisateurs dans l’argument pUserGroups . Ce tableau contient autant d’éléments que le nombre de groupes dans le paramètre pUserGroups .

[in, optional] pDeviceGroups

Pointeur vers des groupes d’appareils supplémentaires qui doivent être utilisés pour modifier le contexte de sécurité initialisé à partir du paramètre pSid ou créé en additionnant les contextes qui ont été initialisés à partir des paramètres pSid et pDeviceSid . Si vous utilisez la fonction AuthzAccessCheck pour calculer les autorisations effectives, la modification peut être effectuée en appelant la fonction AuthzModifySids à l’aide d’AuthzContextInfoDeviceSids comme paramètre SidClass .

[in, optional] pAuthzDeviceGroupsOperations

Pointeur vers un tableau de types d’énumération AUTHZ_SID_OPERATION qui spécifient la façon dont les groupes d’appareils dans le contexte d’authz doivent être modifiés pour chaque groupe d’appareils dans l’argument pDeviceGroups . Ce tableau contient autant d’éléments que le nombre de groupes dans le paramètre pDeviceGroups .

[in, optional] pAuthzUserClaims

Pointeur vers une structure AUTHZ_SECURITY_ATTRIBUTES_INFORMATION qui contient le contexte de revendications utilisateur qui doit être utilisé pour modifier le contexte de sécurité initialisé à partir du paramètre pSid . Si vous utilisez la fonction AuthzAccessCheck pour calculer les autorisations effectives, la modification peut être effectuée en appelant la fonction AuthzModifyClaims à l’aide d’AuthzContextInfoUserClaims comme paramètre ClaimClass .

[in, optional] pAuthzUserClaimsOperations

Pointeur vers un type d’énumération AUTHZ_SECURITY_ATTRIBUTE_OPERATION qui spécifie les opérations associées au contexte de revendications utilisateur.

[in, optional] pAuthzDeviceClaims

Pointeur vers le contexte de revendications d’appareil qui doit être utilisé pour modifier le contexte de sécurité initialisé à partir du paramètre pSid ou créé en combinant les contextes initialisés à partir des paramètres pSid et pDeviceSid . Cela peut être fourni par l’appelant, même si le paramètre pDeviceSid ne l’est pas. Si vous utilisez la fonction AuthzAccessCheck pour calculer les autorisations effectives, la modification peut être effectuée en appelant la fonction AuthzModifyClaims à l’aide d’AuthzContextInfoDeviceClaims comme paramètre ClaimClass .

[in, optional] pAuthzDeviceClaimsOperations

Pointeur vers un type d’énumération AUTHZ_SECURITY_ATTRIBUTE_OPERATION qui spécifie les opérations associées au contexte des revendications d’appareil.

[in, out] pEffpermResultLists

Pointeur vers un tableau des résultats des autorisations effectives de type EFFPERM_RESULT_LIST. Ce tableau est long pour les éléments dwSecurityObjectCount . Le tableau est initialisé par l’appelant et l’implémentation est censée définir tous les champs de chaque membre du tableau, indiquant l’accès accordé par l’objet de sécurité correspondant.

Si un objet de sécurité a été pris en compte, le membre fEvaluated doit avoir la valeur TRUE. Dans ce cas, les membres pObjectTypeList et pGrantedAccessList doivent tous deux être des éléments cObjectTypeListLength longs. Le membre pObjectTypeList doit pointer vers la mémoire qui appartient au gestionnaire de ressources et doit rester valide jusqu’à ce que la fonction EditSecurity se ferme. Le membre pGrantedAccessList est libéré par l’appelant à l’aide de la fonction LocalFree . Si le gestionnaire de ressources ne prend pas en charge les objets ACÉ, le membre pObjectTypeList doit pointer vers le GUID NULL , le membre cObjectTypeListLength doit être 1 et le membre pGrantedAccessList doit être un seul DWORD.

Valeur retournée

Si la fonction réussit, la valeur de retour est S_OK.

Si la fonction réussit mais a retourné un résultat approximatif, la valeur de retour est S_FALSE.

Si la fonction échoue, la valeur de retour est un HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Remarques

Lorsque le membre Id que la structure SECURITY_OBJECT est définie sur SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE, la méthode ComputeEffectivePermissionWithSecondarySecurity doit d’abord utiliser le membre pData2 , puis uniquement évaluer l’accès à l’aide du membre pData .

Il est attendu que l’appelant utilise AuthzAccessCheck pour déterminer les autorisations effectives. Dans la mesure du possible, l’implémentation doit initialiser un gestionnaire de ressources distant sur le membre pszServerName fourni, en utilisant la fonction AuthzInitializeRemoteResourceManager pour s’assurer que les groupes et les revendications sont initialisés de la même manière que lorsque le principal accède réellement à l’objet. Si AuthzInitializeRemoteResourceManager échoue, l’implémentation peut revenir à l’utilisation de la fonction AuthzInitializeResourceManager et retourner S_FALSE pour indiquer que des résultats approximatifs sont retournés.

Pour chacun des objets de sécurité secondaires dont le membre fEvaluated est défini sur TRUE, l’éditeur de contrôle d’accès affiche les autorisations et propriétés qui ont été limitées par cet objet à l’aide du membre pwszName .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
Plateforme cible Windows
En-tête aclui.h

Voir aussi

AUTHZ_SECURITY_ATTRIBUTE_OPERATION

AuthzInitializeRemoteResourceManager

IEffectivePermission2

ISecurityInformation4 ::GetSecondarySecurity

SECURITY_OBJECT