Utiliser Azure PIM pour gérer l’accès actif avec l’API REST
Azure Privileged Identity Management (PIM) vous permet de limiter l’accès administrateur permanent aux rôles privilégiés, de découvrir qui a accès et de passer en revue l’accès privilégié. Cet article décrit les méthodes courantes de gestion de l’accès à l’aide de l’API REST.
Répertorier les affectations actives
Pour répertorier les attributions de rôles actives (accès à la liste), vous pouvez utiliser l’une des instances de planification d’attribution de rôle - Liste pour l’étendue ou planifications d’attribution de rôle - Liste pour les API REST d’étendue. Pour affiner vos résultats, vous spécifiez une étendue et un filtre facultatif. Pour appeler cette API, vous devez avoir accès à l’opération Microsoft.Authorization/roleAssignments/read
dans l’étendue spécifiée. Tous les rôles intégrés ont accès à cette opération.
Important
La différence entre les planifications et les instances de planification est que si les instances de planification incluent uniquement des affectations actives à l’heure actuelle, les planifications incluent également des affectations qui deviendront actives à l’avenir.
Commencez par la requête suivante :
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleInstances?api-version=2020-10-01&$filter={filter}
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentSchedules?api-version=2020-10-01&$filter={filter}
Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez lister les attributions de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Ressource Remplacez {filter} par la condition que vous voulez appliquer pour filtrer la liste des attributions de rôle.
Filtrer Description $filter=atScope()
Répertorier les affectations de rôle pour l’étendue spécifiée seulement, sans y inclure les affectations de rôles à des étendues secondaires. $filter=principalId%20eq%20'{objectId}'
Répertorier les affectations de rôle pour un utilisateur, un groupe ou un principal de service spécifié. $filter=roleDefinitionId%20eq%20'{roleDefinitionId}'
Répertoriez les attributions de rôles pour une définition de rôle spécifiée. $filter=assignedTo('{objectId}')
Répertorier les affectations de rôle pour un utilisateur spécifié, y compris celles héritées de groupes. $filter=asTarget()
Répertoriez les attributions de rôles pour l’utilisateur ou le principal de service actuel, y compris celles héritées des groupes. $filter=assignedTo('{objectId}')+and+atScope()
Répertoriez les attributions de rôles pour un utilisateur spécifié, y compris celles héritées des groupes pour l’étendue spécifiée uniquement, sans inclure les attributions de rôle dans les sous-étendues.
Accorder une affectation active
Pour créer une attribution de rôle active (accorder l’accès), vous utilisez l’API REST d’attribution de rôle - Créer l’API REST et spécifiez le principal de sécurité, la définition de rôle, la planification, requestType = AdminAssign
et l’étendue. Pour appeler cette API, vous devez avoir accès à l’opération Microsoft.Authorization/roleAssignments/write
. Parmi les rôles intégrés, seuls ceux du propriétaire et de l’administrateur des accès utilisateur se voient accorder l’accès à cette opération.
Utilisez l’API REST Liste de définitions de rôles ou consultez Rôles intégrés pour obtenir l’identificateur de la définition de rôle que vous souhaitez assigner.
Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur d’attribution de rôle. Cet identificateur est au format :
00000000-0000-0000-0000-000000000000
.Commencez par la requête et le corps suivants :
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminAssign", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "P30D" // Use ISO 8601 format } } } }
Dans l’URI, remplacez {scope} par l’étendue de l’attribution de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
Ressource Remplacez {roleAssignmentScheduleRequestName} par l’identificateur GUID de l’attribution de rôle.
Au sein du corps de la requête {subscriptionId}, par votre identificateur d’abonnement.
Remplacez {roleDefinitionId} par l’identificateur de définition de rôle.
Remplacez {principalId} par l’identificateur d’objet de l’utilisateur, du groupe ou du principal du service auquel le rôle sera attribué.
Supprimer l’affectation active
Pour supprimer une attribution de rôle active (supprimer l’accès), utilisez l’API REST d’attribution de rôle - Créer une API REST pour créer une nouvelle demande de révocation d’attribution et spécifier le principal de sécurité, la définition de rôle, requestType = AdminRemove
et l’étendue. Pour appeler cette API, vous devez avoir accès à l’opération Microsoft.Authorization/roleAssignments/write
. Parmi les rôles intégrés, seuls ceux du propriétaire et de l’administrateur des accès utilisateur se voient accorder l’accès à cette opération.
Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur d’attribution de rôle. Cet identificateur est au format :
00000000-0000-0000-0000-000000000000
.Commencez par la requête suivante :
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminRemove" } }
Dans l’URI, remplacez {scope} par l’étendue de suppression de l’attribution de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ressource Remplacez {roleAssignmentScheduleRequestName} par l’identificateur GUID de l’attribution de rôle.
Activer une attribution de rôle éligible
Pour activer une attribution de rôle éligible (obtenir un accès activé), utilisez l’API REST d’attribution de rôle - Créer l’API REST pour créer une nouvelle demande et spécifier le principal de sécurité, la définition de rôle, requestType = SelfActivate
et l’étendue. Pour appeler cette API, vous devez disposer d’une attribution de rôle éligible sur l’étendue.
Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur d’attribution de rôle. Cet identificateur est au format :
00000000-0000-0000-0000-000000000000
.[Facultatif] Choisissez un
RoleEligibilitySchedule
que vous souhaitez activer et obtenez leRoleEligibilityScheduleId
à partir de l’API Planifications d’éligibilité de rôle à passer en tant queLinkedRoleEligibilityScheduleId
. Cette option est facultative et, si elle n’est pas transmise, le système choisit unRoleEligibilitySchedule
.Commencez par la requête suivante :
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "SelfActivate", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "PT8H" // Use ISO 8601 format } }, "LinkedRoleEligibilityScheduleId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignmentSchedules/{roleAssignmentScheduleId}" //Optional } }
Dans l’URI, remplacez {scope} par l’étendue de suppression de l’attribution de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ressource Remplacez {roleAssignmentScheduleRequestName} par l’identificateur GUID de l’attribution de rôle.
Désactiver une attribution de rôle actif
Pour désactiver une attribution de rôle activée (supprimer l’accès activé), utilisez l’API REST d’attribution de rôle - Créer l’API REST pour créer une nouvelle demande et spécifier le principal de sécurité, la définition de rôle, requestType = SelfDeactivate
et l’étendue. Pour appeler cette API, vous devez disposer d’une attribution de rôle activée sur l’étendue.
Utilisez un outil GUID pour générer un identificateur unique qui servira d’identificateur d’attribution de rôle. Cet identificateur est au format :
00000000-0000-0000-0000-000000000000
.Commencez par la requête suivante :
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "SelfDeactivate" } }
Dans l’URI, remplacez {scope} par l’étendue de suppression de l’attribution de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
Ressource Remplacez {roleAssignmentScheduleRequestName} par l’identificateur GUID de l’attribution de rôle.
Just-Enough-Access (JEA)
Si un utilisateur a une attribution de rôle éligible sur une ressource (parent), il peut choisir d’activer le rôle au niveau enfant de la ressource parente au lieu de l’étendue parente entière. Par exemple, si un utilisateur a Contributor
un rôle éligible dans un abonnement, il peut activer le rôle au niveau d’un groupe de ressources enfant de l’abonnement.
Pour obtenir la liste de tous les enfants d’une ressource sur laquelle vous disposez d’un accès éligible, vous pouvez utiliser l’API Ressources enfants éligibles .
Commencez par la requête suivante :
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/eligibleChildResources?api-version=2020-10-01&$filter={filter}
Dans l’URI, remplacez {scope} par l’étendue dont vous souhaitez lister les attributions de rôle.
Étendue Type providers/Microsoft.Management/managementGroups/{mg-name}
Groupe d’administration subscriptions/{subscriptionId}
Abonnement subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Groupe de ressources Remplacez {filter} par la condition que vous voulez appliquer pour filtrer la liste des attributions de rôle.
Filtrer Description $filter=resourceType+eq+'Subscription'
Répertorier les ressources de type = 'Abonnement'. $filter=$filter=resourceType+eq+'subscription'+or+resourceType+eq+'resourcegroup''
Répertorier les ressources de type = 'Subscription' ou type = 'ResourceGroup'. Utiliser le
id
de toute ressource enfant à utiliser commescope
pour l’activationRoleAssignmentScheduleRequest
Erreurs courantes retournées pour une nouvelle requête
Voici une liste d’erreurs courantes que vous pouvez rencontrer lors de la création d’une demande et de la façon de les atténuer.
Message d’erreur | Explanantion | Limitation des risques |
---|---|---|
code : RoleAssignmentExistsmessage : l’attribution de rôle existe déjà. |
Une attribution de rôle similaire existe déjà | Vous pouvez GET cette attribution de rôle et vérifier sa planification. |
code : RoleAssignmentRequestPolicyValidationFailedmessage : Les règles de stratégie suivantes ont échoué : ["ExpirationRule"] |
Le ScheduleInfo spécifié dans la demande dépasse la durée maximale autorisée |
Vous pouvez GET utiliser RoleManagementPolicy pour cela RoleDefinitionId et case activéeRoleManagementPolicyExpirationRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : Les règles de stratégie suivantes ont échoué : ["JustificationRule"] |
Vous devez spécifier un Justification dans le corps de la demande |
Vous pouvez GET utiliser RoleManagementPolicy pour cela RoleDefinitionId et case activéeRoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : Les règles de stratégie suivantes ont échoué : ["EligibilityRule"] |
Il n’existe pas de valide RoleEligibilityScheduleInstance pour activer ce rôle |
Un administrateur de ressources doit créer un RoleEligibilityScheduleRequest pour ce principal |
code : RoleAssignmentRequestPolicyValidationFailedmessage : Les règles de stratégie suivantes ont échoué : ["TicketingRule"] |
Vous devez spécifier un TicketInfo dans le corps de la demande |
Vous pouvez GET utiliser RoleManagementPolicy pour cela RoleDefinitionId et case activéeRoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : Les règles de stratégie suivantes ont échoué : ["MfaRule"] |
Vous devez effectuer Azure Multi-Factor Authentication pour envoyer cette demande | Vous pouvez GET utiliser RoleManagementPolicy pour cela RoleDefinitionId et case activéeRoleManagementPolicyEnablementRule |