Share via


Zelfstudie: Key Vault-verwijzingen gebruiken in een ASP.NET Core-app

In deze zelfstudie gebruikt u de Azure App Configuration-service samen met Azure Key Vault. App Configuration en Key Vault zijn complementaire services die naast elkaar worden gebruikt in de meeste toepassingsimplementaties.

Uw toepassing kan de App Configuration-clientprovider gebruiken om Key Vault-verwijzingen op te halen, net zoals voor andere sleutels die zijn opgeslagen in App Configuration. Wanneer u een Key Vault-verwijzing aan App Configuration toevoegt, maakt App Configuration een sleutel die verwijst naar de waarde die is opgeslagen in Key Vault. De waarde die door App Configuration wordt opgeslagen, is geen Key Vault-waarde of -referentie. In plaats daarvan is het een URI die verwijst naar de waarde in Key Vault. Omdat de clientprovider de sleutel herkent als een Key Vault-verwijzing, wordt Key Vault gebruikt om de waarde ervan op te halen.

Uw toepassing is verantwoordelijk voor het correct verifiëren van zowel App Configuration als Key Vault. De twee services communiceren niet rechtstreeks.

In deze zelfstudie wordt uitgelegd hoe u Key Vault-verwijzingen in uw code kunt implementeren. Deze is gebaseerd op de in de vereisten vermelde ASP.NET Core quickstart web-app. Voltooi deze quickstart voordat u verdergaat.

U kunt elke code-editor gebruiken om de stappen in deze zelfstudie uit te voeren. Visual Studio Code is bijvoorbeeld een platformoverschrijdende code-editor die beschikbaar is voor Windows-, macOS- en Linux-besturingssystemen.

In deze handleiding leert u:

  • Een App Configuration-sleutel maken die verwijst naar een waarde die is opgeslagen in Key Vault.
  • Toegang tot de waarde van deze sleutel vanuit een ASP.NET Core-toepassing.

Vereisten

Voltooi de quickstart Een ASP.NET Core-app maken met App Configuration.

Maak een Key Vault.

  1. Ga naar de Azure portal en selecteer vervolgens Een resource maken.

    Schermopname van Azure Portal. Onder Azure-services is Een resource maken gemarkeerd en worden pictogrammen voor verschillende resourcetypen weergegeven.

  2. Typ Key Vault in het zoekvak. Selecteer Key Vault in de resultatenlijst.

  3. Selecteer Maken op de pagina Key Vault.

  4. Voer op de pagina Een sleutelkluis maken de volgende gegevens in:

    • Voor abonnement: Selecteer een abonnement.
    • Voor de resourcegroep: voer de naam van een bestaande resourcegroep in of selecteer Nieuwe maken en voer een resourcegroepnaam in.
    • Voer een unieke naam in voor de naam van de sleutelkluis.
    • Voor regio: Selecteer een locatie.
  5. Gebruik de standaardwaarden voor de andere opties.

  6. Kies Beoordelen + creëren.

  7. Nadat het systeem uw invoer heeft gevalideerd en weergegeven, selecteert u Maken.

Vanaf nu is uw Azure-account als enige gemachtigd om bewerkingen op deze nieuwe Key Vault uit te voeren.

Een geheim toevoegen aan Key Vault

Om Key Vault-ophalen in uw app te testen, voegt u eerst een geheim toe aan de kluis door de volgende stappen uit te voeren. Het geheim dat u toevoegt, heet Bericht en de waarde is 'Hello from Key Vault'.

  1. SelecteerObjectengeheimen> in het menu van de Key Vault-resource.

  2. Selecteer Genereren/Importeren.

  3. Voer in het dialoogvenster Een geheim maken de volgende waarden in:

    • Voor uploadopties: Voer handmatig in.
    • Voor Naam: Voer Bericht in.
    • Voor geheime waarde: Voer Hello uit Key Vault in.
  4. Gebruik de standaardwaarden voor de andere opties.

  5. Selecteer Maken.

Een sleutelkluisverwijzing toevoegen aan App Configuration

  1. Meld u aan bij het Azure-portaal. Selecteer Alle resources en selecteer vervolgens het App Configuration-archief dat u in de quickstart maakt.

  2. Selecteer Configuratieverkenner.

  3. SelecteerKey Vault-verwijzing> en voer vervolgens de volgende waarden in:

    • Voor Sleutel: Voer TestApp:Settings:KeyVaultMessage in.
    • Voor Label: Laat de waarde leeg.
    • Voor abonnement, resourcegroep en sleutelkluis: voer de waarden in die u gebruikt wanneer u de sleutelkluis eerder in deze zelfstudie maakt.
    • Voor Geheim: Selecteer het geheim met de naam Bericht dat u in de vorige sectie hebt gemaakt.

    Schermopname van het dialoogvenster voor het maken van een Key Vault-verwijzing. De velden Sleutel, Abonnement, Resourcegroep, Sleutelkluis en Geheim worden ingevuld.

Uw code bijwerken om een Key Vault-referentie te gebruiken

  1. Ga naar de map met het ASP.NET Core-web-app-project dat u in de quickstart hebt gemaakt.

  2. Voer de volgende opdracht uit bij een opdrachtprompt: Met deze opdracht wordt de Azure.Identity NuGet-pakketreferentie toegevoegd aan uw projectbestand of wordt het bijgewerkt.

    dotnet add package Azure.Identity
    
  3. Open Program.cs. Voeg in de using instructie-sectie de volgende regel toe om de typen uit de Azure.Identity naamruimte te importeren:

    using Azure.Identity;
    
  4. Vervang in Program.cs de aanroep naar de AddAzureAppConfiguration methode door de aanroep in de volgende code. De bijgewerkte oproep bevat de ConfigureKeyVault optie. Deze optie gebruikt de SetCredential methode om de referenties door te geven die nodig zijn om te verifiëren met uw sleutelkluis.

    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());
        });
    });
    

    Tip

    Als u meerdere sleutelkluizen hebt, gebruikt het systeem dezelfde referentie voor al deze kluizen. Als uw sleutelkluizen verschillende referenties vereisen, kunt u deze instellen met behulp van de Register of SetSecretResolver methoden van de AzureAppConfigurationKeyVaultOptions klasse.

  5. Als u de waarden van Key Vault-verwijzingen in uw code wilt openen, gaat u naar de map Pagina's in uw project. Open Index.cshtml en vervang de inhoud door de volgende code. De code in het vorige blok initialiseert de App Configuration-verbinding en stelt de Key Vault-verbinding in. Als gevolg hiervan hebt u in Index.cshtml toegang tot de waarden van Key Vault op dezelfde manier als u toegang hebt tot de waarden van reguliere App Configuration-sleutels.

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

    Deze code heeft toegang tot de waarde van de Key Vault-verwijzing TestApp:Settings:KeyVaultMessage op dezelfde manier als deze toegang heeft tot de configuratiewaarde van TestApp:Settings:Message.

Uw app toegang verlenen tot Key Vault

App Configuration heeft geen toegang tot uw sleutelkluis. In plaats daarvan leest uw app rechtstreeks vanuit Key Vault, dus u moet uw app toegang verlenen tot de geheimen in uw sleutelkluis. Op deze manier blijven de geheimen altijd bij uw app. U kunt een Key Vault-toegangsbeleid of op rollen gebaseerd toegangsbeheer van Azure gebruiken om de toegang te verlenen.

De code in deze zelfstudie maakt gebruik van de DefaultAzureCredential klasse voor verificatie. Met deze samengevoegde tokenreferentie worden automatisch verschillende referentietypen geprobeerd, zoals EnvironmentCredential, ManagedIdentityCredentialen SharedTokenCacheCredentialVisualStudioCredential. Zie DefaultAzureCredential Class voor meer informatie.

U kunt DefaultAzureCredential vervangen door een expliciet referentietype. Wanneer u echter gebruikt DefaultAzureCredential, kan uw code worden uitgevoerd in lokale en Azure-omgevingen. Wanneer uw app bijvoorbeeld wordt uitgevoerd in Azure, DefaultAzureCredential gebruikt ManagedIdentityCredentialu . Maar wanneer u Visual Studio voor lokale ontwikkeling gebruikt, wordt DefaultAzureCredential automatisch teruggevallen op SharedTokenCacheCredential of VisualStudioCredential.

U kunt ook de AZURE_TENANT_IDvariabelen , AZURE_CLIENT_IDen AZURE_CLIENT_SECRET omgevingsvariabelen instellen. Wanneer u dit doet, gebruikt DefaultAzureCredential deze variabelen en verifieert EnvironmentCredential met uw sleutelkluis.

Nadat u uw app hebt geïmplementeerd in een Azure-service waarvoor beheerde identiteit is ingeschakeld, zoals Azure App Service, Azure Kubernetes Service of Azure Container Instance, verleent u de beheerde identiteit van de Azure-servicemachtiging voor toegang tot uw sleutelkluis. DefaultAzureCredential wordt automatisch gebruikt ManagedIdentityCredential wanneer uw app wordt uitgevoerd in Azure. U kunt dezelfde beheerde identiteit gebruiken om te verifiëren met zowel App Configuration als Key Vault. Zie Beheerde identiteiten gebruiken voor toegang tot App Configuration voor meer informatie.

De app lokaal bouwen en uitvoeren

  1. Als u de app wilt bouwen met behulp van de .NET CLI, voert u de volgende opdracht uit bij een opdrachtprompt:

    dotnet build
    
  2. Nadat het compileren is voltooid, gebruikt u de volgende opdracht om de web-app lokaal uit te voeren:

    dotnet run
    
  3. Zoek in de uitvoer van de dotnet run opdracht een URL waarop de web-app luistert, zoals http://localhost:5292. Open een browser en ga naar die URL.

    Schermopname van een browser die is geopend naar localhost:5292. Tekst op de pagina geeft gegevens weer van Azure App Configuration en Hello uit Key Vault.

    De tekst op de webpagina bevat de volgende onderdelen:

    • De waarde die is gekoppeld aan het TestApp:Settings:Message trefwoord in uw App Configuration-opslag
    • De waarde van het berichtgeheim dat is opgeslagen in uw sleutelkluis

Resources opschonen

Als u de resources die in dit artikel zijn gemaakt niet wilt blijven gebruiken, verwijdert u de resourcegroep die u hier hebt gemaakt om kosten te voorkomen.

Belangrijk

Het verwijderen van een resourcegroep kan niet ongedaan worden gemaakt. De resourcegroep en alle resources daarin worden permanent verwijderd. Zorg ervoor dat u niet per ongeluk de verkeerde resourcegroep of resources verwijdert. Als u de resources voor dit artikel in een resourcegroep hebt gemaakt die andere resources bevat die u wilt behouden, moet u elke resource afzonderlijk verwijderen uit het deelvenster in plaats van dat u de resourcegroep verwijdert.

  1. Meld u aan bij de Azure-portal en selecteer Resourcegroepen.
  2. Voer de naam van de resourcegroep in het vak Filteren op naam in.
  3. Selecteer in de resultatenlijst de resourcegroepnaam om een overzicht te bekijken.
  4. Selecteer Resourcegroep verwijderen.
  5. U wordt gevraagd om het verwijderen van de resourcegroep te bevestigen. Voer de naam van de resourcegroep in ter bevestiging en selecteer Verwijderen.

Na enkele ogenblikken worden de resourcegroep en alle bijbehorende resources verwijderd.

Volgende stappen