Esercitazione: Usare i riferimenti a Key Vault in un'app ASP.NET Core

Questa esercitazione illustra come usare il servizio Configurazione app di Azure insieme ad Azure Key Vault. Configurazione app e Key Vault sono servizi complementari usati side-by-side nella maggior parte delle distribuzioni di applicazioni.

Configurazione app consente di usare insieme i servizi creando chiavi che fanno riferimento a valori archiviati in Key Vault. Quando crea tali chiavi, Configurazione app archivia gli URI dei valori di Key Vault piuttosto che i valori stessi.

L'applicazione usa il provider client di Configurazione app per recuperare i riferimenti a Key Vault, così come per qualsiasi altra chiave archiviata in Configurazione app. In questo caso, i valori archiviati in Configurazione app sono URI che fanno riferimento ai valori contenuti in Key Vault. Non si tratta dei valori o delle credenziali di Key Vault. Poiché riconosce le chiavi come riferimenti a Key Vault, il provider client usa Key Vault per recuperare i relativi valori.

L'applicazione è responsabile dell'autenticazione corretta sia per Configurazione app che per Key Vault. I due servizi non comunicano direttamente.

Questa esercitazione illustra come implementare i riferimenti a Key Vault nel codice. Si basa sull'app Web presentata nelle guide introduttive. Prima di continuare, completare le procedure descritte in Creare un'app ASP.NET Core con Configurazione app.

Per completare i passaggi riportati in questa esercitazione, è possibile usare qualsiasi editor di codice. Ad esempio, Visual Studio Code è un editor di codice multipiattaforma disponibile per i sistemi operativi Windows, macOS e Linux.

In questa esercitazione apprenderai a:

  • Creare una chiave di Configurazione app che faccia riferimento a un valore archiviato in Key Vault.
  • Accedere al valore di questa chiave da un'applicazione Web ASP.NET Core.

Prerequisiti

Prima di iniziare questa esercitazione, installare .NET SDK 6.0 o versione successiva.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Creare un insieme di credenziali

  1. Selezionare l'opzione Crea una risorsa nell'angolo superiore sinistro del portale di Azure:

    Screenshot mostra l'opzione Crea una risorsa nel portale di Azure.

  2. Nella casella di ricerca digitare Key Vault e selezionare Key Vault nell'elenco a discesa.

  3. Nell'elenco dei risultati scegliere Insiemi di credenziali delle chiavi a sinistra.

  4. In Insiemi di credenziali delle chiavi selezionare Aggiungi.

  5. Alla destra di Crea un insieme di credenziali delle chiavi specificare le informazioni seguenti:

    • Selezionare Sottoscrizione per scegliere una sottoscrizione.
    • In Gruppo di risorse immettere un nome di gruppo di risorse esistente oppure selezionare Crea nuovo e immettere un nome per il gruppo di risorse.
    • In Nome dell'insieme di credenziali delle chiavi è necessario un nome univoco.
    • Nell'elenco a discesa Area scegliere una località.
  6. Lasciare invariati i valori predefiniti delle altre opzioni di Crea un insieme di credenziali delle chiavi.

  7. Fare clic su Rivedi e crea.

  8. Il sistema convaliderà e visualizzerà i dati immessi. Fai clic su Crea.

A questo punto, l'account Azure è l'unico autorizzato ad accedere a questo nuovo insieme di credenziali.

Aggiungere un segreto all'istanza di Key Vault

Per aggiungere un segreto all'insieme di credenziali, sono sufficienti alcuni passaggi aggiuntivi. In questo caso aggiungere un messaggio da usare per testare il recupero da Key Vault. Nel messaggio, denominato Message, viene archiviato il valore "Hello from Key Vault".

  1. Nella pagina delle proprietà di Key Vault selezionare Segreti.
  2. Seleziona Genera/Importa.
  3. Nel riquadro Crea un segreto immettere i valori seguenti:
    • Opzioni di caricamento: immettere Manuale.
    • Nome: immettere Message.
    • Valore: immettere Hello da Key Vault.
  4. Lasciare invariati i valori predefiniti delle altre proprietà di Crea un segreto.
  5. Seleziona Crea.

Aggiungere a Configurazione app un riferimento a Key Vault

  1. Accedere al portale di Azure. Selezionare Tutte le risorse e quindi l'istanza di archivio di Configurazione app creata nell'argomento di avvio rapido.

  2. Selezionare Esplora configurazioni.

  3. Selezionare + Crea>Riferimento all'insieme di credenziali delle chiavi e quindi specificare i valori seguenti:

    • Chiave: selezionare TestApp:Impostazioni:KeyVaultMessage.
    • Etichetta: lasciare vuoto questo valore.
    • Sottoscrizione, gruppo di risorse e Insieme di credenziali delle chiavi: immettere i valori corrispondenti a quelli nell'insieme di credenziali delle chiavi creato nella sezione precedente.
    • Segreto: selezionare il segreto denominato Message creato nella sezione precedente.

Screenshot del modulo di riferimento per la creazione di un nuovo insieme di credenziali delle chiavi

