Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les identités managées fournissent une identité managée automatiquement dans l’ID Microsoft Entra pour les applications à utiliser lors de la connexion aux ressources qui prennent en charge l’authentification Microsoft Entra. Vous pouvez accorder des autorisations d’API directement au principal de service d’une identité managée, ce qui élimine la nécessité de stocker les informations d’identification dans le code ou les fichiers de configuration.
Dans cet article, vous allez apprendre à accorder et révoquer des autorisations Microsoft API Graph pour les identités managées affectées par le système et affectées par l’utilisateur à l’aide de Microsoft Entra PowerShell.
Prerequisites
- Un compte d’utilisateur Microsoft Entra. Si vous n’en avez pas déjà un, vous pouvez créer un compte gratuit.
- Installez le module PowerShell Microsoft Entra PowerShell.
- Une ressource Azure avec une identité managée activée, attribuée soit par le système, soit par l’utilisateur.
- Pour accorder des autorisations d’API aux identités managées, vous avez besoin de l’un des rôles suivants :
- Administrateur de rôle privilégié (requis lors de l’octroi d’autorisations à Microsoft Graph ou à d’autres applications Microsoft internes)
- Administrateur d’application
- Administrateur d’application cloud
Accorder des autorisations d’API à une identité managée
Suivez ces étapes pour accorder à Microsoft API Graph des autorisations à votre identité managée.
Se connecter à Microsoft Entra
Pour accorder des autorisations d’API aux identités gérées, connectez-vous avec les portées
Application.ReadWrite.AlletAppRoleAssignment.ReadWrite.All:Connect-Entra -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"Caution
L’autorisation
AppRoleAssignment.ReadWrite.Allpermet à une application ou un service de gérer les octrois d’autorisations et d’élever des privilèges pour n’importe quelle application, utilisateur ou groupe dans votre organisation. Accordez uniquement cette autorisation aux administrateurs approuvés.Identifier le principal du service d’identité managée
Recherchez le principal de service qui représente votre identité managée dans Microsoft Entra ID.
Pour les identités managées affectées par le système, utilisez le nom de la ressource Azure :
$managedIdentityName = "MyAzureVM" $managedIdentitySP = Get-EntraServicePrincipal -Filter "displayName eq '$managedIdentityName' and servicePrincipalType eq 'ManagedIdentity'" if (-not $managedIdentitySP) { Write-Error "Managed identity service principal '$managedIdentityName' not found." -ErrorAction Stop } Write-Host "Found managed identity service principal:" Write-Host "Display Name: $($managedIdentitySP.DisplayName)" Write-Host "Object ID: $($managedIdentitySP.Id)"Note
Si le filtre retourne plusieurs résultats (par exemple, lorsque plusieurs identités managées partagent le même nom d’affichage), utilisez l’ID d’objet pour identifier le principal de service correct :
Get-EntraServicePrincipal -ServicePrincipalId '<object-id>'.Pour les identités gérées attribuées par l’utilisateur, utilisez le nom de l’identité gérée :
$userAssignedMIName = "MyUserAssignedMI" $managedIdentitySP = Get-EntraServicePrincipal -Filter "displayName eq '$userAssignedMIName' and servicePrincipalType eq 'ManagedIdentity'" if (-not $managedIdentitySP) { Write-Error "Managed identity service principal '$userAssignedMIName' not found." -ErrorAction Stop }Obtenir le principal de service Microsoft Graph
Récupérer le principal de service Microsoft Graph :
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"Identifier les autorisations d’API requises
Recherchez les autorisations de Microsoft Graph spécifiques requises par votre identité managée :
$appRole = $graphServicePrincipal.AppRoles | Where-Object { $_.Value -eq "User.Read.All" }Accorder des autorisations d’API à l’identité managée
Accordez l’autorisation d’API à votre identité managée :
$params = @{ ServicePrincipalId = $managedIdentitySP.Id PrincipalId = $managedIdentitySP.Id ResourceId = $graphServicePrincipal.Id AppRoleId = $appRole.Id } $appRoleAssignment = New-EntraServicePrincipalAppRoleAssignment @paramsVérifier les autorisations accordées
Vérifiez que les autorisations ont été accordées avec succès :
$assignments = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id Write-Host "Current app role assignments for $($managedIdentitySP.DisplayName):" foreach ($assignment in $assignments) { $resource = Get-EntraServicePrincipal -ServicePrincipalId $assignment.ResourceId $assignedRole = $resource.AppRoles | Where-Object { $_.Id -eq $assignment.AppRoleId } Write-Host "- Resource: $($resource.DisplayName)" Write-Host " Permission: $($assignedRole.Value)" }
Révoquer des autorisations d’API à partir d’une identité managée
Suivez ces étapes pour révoquer les autorisations microsoft API Graph de votre identité managée.
Identifier l’autorisation de suppression
Recherchez l’attribution de rôle d’application spécifique à révoquer :
$assignmentToRemove = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id | Where-Object { $_.AppRoleId -eq $appRole.Id -and $_.ResourceId -eq $graphServicePrincipal.Id }Supprimer l’attribution de rôle d’application
Supprimer l’attribution de rôle de l’application à l’aide de son identifiant :
if ($assignmentToRemove) { Remove-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id -AppRoleAssignmentId $assignmentToRemove.Id Write-Host "Successfully removed permission: $($appRole.Value)" }Vérifier que l’autorisation a été supprimée
Vérifiez qu’aucune affectation ne reste pour l’autorisation révoquée :
$remainingAssignments = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id if ($remainingAssignments) { Write-Host "Remaining permissions for $($managedIdentitySP.DisplayName):" foreach ($assignment in $remainingAssignments) { $resource = Get-EntraServicePrincipal -ServicePrincipalId $assignment.ResourceId $assignedRole = $resource.AppRoles | Where-Object { $_.Id -eq $assignment.AppRoleId } Write-Host "- $($assignedRole.Value) on $($resource.DisplayName)" } } else { Write-Host "No app role assignments remain for $($managedIdentitySP.DisplayName)." }