Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le identità gestite forniscono un'identità gestita automaticamente in Microsoft Entra ID per le applicazioni da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra. È possibile concedere le autorizzazioni API direttamente all'entità servizio di un'identità gestita, eliminando la necessità di archiviare le credenziali nei file di codice o di configurazione.
Questo articolo illustra come concedere e revocare le autorizzazioni di Microsoft API Graph per le identità gestite assegnate dal sistema e assegnate dall'utente usando Microsoft Entra PowerShell.
Prerequisiti
- Un account utente di Microsoft Entra. Se non si dispone già di un account, è possibile creare un account gratuitamente.
- Installare il modulo Microsoft Entra PowerShell .
- Una risorsa Azure con un'identità gestita abilitata, assegnata dal sistema o assegnata dall'utente.
- Per concedere autorizzazioni API alle identità gestite, è necessario uno dei ruoli seguenti:
- Amministratore ruolo con privilegi (obbligatorio quando si concedono le autorizzazioni per Microsoft Graph o altre applicazioni di Microsoft first-party)
- Amministratore di applicazioni
- Amministratore di applicazioni cloud
Concedere autorizzazioni API a un'identità gestita
Seguire questa procedura per concedere a Microsoft API Graph le autorizzazioni per l'identità gestita.
Connettersi a Microsoft Entra
Per concedere le autorizzazioni API alle identità gestite, connettersi con gli ambiti
Application.ReadWrite.AlleAppRoleAssignment.ReadWrite.All:Connect-Entra -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"Attenzione
L'autorizzazione
AppRoleAssignment.ReadWrite.Allconsente a un'app o a un servizio di gestire le concessioni di autorizzazioni e elevare privilegi per qualsiasi app, utente o gruppo dell'organizzazione. Concedere questa autorizzazione solo agli amministratori attendibili.Identificare l'entità servizio dell'identità gestita
Trova l'entità servizio che rappresenta la tua identità gestita in Microsoft Entra ID.
Per le identità gestite assegnate dal sistema, usare il nome della risorsa 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
Se il filtro restituisce più risultati( ad esempio, quando più identità gestite condividono lo stesso nome visualizzato), usare l'ID oggetto per identificare l'entità servizio corretta:
Get-EntraServicePrincipal -ServicePrincipalId '<object-id>'.Per le identità gestite assegnate dall'utente, usare il nome dell'identità gestita:
$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 }Ottenere l'entità servizio del Microsoft Graph
Recuperare l'entità servizio Microsoft Graph:
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"Identificare le autorizzazioni API necessarie
Trovare le autorizzazioni Microsoft Graph specifiche necessarie per l'identità gestita:
$appRole = $graphServicePrincipal.AppRoles | Where-Object { $_.Value -eq "User.Read.All" }Concedere autorizzazioni API all'identità gestita
Concedi le autorizzazioni API alla tua identità gestita:
$params = @{ ServicePrincipalId = $managedIdentitySP.Id PrincipalId = $managedIdentitySP.Id ResourceId = $graphServicePrincipal.Id AppRoleId = $appRole.Id } $appRoleAssignment = New-EntraServicePrincipalAppRoleAssignment @paramsVerificare le autorizzazioni concesse
Verificare che le autorizzazioni siano state concesse correttamente:
$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)" }
Revocare le autorizzazioni API da un'identità gestita
Seguire questa procedura per revocare le autorizzazioni di Microsoft API Graph dall'identità gestita.
Identificare l'autorizzazione da rimuovere
Individuare l'assegnazione specifica di ruolo dell'app da revocare:
$assignmentToRemove = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id | Where-Object { $_.AppRoleId -eq $appRole.Id -and $_.ResourceId -eq $graphServicePrincipal.Id }Rimuovere l'assegnazione di ruolo dell'app
Eliminare l'assegnazione di ruolo dell'app usando il relativo ID:
if ($assignmentToRemove) { Remove-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id -AppRoleAssignmentId $assignmentToRemove.Id Write-Host "Successfully removed permission: $($appRole.Value)" }Verificare che l'autorizzazione sia stata rimossa
Verifica che non rimangano assegnazioni per l'autorizzazione revocata:
$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)." }