Aggiornare il codice per usare un riferimento a Key Vault

  1. Aggiungere un riferimento ai pacchetti NuGet richiesti eseguendo il comando seguente:

    dotnet add package Azure.Identity
    
  2. Aprire Program.cs e aggiungere i riferimenti ai pacchetti richiesti seguenti:

    using Azure.Identity;
    
  3. Usare Configurazione app chiamando il AddAzureAppConfiguration metodo . Includere l'opzione ConfigureKeyVault e passare le credenziali corrette all'insieme di credenziali delle chiavi usando il SetCredential metodo .

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

    Suggerimento

    Se sono presenti più insiemi di credenziali delle chiavi, verranno usate le stesse credenziali per tutte. Se gli insiemi di credenziali delle chiavi richiedono credenziali diverse, è possibile impostarli usando Register metodi o SetSecretResolver dalla AzureAppConfigurationKeyVaultOptions classe .

  4. Quando è stata inizializzata la connessione a Configurazione app, è stata configurata la connessione a Key Vault chiamando il metodo ConfigureKeyVault. Dopo l'inizializzazione, è possibile accedere ai valori dei riferimenti a Key Vault nello stesso modo in cui si accede ai valori delle normali chiavi di Configurazione app.

    Per vedere questo processo in azione, aprire Index.cshtml nella cartella Views>Home. Sostituirne il contenuto con il codice seguente:

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

    Il valore del riferimento TestApp:Settings:KeyVaultMessage a Key Vault è accessibile allo stesso modo del valore di configurazione TestApp:Settings:Message.

Concedere all'app l'accesso a Key Vault

app Azure Configurazione non accede all'insieme di credenziali delle chiavi. L'app leggerà direttamente da Key Vault, quindi è necessario concedere all'app l'accesso ai segreti nell'insieme di credenziali delle chiavi. In questo modo, il segreto rimane sempre con la tua app. L'accesso può essere concesso usando un criterio di accesso di Key Vault o il controllo degli accessi in base al ruolo di Azure.

Si usa DefaultAzureCredential nel codice precedente. Si tratta di una credenziale di token aggregata che prova automaticamente un certo numero di tipi di credenziali, ad esempio EnvironmentCredential, ManagedIdentityCredentialSharedTokenCacheCredential, e VisualStudioCredential. Per altre informazioni, vedere Classe DefaultAzureCredential. È possibile sostituire DefaultAzureCredential con qualsiasi tipo di credenziale in modo esplicito. Tuttavia, l'uso DefaultAzureCredential di consente di avere lo stesso codice eseguito in ambienti locali e di Azure. Ad esempio, si concede l'accesso alle proprie credenziali all'insieme di credenziali delle chiavi. DefaultAzureCredential esegue automaticamente il fallback a SharedTokenCacheCredential o VisualStudioCredential quando si usa Visual Studio per lo sviluppo locale.

In alternativa, è possibile impostare le variabili di ambiente AZURE_TENANT_ID, AZURE_CLIENT_ID e AZURE_CLIENT_edizione Standard CRET e DefaultAzureCredential userà il segreto client disponibile tramite per eseguire l'autenticazione con l'insieme EnvironmentCredential di credenziali delle chiavi. Dopo la distribuzione dell'app in un servizio di Azure con identità gestita abilitata, ad esempio servizio app Azure, servizio Azure Kubernetes o Istanza di Azure Container, si concede l'identità gestita del servizio di Azure per accedere all'insieme di credenziali delle chiavi. DefaultAzureCredential usa ManagedIdentityCredential automaticamente quando l'app è in esecuzione in Azure. È possibile usare la stessa identità gestita per eseguire l'autenticazione sia con Configurazione app che con Key Vault. Per altre informazioni, vedere Come usare le identità gestite per accedere alle Configurazione app.

Compilare ed eseguire l'app in locale

  1. Per compilare l'app usando l'interfaccia della riga di comando di .NET, eseguire il comando seguente nella shell dei comandi:

    dotnet build
    
  2. Al termine della compilazione, usare questo comando per eseguire l'app Web in locale:

    dotnet run
    
  3. Aprire una finestra del browser e passare a http://localhost:5000, che è l'URL predefinito per l'app Web ospitata in locale.

    Avvio rapido: avvio dell'app in locale

Pulire le risorse

Se non si vuole continuare a usare le risorse create in questo articolo, eliminare il gruppo di risorse creato qui per evitare addebiti.

Importante

L'eliminazione di un gruppo di risorse è irreversibile. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente. Assicurarsi di non eliminare accidentalmente il gruppo di risorse o le risorse sbagliate. Se le risorse per questo articolo sono state create in un gruppo di risorse che contiene altre risorse che si vogliono mantenere, eliminare ogni risorsa singolarmente dal rispettivo riquadro anziché eliminare il gruppo di risorse.

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.
  2. Nella casella Filtra per nome immettere il nome del gruppo di risorse.
  3. Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
  4. Selezionare Elimina gruppo di risorse.
  5. Verrà chiesto di confermare l'eliminazione del gruppo di risorse. Immettere il nome del gruppo di risorse per confermare e selezionare Elimina.

Dopo qualche istante, il gruppo di risorse e tutte le risorse che contiene vengono eliminati.

Passaggi successivi

In questa esercitazione è stata creata una chiave in Configurazione app che fa riferimento a un segreto archiviato in Key Vault. Per informazioni su come ricaricare automaticamente segreti e certificati da Key Vault, continuare con l'esercitazione successiva:

Per informazioni su come usare l'identità gestita per semplificare l'accesso a Configurazione app e Key Vault, vedere l'esercitazione seguente: