Tutorial: Verwenden von Key Vault-Verweisen in einer ASP.NET Core-App

In diesem Tutorial erfahren Sie, wie Sie den Azure App Configuration-Dienst zusammen mit Azure Key Vault verwenden. Die Dienste App Configuration und Key Vault ergänzen sich gegenseitig und werden bei den meisten Anwendungsbereitstellungen gemeinsam eingesetzt.

App Configuration unterstützt Sie beim parallelen Verwenden der Dienste, indem Schlüssel erstellt werden, mit denen auf in Key Vault gespeicherte Werte verwiesen wird. Wenn mit App Configuration Schlüssel dieser Art erstellt werden, werden nicht die eigentlichen Werte, sondern die URIs der Key Vault-Werte gespeichert.

Ihre Anwendung nutzt den App Configuration-Clientanbieter, um Key Vault-Verweise abzurufen, wie dies auch für alle anderen Schlüssel der Fall ist, die in App Configuration gespeichert sind. In diesem Fall sind die in App Configuration gespeicherten Werte URIs, mit denen auf die Werte in Key Vault verwiesen wird. Es sind keine Key Vault-Werte oder -Anmeldeinformationen. Da der Clientanbieter die Schlüssel als Key Vault-Verweise erkennt, wird Key Vault zum Abrufen der zugehörigen Werte verwendet.

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. Dies baut auf der Web-App auf, die in den Schnellstartanleitungen vorgestellt wurde. Durchlaufen Sie zuerst die Schnellstartanleitung zum Erstellen einer ASP.NET Core-App mit Azure App Configuration, bevor Sie fortfahren.

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 lernen Sie Folgendes:

  • 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

Bevor Sie mit diesem Lernprogramm beginnen, installieren Sie das .NET SDK 6.0 oder höher.

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Erstellen eines Tresors

  1. Wählen Sie oben links im Azure-Portal die Option Ressource erstellen aus:

    Screenshot: Option „Ressource erstellen“ im Azure-Portal

  2. Geben Sie im Suchfeld Key Vault ein, und wählen Sie in der Dropdown-Option Key Vault aus.

  3. Wählen Sie in der Ergebnisliste links Key Vault aus.

  4. Wählen Sie unter Schlüsseltresore die Option Hinzufügen aus.

  5. Geben Sie auf der rechten Seite unter Schlüsseltresor erstellen die folgenden Informationen ein:

    • Wählen Sie die Option Abonnement aus, um ein Abonnement auszuwählen.
    • Geben Sie unter Ressourcengruppe eine bereits vorhandene Ressourcengruppe ein, oder wählen Sie die Option Neu erstellen aus, und geben Sie einen Ressourcengruppennamen ein.
    • Unter Schlüsseltresorname müssen Sie einen eindeutigen Namen eingeben.
    • Wählen Sie in der Dropdownliste Region einen Ort aus.
  6. Übernehmen Sie für die anderen Optionen unter Schlüsseltresor erstellen die Standardwerte.

  7. Klicken Sie auf Überprüfen + erstellen.

  8. Das System überprüft die von Ihnen eingegebenen Daten und zeigt sie an. Klicken Sie auf Erstellen.

An diesem Punkt ist nur Ihr Azure-Konto für den Zugriff auf diesen neuen Tresor autorisiert.

Hinzufügen eines Geheimnisses zu Key Vault

Zum Hinzufügen eines Geheimnisses zum Tresor müssen Sie lediglich einige zusätzliche Schritte ausführen. In diesem Fall fügen Sie eine Nachricht hinzu, die Sie verwenden können, um den Key Vault-Abruf zu testen. Die Nachricht hat den Namen Nachricht, und Sie speichern darin den Wert „Hallo von Key Vault“.

  1. Wählen Sie auf den Key Vault-Eigenschaftenseiten die Option Geheimnisse aus.
  2. Wählen Sie die Option Generieren/Importieren aus.
  3. Geben Sie im Bereich Geheimnis erstellen die folgenden Werte ein:
    • Uploadoptionen: Geben Sie Manuell ein.
    • Name: Geben Sie Nachricht ein.
    • Value: Geben Sie Hallo von Key Vault ein.
  4. Übernehmen Sie für die anderen Eigenschaften unter Geheimnis erstellen die Standardwerte.
  5. Klicken Sie auf Erstellen.

Hinzufügen eines Key Vault-Verweises zu App Configuration

  1. Melden Sie sich beim Azure-Portal an. Wählen Sie die Option Alle Ressourcen und dann die Instanz des App Configuration-Speichers aus, die Sie in der Schnellstartanleitung erstellt haben.

  2. Wählen Sie Konfigurations-Explorer aus.

  3. Wählen Sie + Erstellen>Schlüsseltresorverweis aus, und geben Sie dann die folgenden Werte an:

    • Key: Wählen Sie TestApp:Settings:KeyVaultMessage aus.
    • Bezeichnung: Lassen Sie diesen Wert leer.
    • Abonnement, Ressourcengruppe und Schlüsseltresor: Geben Sie die Werte ein, die den Werten des im vorherigen Abschnitt erstellten Schlüsseltresors entsprechen.
    • Geheimnis: Wählen Sie das Geheimnis mit dem Namen Nachricht aus, das Sie im vorherigen Abschnitt erstellt haben.

Ein Screenshot zum Erstellen eines neuen Key Vault-Referenzformulars

