Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwaltete Identitäten stellen eine automatisch verwaltete Identität in Microsoft Entra-ID für Anwendungen bereit, die beim Herstellen einer Verbindung mit Ressourcen verwendet werden, die die Microsoft Entra-Authentifizierung unterstützen. Sie können API-Berechtigungen direkt dem Dienstprinzipal einer verwalteten Identität erteilen, sodass keine Anmeldeinformationen in Code- oder Konfigurationsdateien gespeichert werden müssen.
In diesem Artikel erfahren Sie, wie Sie Microsoft Graph-API Berechtigungen sowohl für vom System zugewiesene als auch für vom Benutzer zugewiesene verwaltete Identitäten mithilfe von Microsoft Entra PowerShell erteilen und widerrufen.
Voraussetzungen
- Ein Microsoft Entra Benutzerkonto. Falls Sie noch über keins verfügen, können Sie ein kostenloses Konto erstellen.
- Installieren Sie das Microsoft Entra PowerShell-Modul.
- Eine Azure Ressource, für die entweder eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität aktiviert ist.
- Um API-Berechtigungen für verwaltete Identitäten zu gewähren, benötigen Sie eine der folgenden Rollen:
- Privileged Role Administrator (erforderlich, wenn Berechtigungen für Microsoft Graph oder andere Microsoft Erstanbieteranwendungen erteilt werden)
- Anwendungsadministrator
- Cloud-Anwendungsadministrator
Erteilen von API-Berechtigungen für eine verwaltete Identität
Führen Sie die folgenden Schritte aus, um Microsoft Graph-API Berechtigungen für Ihre verwaltete Identität zu erteilen.
Herstellen einer Verbindung mit Microsoft Entra
Um API-Berechtigungen für verwaltete Identitäten zu gewähren, stellen Sie mit den Bereichen
Application.ReadWrite.AllundAppRoleAssignment.ReadWrite.Alleine Verbindung her:Connect-Entra -Scopes "Application.ReadWrite.All", "AppRoleAssignment.ReadWrite.All"Caution
Mit der
AppRoleAssignment.ReadWrite.AllBerechtigung kann eine App oder ein Dienst Berechtigungserteilungen verwalten und Berechtigungen für alle Apps, Benutzer oder Gruppen in Ihrer Organisation erhöhen. Erteilen Sie diese Berechtigung nur an vertrauenswürdige Administratoren.Dienstprinzipal der verwalteten Identität identifizieren
Suchen Sie den Dienstprinzipal, der Ihre verwaltete Identität in Microsoft Entra ID darstellt.
Verwenden Sie für vom System zugewiesene verwaltete Identitäten den Azure Ressourcennamen:
$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)"Hinweis
Wenn der Filter mehrere Ergebnisse zurückgibt (z. B. wenn mehrere verwaltete Identitäten denselben Anzeigenamen aufweisen), verwenden Sie die Objekt-ID, um den richtigen Dienstprinzipal zu identifizieren:
Get-EntraServicePrincipal -ServicePrincipalId '<object-id>'Verwenden Sie für vom Benutzer zugewiesene verwaltete Identitäten den Namen der verwalteten Identität:
$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 }Rufen Sie den Microsoft Graph-Dienstprinzipal ab
Rufen Sie das Microsoft Graph-Dienstprinzipalobjekt ab:
$graphServicePrincipal = Get-EntraServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'"Identifizieren der erforderlichen API-Berechtigungen
Ermitteln Sie die spezifischen Microsoft Graph Berechtigungen, die Ihre verwaltete Identität erfordert:
$appRole = $graphServicePrincipal.AppRoles | Where-Object { $_.Value -eq "User.Read.All" }Erteilen von API-Berechtigungen für die verwaltete Identität
Erteilen Sie Ihrer verwalteten Identität die Berechtigung für die API:
$params = @{ ServicePrincipalId = $managedIdentitySP.Id PrincipalId = $managedIdentitySP.Id ResourceId = $graphServicePrincipal.Id AppRoleId = $appRole.Id } $appRoleAssignment = New-EntraServicePrincipalAppRoleAssignment @paramsÜberprüfen der erteilten Berechtigungen
Vergewissern Sie sich, dass die Berechtigungen erfolgreich erteilt wurden:
$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)" }
Widerrufen von API-Berechtigungen aus einer verwalteten Identität
Führen Sie die folgenden Schritte aus, um Microsoft Graph-API Berechtigungen von Ihrer verwalteten Identität zu widerrufen.
Identifizieren der Berechtigung zum Entfernen
Suchen Sie die spezifische App-Rollenzuweisung, die Sie widerrufen möchten:
$assignmentToRemove = Get-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id | Where-Object { $_.AppRoleId -eq $appRole.Id -and $_.ResourceId -eq $graphServicePrincipal.Id }Entfernen der App-Rollenzuweisung
Löschen Sie die App-Rollenzuweisung mithilfe ihrer ID:
if ($assignmentToRemove) { Remove-EntraServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentitySP.Id -AppRoleAssignmentId $assignmentToRemove.Id Write-Host "Successfully removed permission: $($appRole.Value)" }Überprüfen, ob die Berechtigung entfernt wurde
Vergewissern Sie sich, dass keine Zuordnungen für die widerrufene Berechtigung verbleiben:
$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)." }