Dela via


Självstudie: Använda Key Vault-referenser i en ASP.NET Core-app

I den här självstudien får du lära dig hur du använder Azure App Configuration-tjänsten tillsammans med Azure Key Vault. Appkonfiguration och Key Vault är kompletterande tjänster som används sida vid sida i de flesta programdistributioner.

App Configuration hjälper dig att använda tjänsterna tillsammans genom att skapa nycklar som refererar till värden som lagras i Key Vault. När App Configuration skapar sådana nycklar lagras URI:erna för Key Vault-värden i stället för själva värdena.

Ditt program använder appkonfigurationsklientprovidern för att hämta Key Vault-referenser, precis som för andra nycklar som lagras i App Configuration. I det här fallet är de värden som lagras i App Configuration URI:er som refererar till värdena i Key Vault. De är inte Key Vault-värden eller autentiseringsuppgifter. Eftersom klientprovidern identifierar nycklarna som Key Vault-referenser använder den Key Vault för att hämta sina värden.

Ditt program ansvarar för att autentiseras korrekt till både App Configuration och Key Vault. De två tjänsterna kommunicerar inte direkt.

Den här självstudien visar hur du implementerar Key Vault-referenser i koden. Den bygger på webbappen som introducerades i snabbstarten ASP.NET core som anges i förutsättningarna nedan. Slutför den här snabbstarten innan du fortsätter.

Du kan använda valfri kodredigerare för att utföra stegen i den här självstudien. Visual Studio Code är till exempel en plattformsoberoende kodredigerare som är tillgänglig för operativsystemen Windows, macOS och Linux.

I den här självstudien lär du dig att:

  • Skapa en appkonfigurationsnyckel som refererar till ett värde som lagras i Key Vault.
  • Få åtkomst till värdet för den här nyckeln från ett ASP.NET Core-webbprogram.

Förutsättningar

Slutför snabbstarten: Skapa en ASP.NET Core-app med App Configuration.

Skapa ett valv

  1. Välj alternativet Skapa en resurs i det övre vänstra hörnet i Azure-portalen:

    Skärmbild som visar alternativet Skapa en resurs i Azure-portalen.

  2. I sökrutan skriver du Key Vault och väljer Key Vault i listrutan.

  3. I resultatlistan väljer du Nyckelvalv till vänster.

  4. I Nyckelvalv väljer du Lägg till.

  5. Till höger i Skapa nyckelvalv anger du följande information:

    • Välj Prenumeration för att välja en prenumeration.
    • I Resursgrupp anger du ett befintligt resursgruppsnamn eller väljer Skapa ny och anger ett resursgruppsnamn.
    • I Key Vault-namn krävs ett unikt namn.
    • I listrutan Region väljer du en plats.
  6. Låt de andra alternativen för Skapa nyckelvalv ha sina standardvärden.

  7. Klicka på Granska + Skapa.

  8. Systemet validerar och visar de data som du har angett. Klicka på Skapa.

I det här läget är ditt Azure-konto det enda som har behörighet att komma åt det nya valvet.

Lägga till en hemlighet i Key Vault

Om du vill lägga till en hemlighet i valvet behöver du bara utföra några ytterligare steg. I det här fallet lägger du till ett meddelande som du kan använda för att testa hämtningen av Key Vault. Meddelandet heter Meddelande och du lagrar värdet "Hello from Key Vault" i det.

  1. Välj Hemligheter på egenskapssidorna för Key Vault.
  2. Välj Generera/Importera.
  3. I fönstret Skapa en hemlighet anger du följande värden:
    • Uppladdningsalternativ: Ange Manuell.
    • Namn: Ange meddelande.
    • Värde: Ange Hello från Key Vault.
  4. Lämna de andra egenskaperna Skapa en hemlighet med sina standardvärden.
  5. Välj Skapa.

Lägga till en Key Vault-referens till App Configuration

  1. Logga in på Azure-portalen. Välj Alla resurser och välj sedan den App Configuration Store-instans som du skapade i snabbstarten.

  2. Välj Configuration Explorer.

  3. Välj + Skapa>key vault-referens och ange sedan följande värden:

    • Nyckel: Välj TestApp:Settings:KeyVaultMessage.
    • Etikett: Lämna det här värdet tomt.
    • Prenumeration, Resursgrupp och Nyckelvalv: Ange de värden som motsvarar värdena i nyckelvalvet som du skapade i föregående avsnitt.
    • Hemlighet: Välj hemligheten med namnet Meddelande som du skapade i föregående avsnitt.

Skärmbild av skapa ett nytt Key Vault-referensformulär