Aktualisieren des Codes für die Verwendung eines Key Vault-Verweises

  1. Führen Sie den folgenden Befehl aus, um einen Verweis auf die erforderlichen NuGet-Pakete hinzuzufügen:

    dotnet add package Azure.Identity
    
  2. Öffnen Sie die Datei Program.cs, und fügen Sie Verweise auf die folgenden erforderlichen Pakete hinzu:

    using Azure.Identity;
    
  3. Verwenden Sie App Configuration, indem Sie die AddAzureAppConfiguration-Methode aufrufen. Schließen Sie die Option ConfigureKeyVault ein, und übergeben Sie die richtigen Anmeldeinformationen an Ihren Key Vault, indem Sie die SetCredential-Methode verwenden.

    var builder = WebApplication.CreateBuilder(args);
    
    // Retrieve the connection string
    string connectionString = builder.Configuration.GetConnectionString("AppConfig");
    
    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(connectionString);
    
        options.ConfigureKeyVault(keyVaultOptions =>
        {
            keyVaultOptions.SetCredential(new DefaultAzureCredential());
        });
    });
    

    Tipp

    Wenn Sie über mehrere Schlüsseltresore verfügen, werden dieselben Anmeldeinformationen für alle verwendet. Wenn Ihre Schlüsseltresore unterschiedliche Anmeldeinformationen benötigen, können Sie sie mithilfe der Methoden Register oder SetSecretResolver aus der AzureAppConfigurationKeyVaultOptions-Klasse festlegen.

  4. Wenn Sie die Verbindung mit App Configuration initialisiert haben, richten Sie die Verbindung mit Key Vault ein, indem Sie die Methode ConfigureKeyVault aufrufen. Nach der Initialisierung können Sie auf die Werte der Key Vault-Verweise genauso zugreifen, wie Sie bei den Werten regulärer App Configuration-Schlüssel vorgehen.

    Um diesen Prozess in Aktion zu sehen, öffnen Sie die Datei Index.cshtml im Ordner Ansichten>Home. Ersetzen Sie ihren Inhalt durch den folgenden Code:

    @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>
    

    Sie greifen auf den Wert des Key Vault-Verweises TestApp:Settings:KeyVaultMessage genauso wie auf den Konfigurationswert von TestApp:Settings:Message zu.

Gewähren des Zugriffs auf Key Vault für Ihre App

Die Azure App Configuration greift nicht auf Ihren Schlüsseltresor zu. Ihre App liest direkt aus Key Vault, sodass Sie ihr Lesezugriff auf die Geheimnisse in Ihrem Schlüsseltresor gewähren müssen. Auf diese Weise bleibt das Geheimnis immer in Ihrer App. Der Zugriff kann entweder mithilfe einer Key Vault-Zugriffsrichtlinie oder der rollenbasierten Zugriffssteuerungvon Azure gewährt werden.

Sie verwenden DefaultAzureCredential in Ihrem obigen Code. Es handelt sich um eine aggregierte Tokenanmeldeinformation, die automatisch eine Reihe von Anmeldeinformationstypen wieEnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential, and VisualStudioCredential ausprobiert. Weitere Informationen hierzu finden Sie in der Dokumentation unter DefaultAzureCredential-Klasse. Sie können DefaultAzureCredential explizit durch einen beliebigen Anmeldeinformationstyp ersetzen. Mit DefaultAzureCredential können Sie jedoch den gleichen Code verwenden, der sowohl in lokalen als auch in Azure-Umgebungen ausgeführt wird. Beispielsweise gewähren Sie Ihren eigenen Anmeldeinformationen Zugriff auf Ihren Schlüsseltresor. DefaultAzureCredential greift automatisch auf SharedTokenCacheCredential oder VisualStudioCredential zurück, wenn Sie Visual Studio für die lokale Entwicklung verwenden.

Alternativ können Sie die Umgebungsvariablen AZURE_TENANT_ID, AZURE_CLIENT_ID und AZURE_CLIENT_SECRET festlegen und DefaultAzureCredential wird den geheimen Clientschlüssel verwenden, den Sie über EnvironmentCredential verwenden, um sich bei Ihrem Schlüsseltresor zu authentifizieren. Nachdem Ihre App für einen Azure-Dienst mit aktivierter verwalteter Identität bereitgestellt wurde, wie z. B. dem Azure App Service, Azure Kubernetes Service oder der Azure Containerinstanz, 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 das Verwenden verwalteter Identitäten für den Zugriff auf App Configuration.

Lokales Erstellen und Ausführen der App

  1. Führen Sie den folgenden Befehl in der Befehlsshell aus, um die App mithilfe der .NET-CLI zu erstellen:

    dotnet build
    
  2. Verwenden Sie nach Abschluss des Buildvorgangs den folgenden Befehl, um die Web-App lokal auszuführen:

    dotnet run
    
  3. Öffnen Sie ein Browserfenster, und navigieren Sie zu http://localhost:5000. Dies ist die Standard-URL für die lokal gehostete Web-App.

    Schnellstart: Starten der lokalen App

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.

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.
  2. Geben Sie im Feld Nach Name filtern den Namen Ihrer Ressourcengruppe ein.
  3. Wählen Sie in der Ergebnisliste den Ressourcengruppennamen aus, um eine Übersicht anzuzeigen.
  4. Wählen Sie die Option Ressourcengruppe löschen.
  5. 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.

Nächste Schritte

In diesem Tutorial haben Sie einen Schlüssel in der App Configuration erstellt, mit dem auf einen im Key Vault gespeichertes Geheimnis verwiesen wird. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie Geheimnisse und Zertifikate automatisch aus Key Vault erneut laden:

Informationen zur Verwendung der verwalteten Identität zum Optimieren des Zugriffs auf App Configuration und Key Vault finden Sie im folgenden Tutorial: