Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa esercitazione si userà 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.
L'applicazione può utilizzare il provider client di App Configuration per recuperare i riferimenti a Key Vault, esattamente come fa per qualsiasi altra chiave memorizzata in App Configuration. Quando si aggiunge un riferimento a Key Vault a Configurazione app, Configurazione app crea una chiave che fa riferimento al valore archiviato in Key Vault. Il valore archiviato da Configurazione App non è un valore o una credenziale di Key Vault. Si tratta invece di un URI che fa riferimento al valore in Key Vault. Poiché il provider client riconosce la chiave come riferimento a Key Vault, usa Key Vault per recuperarne il valore.
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 all'avvio rapido di ASP.NET Core elencata nei prerequisiti. Prima di continuare, completare la 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, farai:
- 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 all'avvio rapido: Creare un'app ASP.NET Core con Configurazione app.
Creare un insieme di credenziali delle chiavi
Passare al portale di Azure e quindi selezionare Crea una risorsa.
Nella casella di ricerca immettere Insieme di credenziali delle chiavi. Nell'elenco dei risultati selezionare Key Vault.
Nella pagina Key Vault selezionare Crea.
Nella pagina Crea una Cassaforte delle chiavi, immettere le informazioni seguenti:
- Per Sottoscrizione: selezionare una sottoscrizione.
- Per Gruppo di risorse immettere il nome di un gruppo di risorse esistente oppure selezionare Crea nuovo e immettere un nome del gruppo di risorse.
- Per Nome Key Vault: immettere un nome univoco.
- Per Area: selezionare una località.
Per le altre opzioni, usare i valori predefiniti.
Selezionare Rivedi e crea.
Dopo che il sistema convalida e visualizza gli input, selezionare 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 testare il recupero di Key Vault nella tua app, per prima cosa aggiungi un segreto al vault seguendo i seguenti passaggi. Il segreto aggiunto è denominato Message e il relativo valore è "Hello from Key Vault".
Nel menu della risorsa Key Vault selezionare Segreti degli oggetti>.
Selezionare Genera/Importa.
Nella finestra di dialogo Crea un segreto immettere i valori seguenti:
- Per Opzioni di caricamento: immettere Manuale.
- Per Nome: immettere Messaggio.
- Per Valore segreto: immettere Hello from Key Vault.
Per le altre opzioni, usare i valori predefiniti.
Selezionare Crea.
Aggiungere a Configurazione app un riferimento a Key Vault
Accedere al portale di Azure. Selezionare Tutte le risorse e quindi selezionare l'archivio di Configurazione app creato nell'avvio rapido.
Selezionare Esplora configurazione.
Selezionare Crea>riferimento a Key Vault e quindi immettere i valori seguenti:
- Per Chiave: immettere TestApp:Settings:KeyVaultMessage.
- Per Etichetta: lasciare vuoto il valore.
- Per Sottoscrizione, Gruppo di risorse e Key Vault: Inserisci i valori utilizzati quando hai creato il Key Vault precedentemente in questo tutorial.
- Per Segreto: selezionare il segreto denominato Message creato nella sezione precedente.
Aggiornare il codice per usare un riferimento a Key Vault
Passare alla cartella contenente il progetto di app Web core ASP.NET creato nella guida introduttiva.
Al prompt dei comandi, eseguire questo comando. Questo comando aggiunge il riferimento al
Azure.Identitypacchetto NuGet al file di progetto o lo aggiorna.dotnet add package Azure.IdentityAprire Program.cs. Nella sezione della direttiva
using, aggiungere la riga seguente per importare i tipi dal namespaceAzure.Identity:using Azure.Identity;In Program.cs sostituire la chiamata al
AddAzureAppConfigurationmetodo con la chiamata nel codice seguente. La chiamata aggiornata include l'opzioneConfigureKeyVault. Questa opzione utilizza il metodoSetCredentialper passare le credenziali necessarie per l'autenticazione con il Key Vault.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()); }); });Suggerimento
Se si dispone di più key vault, il sistema utilizza le stesse credenziali per tutti. Se gli insiemi di credenziali richiedono credenziali diverse, è possibile impostarle usando i metodi
RegisteroSetSecretResolverdella classeAzureAppConfigurationKeyVaultOptions.Per accedere ai valori dei riferimenti a Key Vault nel codice, passare alla cartella Pages nel progetto. Aprire Index.cshtml e sostituirlo con il codice seguente. Il codice nel blocco precedente inizializza la connessione di Configurazione app e configura la connessione Key Vault. Di conseguenza, in Index.cshtml è possibile accedere ai valori di Key Vault allo stesso modo in cui si accede ai valori delle normali chiavi di Configurazione app.
@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>Questo codice accede al valore del riferimento
TestApp:Settings:KeyVaultMessagedi Key Vault nello stesso modo in cui accede al valore di configurazione diTestApp:Settings:Message.
Concedere all'app l'accesso a Key Vault
La configurazione dell'app non accede al Key Vault. L'app leggerà invece direttamente da Key Vault, quindi è necessario concedere all'app l'accesso ai segreti nell'insieme di credenziali delle chiavi. In questo modo, i segreti rimangono sempre con la tua app. È possibile usare criteri di accesso di Key Vault o il controllo degli accessi in base al ruolo di Azure per concedere l'accesso.
Il codice in questa esercitazione usa la DefaultAzureCredential classe per l'autenticazione. Questa credenziale del token aggregato prova automaticamente diversi tipi di credenziali, ad esempio EnvironmentCredential, ManagedIdentityCredentialSharedTokenCacheCredential, e VisualStudioCredential. Per altre informazioni, vedere Classe DefaultAzureCredential.
È possibile sostituire DefaultAzureCredential con qualsiasi tipo di credenziale esplicito. Tuttavia, quando si usa DefaultAzureCredential, il codice può essere eseguito in ambienti locali e di Azure. Ad esempio, quando l'app viene eseguita in Azure, DefaultAzureCredential usa ManagedIdentityCredential. Tuttavia, quando si usa Visual Studio per lo sviluppo locale, DefaultAzureCredential esegue automaticamente il fallback a SharedTokenCacheCredential o VisualStudioCredential.
In alternativa, è possibile impostare le AZURE_TENANT_IDvariabili di ambiente , AZURE_CLIENT_IDe AZURE_CLIENT_SECRET . Quando esegui questa operazione, DefaultAzureCredential usa queste variabili e EnvironmentCredential per autenticarsi con il Key Vault.
Dopo aver distribuito l'app in un servizio di Azure con identità gestita di Azure abilitata, ad esempio Servizio app di Azure, Azure Kubernetes Service o Istanza Azure Container, devi concedere all'identità gestita del servizio Azure l'autorizzazione per accedere al tuo Key Vault.
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 maggiori informazioni, vedere Usare le identità gestite per accedere a Configurazione app.
Compilare ed eseguire l'app in locale
Per compilare l'app usando .NET CLI, eseguire il comando seguente al prompt dei comandi:
dotnet buildAl termine della compilazione, usare questo comando per eseguire l'app Web in locale:
dotnet runNell'output del comando
dotnet runtrovare un URL su cui la web app è in ascolto, ad esempiohttp://localhost:5292. Aprire un browser e passare a tale URL.
Il testo nella pagina Web include i componenti seguenti:
- Il valore associato alla chiave
TestApp:Settings:Messagenell'archivio di Configurazione dell'app - Valore del segreto Messaggio memorizzato nel tuo key vault
- Il valore associato alla chiave
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.