Uppdatera koden så att den använder en Key Vault-referens

  1. Lägg till en referens till de nödvändiga NuGet-paketen genom att köra följande kommando:

    dotnet add package Azure.Identity
    
  2. Öppna Program.cs och lägg till referenser till följande nödvändiga paket:

    using Azure.Identity;
    
  3. Använd App Configuration genom att anropa AddAzureAppConfiguration metoden. Inkludera alternativet ConfigureKeyVault och skicka rätt autentiseringsuppgifter till ditt Key Vault med hjälp av SetCredential metoden .

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

    Dricks

    Om du har flera Key Vaults används samma autentiseringsuppgifter för alla. Om dina Key Vaults kräver olika autentiseringsuppgifter kan du ange dem med hjälp av Register eller SetSecretResolver metoder från AzureAppConfigurationKeyVaultOptions klassen.

  4. När du initierade anslutningen till App Configuration konfigurerade du anslutningen till Key Vault genom att anropa ConfigureKeyVault metoden. Efter initieringen kan du komma åt värdena för Key Vault-referenser på samma sätt som du kommer åt värdena för vanliga appkonfigurationsnycklar.

    Om du vill se hur den här processen fungerar öppnar du Index.cshtml i mappen Vyer>start. Ersätt innehållet med följande kod:

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

    Du kommer åt värdet för Key Vault-referensen TestApp:Settings:KeyVaultMessage på samma sätt som för konfigurationsvärdet för TestApp:Settings:Message.

Ge din app åtkomst till Key Vault

Azure App Configuration kommer inte åt ditt nyckelvalv. Appen kommer att läsa direkt från Key Vault, så du måste ge din app åtkomst till hemligheterna i ditt nyckelvalv. På så sätt stannar hemligheten alltid hos din app. Åtkomsten kan beviljas med antingen en Key Vault-åtkomstprincip eller rollbaserad åtkomstkontroll i Azure.

Du använder DefaultAzureCredential i koden ovan. Det är en aggregerad tokenautentiseringsuppgift som automatiskt försöker med ett antal typer av autentiseringsuppgifter, till exempel EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentialoch VisualStudioCredential. Mer information finns i StandardAzureCredential-klass. Du kan uttryckligen ersätta DefaultAzureCredential med valfri typ av autentiseringsuppgifter. Med hjälp av DefaultAzureCredential kan du dock ha samma kod som körs i både lokala miljöer och Azure-miljöer. Du kan till exempel ge dina egna autentiseringsuppgifter åtkomst till ditt nyckelvalv. DefaultAzureCredential återgår automatiskt till SharedTokenCacheCredential eller VisualStudioCredential när du använder Visual Studio för lokal utveckling.

Du kan också ange miljövariablerna AZURE_TENANT_ID, AZURE_CLIENT_ID och AZURE_CLIENT_SECRET och DefaultAzureCredential använda den klienthemlighet som du har via för att autentisera EnvironmentCredential med ditt nyckelvalv. När din app har distribuerats till en Azure-tjänst med hanterad identitet aktiverad, till exempel Azure App Service, Azure Kubernetes Service eller Azure Container Instance, beviljar du den hanterade identiteten för Azure-tjänsten behörighet att komma åt ditt nyckelvalv. DefaultAzureCredential används ManagedIdentityCredential automatiskt när din app körs i Azure. Du kan använda samma hanterade identitet för att autentisera med både App Configuration och Key Vault. Mer information finns i Använda hanterade identiteter för att få åtkomst till App Configuration.

Skapa och köra appen lokalt

  1. Om du vill skapa appen med hjälp av .NET CLI kör du följande kommando i kommandogränssnittet:

    dotnet build
    
  2. När bygget är klart använder du följande kommando för att köra webbappen lokalt:

    dotnet run
    
  3. Öppna ett webbläsarfönster och gå till http://localhost:5000, vilket är standard-URL:en för webbappen som finns lokalt.

    Snabbstart för lokal appstart

Rensa resurser

Om du inte vill fortsätta använda resurserna som skapas i den här artikeln tar du bort resursgruppen som du skapade här för att undvika avgifter.

Viktigt!

Att ta bort en resursgrupp kan inte ångras. Resursgruppen och alla resurser i den tas bort permanent. Se till att du inte oavsiktligt tar bort fel resursgrupp eller resurser. Om du har skapat resurserna för den här artikeln i en resursgrupp som innehåller andra resurser som du vill behålla tar du bort varje resurs individuellt från respektive fönster i stället för att ta bort resursgruppen.

  1. Logga in på Azure-portalen och välj Resursgrupper.
  2. I rutan Filtrera efter namn anger du namnet på resursgruppen.
  3. I resultatlistan väljer du resursgruppens namn för att se en översikt.
  4. Välj Ta bort resursgrupp.
  5. Du blir ombedd att bekräfta borttagningen av resursgruppen. Ange namnet på resursgruppen för att bekräfta och välj Ta bort.

Efter en liten stund tas resursgruppen och alla dess resurser bort.

Nästa steg

I den här självstudien skapade du en nyckel i App Configuration som refererar till en hemlighet som lagras i Key Vault. Om du vill lära dig hur du automatiskt läser in hemligheter och certifikat från Key Vault igen fortsätter du till nästa självstudie:

Mer information om hur du använder hanterad identitet för att effektivisera åtkomsten till App Configuration och Key Vault finns i följande självstudie: