Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As identidades gerenciadas fornecem uma identidade gerenciada automaticamente na ID do Microsoft Entra para que os aplicativos usem ao se conectar a recursos que dão suporte à autenticação do Microsoft Entra. Você pode conceder permissões de API diretamente à entidade de serviço de uma identidade gerenciada, eliminando a necessidade de armazenar credenciais em arquivos de código ou configuração.
Neste artigo, você aprenderá a conceder e revogar permissões do Microsoft API do Graph para identidades gerenciadas atribuídas pelo sistema e atribuídas pelo usuário usando Microsoft Entra PowerShell.
Prerequisites
- Uma conta de usuário do Microsoft Entra. Se você ainda não tiver uma, poderá criar uma conta gratuitamente.
- Instale o módulo Microsoft Entra PowerShell.
- Um recurso do Azure com uma identidade gerenciada atribuída pelo sistema ou pelo usuário habilitada.
- Para conceder permissões de API para identidades gerenciadas, você precisa de uma das seguintes funções:
- Administrador de funções com privilégios (necessário ao conceder permissões para Microsoft Graph ou outros Microsoft aplicativos de primeira parte)
- Administrador de Aplicações
- Administrador de Aplicativos de Nuvem
Conceder permissões de API a uma identidade gerenciada
Siga estas etapas para conceder permissões do Microsoft API do Graph à sua identidade gerenciada.
Conectar-se ao Microsoft Entra
Para conceder permissões de API a identidades gerenciadas, conecte-se usando os escopos
Application.ReadWrite.AlleAppRoleAssignment.ReadWrite.All:Connect-Entra -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"Caution
A
AppRoleAssignment.ReadWrite.Allpermissão permite que um aplicativo ou serviço gerencie concessões de permissão e eleve privilégios para qualquer aplicativo, usuário ou grupo em sua organização. Conceda essa permissão somente a administradores confiáveis.Identificar a entidade de serviço de identidade gerenciada
Localize a entidade de serviço que representa sua identidade gerenciada no Microsoft Entra ID.
Para identidades gerenciadas atribuídas pelo sistema, use o nome do recurso 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 o filtro retornar vários resultados (por exemplo, quando várias identidades gerenciadas compartilharem o mesmo nome de exibição), use a ID do objeto para identificar a entidade de serviço correta:
Get-EntraServicePrincipal -ServicePrincipalId '<object-id>'.Para identidades gerenciadas atribuídas pelo usuário, use o nome da identidade gerenciada:
$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 }Obter a entidade de serviço do Microsoft Graph
Recupere a entidade de serviço do Microsoft Graph:
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"Identificar as permissões de API necessárias
Localize as permissões de Microsoft Graph específicas que sua identidade gerenciada exige:
$appRole = $graphServicePrincipal.AppRoles | Where-Object { $_.Value -eq "User.Read.All" }Conceder permissões de API à identidade gerenciada
Conceda a permissão de API à sua identidade gerenciada:
$params = @{ ServicePrincipalId = $managedIdentitySP.Id PrincipalId = $managedIdentitySP.Id ResourceId = $graphServicePrincipal.Id AppRoleId = $appRole.Id } $appRoleAssignment = New-EntraServicePrincipalAppRoleAssignment @paramsVerificar as permissões concedidas
Confirme se as permissões foram concedidas com êxito:
$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)" }
Revogar permissões de API de uma identidade gerenciada
Siga estas etapas para revogar as permissões do Microsoft API do Graph de sua identidade gerenciada.
Identificar a permissão para remover
Localize a atribuição de função de aplicativo específica para revogar:
$assignmentToRemove = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id | Where-Object { $_.AppRoleId -eq $appRole.Id -and $_.ResourceId -eq $graphServicePrincipal.Id }Remova a atribuição de função de aplicativo
Exclua a atribuição de função de aplicativo usando sua ID:
if ($assignmentToRemove) { Remove-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id -AppRoleAssignmentId $assignmentToRemove.Id Write-Host "Successfully removed permission: $($appRole.Value)" }Verificar se a permissão foi removida
Verifique se não há atribuições associadas à permissão revogada:
$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)." }