Authentifizieren von azure gehosteten Apps für Azure-Ressourcen mit dem Azure SDK für .NET
Wenn eine App in Azure mit einem Dienst wie Azure App Service, Azure Virtual Machines oder Azure Container Instances gehostet wird, wird die Verwendung einer verwalteten Identität empfohlen, um eine App bei Azure-Ressourcen zu authentifizieren.
Eine verwaltete Identität stellt eine Identität für Ihre App bereit, sodass sie eine Verbindung mit anderen Azure-Ressourcen herstellen kann, ohne einen geheimen Schlüssel oder ein anderes Anwendungsgeheimnis verwenden zu müssen. Intern kennt Azure die Identität Ihrer App und die Ressourcen, mit der eine Verbindung hergestellt werden darf. Azure verwendet diese Informationen, um automatisch Microsoft Entra-Token für die App abzurufen, damit sie eine Verbindung mit anderen Azure-Ressourcen herstellen kann, ohne dass Sie Anwendungsgeheimnisse verwalten müssen.
Arten von verwalteten Identitäten
Es gibt zwei Arten von verwalteten Identitäten:
- Vom System zugewiesene verwaltete Identitäten : Diese Art von verwalteter Identität wird von einer Azure-Ressource bereitgestellt und direkt an sie gebunden. Wenn Sie die verwaltete Identität für eine Azure-Ressource aktivieren, erhalten Sie eine systemseitig zugewiesene verwaltete Identität für diese Ressource. Eine systemseitig zugewiesene verwaltete Identität ist an den Lebenszyklus der Azure-Ressource gebunden, der sie zugeordnet ist. Azure löscht automatisch die Identität, wenn die Ressource gelöscht wird. Da Sie nur die verwaltete Identität für die Azure-Ressource aktivieren müssen, die Ihren Code hostt, ist dies der am einfachsten zu verwendende Typ der verwalteten Identität.
- Benutzerseitig zugewiesen: Sie können eine verwaltete Identität auch als eigenständige Azure-Ressource erstellen. Dies wird am häufigsten verwendet, wenn Ihre Lösung über mehrere Workloads verfügt, die auf mehreren Azure-Ressourcen ausgeführt werden und die alle dieselbe Identität und dieselben Berechtigungen gemeinsam nutzen müssen. Wenn Ihre Lösung beispielsweise Über Komponenten verfügt, die auf mehreren App Service- und VM-Instanzen ausgeführt wurden, die alle Zugriff auf denselben Satz von Azure-Ressourcen benötigen, wäre das Erstellen und Verwenden einer benutzerseitig zugewiesenen verwalteten Identität für diese Ressourcen sinnvoll.
In diesem Artikel werden die Schritte zum Aktivieren und Verwenden einer systemseitig zugewiesenen verwalteten Identität für eine App beschrieben. Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität verwenden müssen, lesen Sie den Artikel Verwalten benutzerseitig zugewiesener verwalteter Identitäten , um zu erfahren, wie Sie eine benutzerseitig zugewiesene verwaltete Identität erstellen.
1: Aktivieren der verwalteten Identität in der Azure-Ressource, die die App hosten
Der erste Schritt besteht darin, die verwaltete Identität in Azure-Ressourcen zu aktivieren, die Ihre App hosten. Wenn Sie beispielsweise eine .NET-Anwendung mit Azure App Service hosten, müssen Sie die verwaltete Identität für die App Service Web-App aktivieren, die Ihre App hostet. Wenn Sie einen virtuellen Computer zum Hosten Ihrer App verwenden, würden Sie Ihrem virtuellen Computer die Verwendung einer verwalteten Identität ermöglichen.
Sie können die Verwendung der verwalteten Identität für eine Azure-Ressource mithilfe der Azure-Portal oder der Azure CLI aktivieren.
2 - Zuweisen einer Rolle zur verwalteten Identität
Als Nächstes müssen Sie ermitteln, welche Rollen (Berechtigungen) Ihre App benötigt, und die verwaltete Identität diesen Rollen in Azure zuweisen. Einer verwalteten Identität können Rollen in einem Ressourcen-, Ressourcengruppen- oder Abonnementbereich zugewiesen werden. In diesem Beispiel wird gezeigt, wie Sie Rollen im Ressourcengruppenbereich zuweisen, da die meisten Anwendungen alle azure-Ressourcen in einer einzelnen Ressourcengruppe gruppieren.
3 - Implementieren von DefaultAzureCredential in Ihrer Anwendung
DefaultAzureCredential
unterstützt mehrere Authentifizierungsmethoden und bestimmt die zur Laufzeit verwendete Authentifizierungsmethode. Auf diese Weise kann Ihre App verschiedene Authentifizierungsmethoden in verschiedenen Umgebungen verwenden, ohne umgebungsspezifischen Code zu implementieren.
Die Reihenfolge und die Speicherorte, in denen nach Anmeldeinformationen gesucht wird, DefaultAzureCredential
finden Sie unter DefaultAzureCredential.
Um zu implementieren DefaultAzureCredential
, fügen Sie zuerst die Azure.Identity
Pakete und optional zu Microsoft.Extensions.Azure
Ihrer Anwendung hinzu. Dazu können Sie entweder die Befehlszeile oder den NuGet-Paket-Manager verwenden.
Öffnen Sie eine Terminalumgebung Ihrer Wahl im Anwendungsprojektverzeichnis, und geben Sie den folgenden Befehl ein.
dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure
Auf Azure-Dienste wird im Allgemeinen über entsprechende Clientklassen aus dem SDK zugegriffen. Diese Klassen und Ihre eigenen benutzerdefinierten Dienste sollten in der Datei Program.cs
registriert werden, damit über die Abhängigkeitsinjektion in der gesamten App darauf zugegriffen werden kann. Führen Sie innerhalb von Program.cs
die folgenden Schritte aus, um Ihren Dienst und DefaultAzureCredential
ordnungsgemäß einzurichten.
- Schließen Sie die Namespaces
Azure.Identity
undMicrosoft.Extensions.Azure
mit einerusing
-Direktive ein. - Registrieren Sie den Azure-Dienst mithilfe relevanter Hilfsmethoden.
- Übergeben Sie eine Instanz des
DefaultAzureCredential
-Objekts an dieUseCredential
-Methode.
Ein Beispiel dafür wird im folgenden Codeausschnitt gezeigt.
using Microsoft.Extensions.Azure;
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddAzureClients(x =>
{
x.AddBlobServiceClient(new Uri("https://<account-name>.blob.core.windows.net"));
x.UseCredential(new DefaultAzureCredential());
});
Alternativ können Sie ihre Dienste auch direkter nutzen DefaultAzureCredential
, ohne zusätzliche Azure-Registrierungsmethoden zu verwenden, wie unten zu sehen.
using Azure.Identity;
// Inside of Program.cs
builder.Services.AddSingleton<BlobServiceClient>(x =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Wenn der obige Code während der lokalen Entwicklung auf Ihrer lokalen Arbeitsstation ausgeführt wird, sucht er in den Umgebungsvariablen nach einem Anwendungsdienstprinzipal oder in Visual Studio, VS Code, der Azure CLI oder Azure PowerShell nach einer Reihe von Entwickleranmeldeinformationen, von denen beide zur Authentifizierung der App bei Azure-Ressourcen während der lokalen Entwicklung verwendet werden können.
Bei der Bereitstellung in Azure kann dieser Code Ihre App auch bei anderen Azure-Ressourcen authentifizieren. DefaultAzureCredential
kann Umgebungseinstellungen und Konfigurationen für verwaltete Identitäten abrufen, um sich automatisch bei anderen Diensten zu authentifizieren.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für