Zuweisen des Zugriffs einer verwalteten Identität auf eine Anwendungsrolle mithilfe von PowerShell
Verwaltete Identitäten für Azure-Ressourcen stellen Azure-Diensten eine Identität in Microsoft Entra ID bereit. Für die Funktionalität sind keine Anmeldeinformationen in Ihrem Code erforderlich. Azure-Dienste nutzen diese Identitäten, um sich bei Diensten zu authentifizieren, die die Microsoft Entra -Authentifizierung unterstützen. Anwendungsrollen stellen eine Art rollenbasierter Zugriffssteuerung dar und ermöglichen es einem Dienst, Autorisierungsregeln zu implementieren.
Hinweis
Die Token, die Ihre Anwendung empfängt, werden von der zugrunde liegenden Infrastruktur zwischengespeichert, was bedeutet, dass alle Änderungen an den Rollen der verwalteten Identität viel Zeit in Anspruch nehmen können. Weitere Informationen finden Sie unter Einschränkung der Verwendung verwalteter Identitäten für die Autorisierung.
In diesem Artikel erfahren Sie, wie Sie einer Anwendungsrolle, die durch eine andere Anwendung verfügbar gemacht wird, über das Microsoft Graph-PowerShell SDK eine verwaltete Identität zuweisen.
Voraussetzungen
- Wenn Sie nicht mit verwalteten Identitäten für Azure-Ressourcen vertraut sind, helfen Ihnen die Informationen in der Übersicht weiter. Machen Sie sich den Unterschied zwischen einer vom System und einer vom Benutzer zugewiesenen verwalteten Identität bewusst.
- Wenn Sie noch kein Azure-Konto haben, sollten Sie sich für ein kostenloses Konto registrieren, bevor Sie fortfahren.
- Die Beispielskripts können auf zwei Arten ausgeführt werden:
- Verwenden Sie die Azure Cloud Shell, die Sie über die Schaltfläche Testen in der rechten oberen Ecke der Codeblöcke öffnen können.
- Führen Sie Skripts lokal aus, indem Sie die neueste Version des Microsoft Graph-PowerShell SDK installieren.
Zuweisen des Zugriffs einer verwalteten Identität auf die App-Rolle einer anderen Anwendung
Aktivieren Sie die verwaltete Identität für eine Azure-Ressource, zum Beispiel einen virtuellen Azure-Computer.
Suchen Sie die Objekt-ID des Dienstprinzipals der verwalteten Identität.
Bei einer systemseitig zugewiesenen verwalteten Identität finden Sie die Objekt-ID im Azure-Portal auf der Seite Identität der Ressource. Sie können auch das folgende PowerShell-Skript verwenden, um die Objekt-ID zu suchen. Sie benötigen die Ressourcen-ID der in Schritt 1 erstellten Ressource, die Sie im Azure-Portal auf der Seite Eigenschaften der Ressource finden.
$resourceIdWithManagedIdentity = '/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.Compute/virtualMachines/{my virtual machine name}' (Get-AzResource -ResourceId $resourceIdWithManagedIdentity).Identity.PrincipalId
Bei einer benutzerseitig zugewiesenen verwalteten Identität finden Sie die Objekt-ID der verwalteten Identität im Azure-Portal auf der Seite Übersicht der Ressource. Sie können auch das folgende PowerShell-Skript verwenden, um die Objekt-ID zu suchen. Sie benötigen die Ressourcen-ID der benutzerseitig zugewiesenen verwalteten Identität.
$userManagedIdentityResourceId = '/subscriptions/{my subscription ID}/resourceGroups/{my resource group name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{my managed identity name}' (Get-AzResource -ResourceId $userManagedIdentityResourceId).Properties.PrincipalId
Erstellen Sie eine neue Anwendungsregistrierung, um den Dienst zu repräsentieren, an den Ihre verwaltete Identität eine Anforderung senden soll. Wenn die API oder der Dienst, die bzw. der die Gewährung der App-Rolle für die verwaltete Identität verfügbar macht, bereits über einen Dienstprinzipal in Ihrem Microsoft Entra -Mandanten verfügt, überspringen Sie diesen Schritt. Sie können diesen Schritt beispielsweise dann überspringen, wenn Sie der verwalteten Identität Zugriff auf die Microsoft Graph-API gewähren möchten.
Suchen Sie die Objekt-ID des Dienstprinzipals der Dienstanwendung. Sie finden diese im Azure-Portal. Wechseln Sie zu Microsoft Entra ID und öffnen Sie die Seite Unternehmensanwendungen. Suchen Sie nach der Anwendung und dort nach der Objekt-ID. Sie können die Objekt-ID des Dienstprinzipals auch mithilfe des folgenden PowerShell-Skripts anhand ihres Anzeigenamens suchen:
$serverServicePrincipalObjectId = (Get-MgServicePrincipal -Filter "DisplayName eq '$applicationName'").Id
Hinweis
Anzeigenamen für Anwendungen sind nicht eindeutig, daher müssen Sie überprüfen, ob Sie den Dienstprinzipal der richtigen Anwendung abrufen.
Fügen Sie der in Schritt 3 erstellten Anwendung eine App-Rolle hinzu. Sie können die Rolle über das Azure-Portal oder mithilfe von Microsoft Graph erstellen. Sie können beispielsweise eine App-Rolle hinzufügen, indem Sie die folgende Abfrage im Graph-Explorer ausführen:
PATCH /applications/{id}/ { "appRoles": [ { "allowedMemberTypes": [ "User", "Application" ], "description": "Read reports", "id": "1e250995-3081-451e-866c-0f6efef9c638", "displayName": "Report reader", "isEnabled": true, "value": "report.read" } ] }
Weisen Sie der verwalteten Identität die App-Rolle zu. Sie benötigen die folgenden Informationen, um die App-Rolle zuzuweisen:
managedIdentityObjectId
: die Objekt-ID des Dienstprinzipals der verwalteten Identität, die Sie in Schritt 2 ermittelt habenserverServicePrincipalObjectId
: die Objekt-ID des Dienstprinzipals der Serveranwendung, die Sie in Schritt 4 ermittelt habenappRoleId
: die ID der App-Rolle, die von der Server-App verfügbar gemacht wird und die Sie in Schritt 5 generiert haben; im Beispiel lautet die App-Rollen-ID0566419e-bb95-4d9d-a4f8-ed9a0f147fa6
Führen Sie den folgenden PowerShell-Befehl aus, um die Rollenzuweisung hinzuzufügen:
New-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $serverServicePrincipalObjectId ` -PrincipalId $managedIdentityObjectId ` -ResourceId $serverServicePrincipalObjectId ` -AppRoleId $appRoleId
Vollständiges Skript
Dieses Beispielskript zeigt, wie Sie die verwaltete Identität einer Azure-Web-App einer App-Rolle zuweisen.
# Install the module.
# Install-Module Microsoft.Graph -Scope CurrentUser
# Your tenant ID (in the Azure portal, under Azure Active Directory > Overview).
$tenantID = '<tenant-id>'
# The name of your web app, which has a managed identity that should be assigned to the server app's app role.
$webAppName = '<web-app-name>'
$resourceGroupName = '<resource-group-name-containing-web-app>'
# The name of the server app that exposes the app role.
$serverApplicationName = '<server-application-name>' # For example, MyApi
# The name of the app role that the managed identity should be assigned to.
$appRoleName = '<app-role-name>' # For example, MyApi.Read.All
# Look up the web app's managed identity's object ID.
$managedIdentityObjectId = (Get-AzWebApp -ResourceGroupName $resourceGroupName -Name $webAppName).identity.principalid
Connect-MgGraph -TenantId $tenantId -Scopes 'Application.Read.All','Application.ReadWrite.All','AppRoleAssignment.ReadWrite.All','Directory.AccessAsUser.All','Directory.Read.All','Directory.ReadWrite.All'
# Look up the details about the server app's service principal and app role.
$serverServicePrincipal = (Get-MgServicePrincipal -Filter "DisplayName eq '$serverApplicationName'")
$serverServicePrincipalObjectId = $serverServicePrincipal.Id
$appRoleId = ($serverServicePrincipal.AppRoles | Where-Object {$_.Value -eq $appRoleName }).Id
# Assign the managed identity access to the app role.
New-MgServicePrincipalAppRoleAssignment `
-ServicePrincipalId $serverServicePrincipalObjectId `
-PrincipalId $managedIdentityObjectId `
-ResourceId $serverServicePrincipalObjectId `
-AppRoleId $appRoleId
Nächste Schritte
- Verwaltete Identitäten für Azure-Ressourcen – Übersicht
- Informationen zum Aktivieren einer verwalteten Identität auf einem virtuellen Azure-Computer finden Sie unter Konfigurieren von verwalteten Identitäten für Azure-Ressourcen auf einem virtuellen Azure-Computer mithilfe von PowerShell.