Esercitazione: Usare i riferimenti a un insieme di credenziali delle chiavi 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 introdotta nella guida introduttiva di ASP.NET Core elencata nei prerequisiti seguenti. Prima di continuare, completare questa guida introduttiva.
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
Completare la guida introduttiva: Creare un'app ASP.NET Core con Configurazione app.
Creare un insieme di credenziali
Selezionare l'opzione Crea una risorsa nell'angolo superiore sinistro del portale di Azure:
Nella casella di ricerca digitare Insieme di credenziali delle chiavi e selezionare Insieme di credenziali delle chiavi dall'elenco a discesa.
Nell'elenco dei risultati scegliere Insiemi di credenziali delle chiavi a sinistra.
In Insiemi di credenziali delle chiavi selezionare Aggiungi.
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 di gruppo di risorse.
- In Nome dell'insieme di credenziali delle chiavi è necessario un nome univoco.
- Nell'elenco a discesa Area scegliere una località.
Lasciare invariati i valori predefiniti delle altre opzioni di Crea un insieme di credenziali delle chiavi.
Fare clic su Rivedi e crea.
Il sistema convaliderà e visualizzerà i dati immessi. Cliccare 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".
- Nella pagina delle proprietà di Key Vault selezionare Segreti.
- Seleziona Genera/Importa.
- Nel riquadro Crea un segreto immettere i valori seguenti:
- Opzioni di caricamento: immettere Manuale.
- Nome: immettere Message.
- Valore: immettere Hello from Key Vault.
- Lasciare invariati i valori predefiniti delle altre proprietà di Crea un segreto.
- Seleziona Crea.
Aggiungere a Configurazione app un riferimento a Key Vault
Accedere al portale di Azure. Selezionare Tutte le risorse e quindi l'istanza di archivio di Configurazione app creata nell'argomento di avvio rapido.
Selezionare Esplora configurazioni.
Selezionare + Crea>Riferimento all'insieme di credenziali delle chiavi e quindi specificare i valori seguenti:
- Chiave: selezionare TestApp:Settings: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.
Aggiornare il codice per usare un riferimento a Key Vault
Aggiungere un riferimento ai pacchetti NuGet richiesti eseguendo il comando seguente:
dotnet add package Azure.Identity
Aprire Program.cs e aggiungere i riferimenti ai pacchetti richiesti seguenti:
using Azure.Identity;
Usare Configurazione app chiamando il metodo
AddAzureAppConfiguration
. Includere l'opzioneConfigureKeyVault
e passare le credenziali corrette all'insieme di credenziali delle chiavi usando il metodoSetCredential
.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 tutti. Se gli insiemi di credenziali delle chiavi richiedono credenziali diverse, è possibile impostarle usando i metodi
Register
oSetSecretResolver
della classeAzureAppConfigurationKeyVaultOptions
.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
Configurazione app di Azure non accede all'insieme di credenziali delle chiavi. L'app leggerà direttamente dall'insieme di credenziali delle chiavi, quindi è necessario concedere all'app l'accesso ai segreti nell'insieme di credenziali delle chiavi. In questo modo, il segreto rimane sempre con l'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.
È possibile usare DefaultAzureCredential
nel codice precedente. Si tratta di una credenziale di token aggregata che prova automaticamente diversi tipi di credenziali, ad esempio EnvironmentCredential
, ManagedIdentityCredential
, SharedTokenCacheCredential
e VisualStudioCredential
. Per altre informazioni, vedere Classe DefaultAzureCredential. È possibile sostituire DefaultAzureCredential
con qualsiasi tipo di credenziale in modo esplicito. Tuttavia, l'uso di DefaultAzureCredential
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_SECRET e DefaultAzureCredential
userà il segreto client disponibile tramite EnvironmentCredential
per l'autenticazione con l'insieme di credenziali delle chiavi. Dopo la distribuzione dell'app in un servizio di Azure con identità gestita abilitata, ad esempio Servizio app di Azure, servizio Azure Kubernetes o Istanza di Azure Container, si concede all'identità gestita del servizio di Azure l'autorizzazione per accedere all'insieme di credenziali delle chiavi. DefaultAzureCredential
usa automaticamente ManagedIdentityCredential
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 a Configurazione app.
Compilare ed eseguire l'app in locale
Per compilare l'app usando l'interfaccia della riga di comando di .NET, eseguire questo comando nella shell dei comandi:
dotnet build
Al termine della compilazione, usare questo comando per eseguire l'app Web in locale:
dotnet run
Aprire una finestra del browser e passare a
http://localhost:5000
, che è l'URL predefinito per l'app Web ospitata 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.
- Accedere al portale di Azure e selezionare Gruppi di risorse.
- Nella casella Filtra per nome immettere il nome del gruppo di risorse.
- Nell'elenco dei risultati selezionare il nome del gruppo di risorse per visualizzare una panoramica.
- Selezionare Elimina gruppo di risorse.
- 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: