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