Anmerkung
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.
In diesem Lernprogramm verwenden Sie den Azure App-Konfigurationsdienst zusammen mit Azure Key Vault. Die Dienste App Configuration und Key Vault ergänzen sich gegenseitig und werden bei den meisten Anwendungsbereitstellungen gemeinsam eingesetzt.
Ihre Anwendung kann den App-Konfigurationsclientanbieter verwenden, um Key Vault-Verweise abzurufen, genau wie für alle anderen Schlüssel, die in der App-Konfiguration gespeichert sind. Wenn Sie einen Key Vault-Verweis auf die App-Konfiguration hinzufügen, erstellt die App-Konfiguration einen Schlüssel, der auf den im Key Vault gespeicherten Wert verweist. Der Wert, den die App-Konfiguration speichert, ist kein Key Vault-Wert oder keine Anmeldeinformationen. Stattdessen ist es ein URI, der auf den Wert im Key Vault verweist. Da der Clientanbieter den Schlüssel als Key Vault-Referenz erkennt, verwendet er Key Vault, um seinen Wert abzurufen.
Ihre Anwendung ist für die ordnungsgemäße Authentifizierung sowohl bei App Configuration als auch bei Key Vault zuständig. Die beiden Dienste kommunizieren nicht direkt.
In diesem Tutorial wird veranschaulicht, wie Sie Key Vault-Verweise in Ihrem Code implementieren. Sie baut auf der Web-App auf, die im ASP.NET Core-Schnellstart eingeführt und bei den Voraussetzungen aufgeführt ist. Bevor Sie fortfahren, führen Sie diese Schnellstartanleitung aus.
Für die Ausführung der Schritte dieses Tutorials können Sie einen beliebigen Code-Editor verwenden. Visual Studio Code ist beispielsweise ein plattformübergreifender Code-Editor, der für die Betriebssysteme Windows, macOS und Linux verfügbar ist.
In diesem Tutorial erfahren Sie:
- Erstellen eines App Configuration-Schlüssels, der auf einen in Key Vault gespeicherten Wert verweist
- Zugreifen auf den Wert dieses Schlüssels über eine ASP.NET Core-Webanwendung
Voraussetzungen
Beenden Sie den Schnellstart zum Erstellen einer ASP.NET Core-App mit App-Konfiguration.
Erstellen eines Schlüsseltresors
Wechseln Sie zum Azure-Portal, und wählen Sie dann " Ressource erstellen" aus.
Geben Sie Key Vault in das Suchfeld ein. Wählen Sie in der Ergebnisliste Key Vault aus.
Wählen Sie auf der Seite "Key Vault " die Option "Erstellen" aus.
Geben Sie auf der Seite "Key Vault erstellen" die folgenden Informationen ein:
- Für Abonnement: Wählen Sie ein Abonnement aus.
- Für Ressourcengruppe: Geben Sie den Namen einer vorhandenen Ressourcengruppe ein, oder wählen Sie "Neu erstellen" aus, und geben Sie einen Ressourcengruppennamen ein.
- Für Schlüsseltresorname: Geben Sie einen eindeutigen Namen ein.
- Für Region: Wählen Sie einen Speicherort aus.
Verwenden Sie für die anderen Optionen die Standardwerte.
Klicken Sie auf Überprüfen + erstellen.
Nachdem das System Ihre Eingaben überprüft und anzeigt, wählen Sie "Erstellen" aus.
An diesem Punkt ist nur Ihr Azure-Konto für den Zugriff auf diesen neuen Tresor autorisiert.
Hinzufügen eines Geheimnisses zu Key Vault
Um den Key Vault-Abruf in Ihrer App zu testen, fügen Sie zuerst einen Geheimschlüssel zum Tresor hinzu, indem Sie die folgenden Schritte ausführen. Der geheime Schlüssel, den Sie hinzufügen, heißt "Nachricht", und der Wert lautet "Hello from Key Vault".
Wählen Sie im Ressourcenmenü "Key Vault" die Option "Geheime Objekte"> aus.
Wählen Sie die Option Generieren/Importieren aus.
Geben Sie im Dialogfeld " Geheime Schlüssel erstellen " die folgenden Werte ein:
- Für Uploadoptionen: Geben Sie Manuell ein.
- Name:Nachricht eingeben.
- Für Geheimwert: Geben Sie Hello from Key Vault ein.
Verwenden Sie für die anderen Optionen die Standardwerte.
Klicken Sie auf Erstellen.
Hinzufügen eines Key Vault-Verweises zu App Configuration
Melden Sie sich beim Azure-Portal an. Wählen Sie "Alle Ressourcen" und dann den App-Konfigurationsspeicher aus, den Sie in der Schnellstartanleitung erstellen.
Wählen Sie den Konfigurations-Explorer aus.
Wählen Sie"Key Vault-Referenz> aus, und geben Sie dann die folgenden Werte ein:
- Für Schlüssel: Geben Sie "TestApp:Settings:KeyVaultMessage" ein.
- Für Bezeichnung: Lassen Sie den Wert leer.
- Für Abonnement, Ressourcengruppe und Key Vault: Geben Sie die Werte ein, die Sie beim Erstellen des Schlüsseltresors zuvor in diesem Tutorial verwendeten.
- Für Secret: Wählen Sie das Geheimnis mit dem Namen Message, das Sie im vorherigen Abschnitt erstellt haben.
Aktualisieren des Codes für die Verwendung eines Key Vault-Verweises
Wechseln Sie zu dem Ordner, der das ASP.NET Core Web App-Projekt enthält, das Sie in der Schnellstartanleitung erstellt haben.
Führen Sie an der Eingabeaufforderung den folgenden Befehl aus. Mit diesem Befehl wird der
Azure.IdentityNuGet-Paketverweis zu Ihrer Projektdatei hinzugefügt oder aktualisiert.dotnet add package Azure.IdentityÖffnen Sie Program.cs. Fügen Sie im
usingDirektivenabschnitt die folgende Zeile hinzu, um die Typen aus demAzure.IdentityNamespace zu importieren:using Azure.Identity;Ersetzen Sie in Program.cs den Aufruf der
AddAzureAppConfigurationMethode durch den Aufruf im folgenden Code. Der aktualisierte Anruf enthält dieConfigureKeyVaultOption. Diese Option verwendet dieSetCredentialMethode, um die Anmeldeinformationen zu übergeben, die zum Authentifizieren mit Ihrem Key Vault erforderlich sind.var builder = WebApplication.CreateBuilder(args); // Retrieve the App Configuration endpoint. string endpoint = builder.Configuration.GetValue<string>("Endpoints:AppConfiguration") // Load the configuration from App Configuration. builder.Configuration.AddAzureAppConfiguration(options => { options.Connect(new Uri(endpoint), new DefaultAzureCredential()); options.ConfigureKeyVault(keyVaultOptions => { keyVaultOptions.SetCredential(new DefaultAzureCredential()); }); });Tipp
Wenn Sie mehrere Schlüssel-Tresore haben, verwendet das System dieselben Anmeldeinformationen für alle. Wenn Ihre Schlüsselarchive unterschiedliche Zugangsdaten benötigen, können Sie diese mit den
Register- oderSetSecretResolver-Methoden derAzureAppConfigurationKeyVaultOptions-Klasse festlegen.Um auf die Werte von Key Vault-Verweisen in Ihrem Code zuzugreifen, wechseln Sie zum Ordner "Seiten" in Ihrem Projekt. Öffnen Sie Index.cshtml , und ersetzen Sie den Inhalt durch den folgenden Code. Der Code im vorherigen Block initialisiert die App-Konfigurationsverbindung und richtet die Key Vault-Verbindung ein. Daher können Sie in Index.cshtml auf die Werte von Key Vault-Verweisen genauso zugreifen, wie Sie auf die Werte regulärer App-Konfigurationsschlüssel zugreifen.
@page @using Microsoft.Extensions.Configuration @inject IConfiguration Configuration <style> body { background-color: @Configuration["TestApp:Settings:BackgroundColor"] } h1 { color: @Configuration["TestApp:Settings:FontColor"]; font-size: @Configuration["TestApp:Settings:FontSize"]px; } </style> <h1>@Configuration["TestApp:Settings:Message"] and @Configuration["TestApp:Settings:KeyVaultMessage"]</h1>Dieser Code greift auf den Wert des Key Vault-Verweises
TestApp:Settings:KeyVaultMessageauf die gleiche Weise zu, wie er auf den Konfigurationswert zugreiftTestApp:Settings:Message.
Gewähren des Zugriffs auf Key Vault für Ihre App
Die App-Konfiguration greift nicht auf Ihren Schlüsseltresor zu. Stattdessen liest Ihre App direkt aus Key Vault, daher müssen Sie Ihrer App Zugriff auf die geheimen Schlüssel in Ihrem Schlüsseltresor gewähren. Auf diese Weise bleiben die Geheimnisse immer bei Ihrer App. Sie können eine Key Vault-Zugriffsrichtlinie oder eine rollenbasierte Azure-Zugriffssteuerung verwenden, um den Zugriff zu gewähren.
Der Code in diesem Lernprogramm verwendet die Klasse für die DefaultAzureCredential Authentifizierung. Diese aggregierte Tokenanmeldeinformation versucht automatisch mehrere Anmeldeinformationstypen, z. B. EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential und VisualStudioCredential. Weitere Informationen hierzu finden Sie in der Dokumentation unter DefaultAzureCredential-Klasse.
Sie können DefaultAzureCredential durch jeden expliziten Anmeldedatentyp ersetzen. Wenn Sie jedoch verwenden DefaultAzureCredential, kann Ihr Code in lokalen und Azure-Umgebungen ausgeführt werden. Wenn Ihre App beispielsweise in Azure ausgeführt wird, verwendet DefaultAzureCredentialManagedIdentityCredential. Wenn Sie Visual Studio jedoch für die lokale Entwicklung verwenden, fällt DefaultAzureCredential automatisch auf SharedTokenCacheCredential oder VisualStudioCredential zurück.
Alternativ können Sie die AZURE_TENANT_ID, AZURE_CLIENT_ID und AZURE_CLIENT_SECRET Umgebungsvariablen festlegen. Wenn Sie dies tun, verwendet DefaultAzureCredential diese Variablen und EnvironmentCredential, um sich bei Ihrem Schlüsseltresor zu authentifizieren.
Nachdem Sie Ihre App in einem Azure-Dienst mit aktivierter verwalteter Identität bereitgestellt haben, z. B. Azure App Service, Azure Kubernetes Service oder Azure Container Instance, gewähren Sie der verwalteten Identität des Azure-Diensts die Berechtigung für den Zugriff auf Ihren Schlüsseltresor.
DefaultAzureCredential verwendet wird automatisch ManagedIdentityCredential, wenn Ihre App in Azure ausgeführt wird. Sie können dieselbe verwaltete Identität verwenden, um sich sowohl mit App Configuration als auch mit dem Key Vault authentifizieren. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten für den Zugriff auf App Configuration.
Lokales Erstellen und Ausführen der App
Um die App mithilfe der .NET CLI zu erstellen, führen Sie den folgenden Befehl an einer Eingabeaufforderung aus:
dotnet buildVerwenden Sie nach Abschluss des Buildvorgangs den folgenden Befehl, um die Web-App lokal auszuführen:
dotnet runSuchen Sie in der Ausgabe des
dotnet run-Befehls nach einer URL, die die Web-App überwacht, z. B.http://localhost:5292. Öffnen Sie einen Browser, und wechseln Sie zu dieser URL.
Der Text auf der Webseite enthält die folgenden Komponenten:
- Der Wert, der dem
TestApp:Settings:MessageSchlüssel im App-Konfigurationsspeicher zugeordnet ist - Der Wert des im Schlüsseltresor gespeicherten Nachrichtengeheimnisses
- Der Wert, der dem
Bereinigen von Ressourcen
Wenn Sie die in diesem Artikel erstellten Ressourcen nicht mehr verwenden möchten, löschen Sie die erstellte Ressourcengruppe, um Kosten zu vermeiden.
Wichtig
Das Löschen einer Ressourcengruppe kann nicht rückgängig gemacht werden. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Falls Sie die Ressourcen für diesen Artikel in einer Ressourcengruppe erstellt haben, die andere beizubehaltende Ressourcen enthält, löschen Sie die Ressourcen einzeln über den entsprechenden Bereich, statt die Ressourcengruppe zu löschen.
- Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
- Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
- Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
- Wählen Sie die Option Ressourcengruppe löschen.
- Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen. Geben Sie zur Bestätigung den Namen Ihrer Ressourcengruppe ein, und klicken Sie auf Löschen.
Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.