Esercitazione: Archiviare e usare le credenziali di Azure Cosmos DB con Azure Key Vault
SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella
Importante
Per accedere ad Azure Cosmos DB è consigliabile usare un'identità gestita assegnata dal sistema. Se la soluzione delle identità gestite e quella basata su certificato non soddisfano le proprie esigenze, usare la soluzione con Azure Key Vault illustrata in questo articolo.
Se si usa Azure Cosmos DB come database, ci si connette a database, contenitori ed elementi usando un SDK, l'endpoint dell'API e la chiave primaria o secondaria.
Non è consigliabile archiviare l'URI dell'endpoint e le chiavi di lettura/scrittura sensibili direttamente all'interno del codice dell'applicazione o del file di configurazione. Idealmente, questi dati vengono letti dalle variabili di ambiente all'interno dell'host. In Servizio app di Azure le impostazioni dell'app consentono di inserire le credenziali di runtime per l'account Azure Cosmos DB senza che gli sviluppatori debbano archiviare queste credenziali in modo non sicuro in testo non crittografato.
Azure Key Vault migliora ulteriormente questa procedura consigliata consentendo di archiviare queste credenziali in modo sicuro e concedendo a servizi come Servizio app di Azure l'accesso gestito alle credenziali. Servizio app di Azure leggerà in modo sicuro le credenziali da Azure Key Vault e inserirà tali credenziali nell'applicazione in esecuzione.
Con questa procedura consigliata, gli sviluppatori possono archiviare le credenziali per strumenti come l'emulatore di Azure Cosmos DB o Try Azure Cosmos DB free durante la fase di sviluppo. Il team operativo può quindi assicurarsi che le impostazioni di produzione corrette vengano inserite in fase di esecuzione.
In questa esercitazione apprenderai a:
- Creare un'istanza di Azure Key Vault
- Aggiungere le credenziali di Azure Cosmos DB come segreti all'insieme di credenziali delle chiavi.
- Creare e registrare una risorsa del Servizio app di Azure e concedere le autorizzazioni "chiave di lettura"
- Inserire i segreti dell'insieme di credenziali delle chiavi nella risorsa del Servizio app
Nota
Questa esercitazione e l'applicazione di esempio usano un account Azure Cosmos DB for NoSQL. È possibile eseguire molti degli stessi passaggi anche usando altre API.
Prerequisiti
- Un account Azure Cosmos DB for NoSQL già presente.
- Se si ha una sottoscrizione di Azure, creare un nuovo account.
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- In alternativa, è possibile provare Azure Cosmos DB gratuitamente prima di eseguire il commit.
- Account GitHub.
Prima di iniziare: Ottenere le credenziali di Azure Cosmos DB
Prima di iniziare si otterranno le credenziali per l'account esistente.
Passare alla pagina del portale di Azure per l'account Azure Cosmos DB for NoSQL esistente.
Nella pagina dell'account Azure Cosmos DB for NoSQL selezionare l'opzione del menu di spostamento Chiavi.
Registrare i valori dei campi URI e PRIMARY KEY. Questi valori verranno usati più avanti nell'esercitazione.
Creare una risorsa di Azure Key Vault
Per prima cosa, creare un nuovo insieme di credenziali delle chiavi in cui archiviare le credenziali dell'API per NoSQL.
Accedere al portale di Azure.
Selezionare Crea una risorsa > Sicurezza > Insieme di credenziali delle chiavi.
Nella pagina Crea un insieme di credenziali delle chiavi immettere le informazioni seguenti:
Impostazione Descrizione Abbonamento Selezionare la sottoscrizione di Azure che si desidera utilizzare per questo account Azure Cosmos. Gruppo di risorse Selezionare un gruppo di risorse oppure fare clic su Crea nuovo, quindi immettere un nome univoco per il nuovo gruppo di risorse. Nome dell'insieme di credenziali delle chiavi Immettere un nome univoco globale per l'insieme di credenziali delle chiavi. Area Selezionare una posizione geografica in cui ospitare l'account Azure Cosmos DB. Usare la località più vicina agli utenti per offrire loro la massima velocità di accesso ai dati. Piano tariffario Selezionare Standard. Lasciare i valori predefiniti per le altre impostazioni.
Selezionare Rivedi e crea.
Rivedere le impostazioni specificate e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale visualizzi La distribuzione è stata completata prima di continuare.
Aggiungere chiavi di accesso di Azure Cosmos DB all'insieme di credenziali delle chiavi
Archiviare ora le credenziali di Azure Cosmos DB come segreti nell'insieme di credenziali delle chiavi.
Selezionare Vai alla risorsa per passare alla pagina delle risorse di Azure Cosmos DB.
Nella pagina delle risorse di Azure Key Vault selezionare l'opzione del menu di spostamento Segreti.
Selezionare Genera/Importa dal menu.
Nella pagina Crea un segreto immettere le informazioni seguenti:
Impostazione Descrizione Opzioni di caricamento Manualee Nome cosmos-endpoint Valore del segreto Immettere l'URI copiato in precedenza in questa esercitazione. Selezionare Crea per creare il nuovo segreto cosmos-endpoint.
Selezionare di nuovo Genera/Importa dal menu. Nella pagina Crea un segreto immettere le informazioni seguenti:
Impostazione Descrizione Opzioni di caricamento Manualee Nome cosmos-readwrite-key Valore del segreto Immettere il valore del campo PRIMARY KEY copiato in precedenza in questa esercitazione. Selezionare Crea per creare il nuovo segreto cosmos-readwrite-key.
Dopo aver creato i segreti, visualizzarli nell'elenco dei segreti all'interno della pagina Segreti.
Selezionare ogni chiave, selezionare la versione più recente e quindi copiare il valore di Identificatore segreto. Questo identificatore sarà necessario più avanti nell'esercitazione per segreti cosmos-endpoint e cosmos-readwrite-key.
Suggerimento
L'identificatore del segreto sarà nel formato
https://<key-vault-name>.vault.azure.net/secrets/<secret-name>/<version-id>
. Ad esempio, se il nome dell'insieme di credenziali delle chiavi è msdocs-key-vault, il nome della chiave è cosmos-readwrite-key e la versione è 83b995e363d947999ac6cf487ae0e12e, l'identificatore del segreto saràhttps://msdocs-key-vault.vault.azure.net/secrets/cosmos-readwrite-key/83b995e363d947999ac6cf487ae0e12e
.
Creare e registrare un'app Web di Azure con Azure Key Vault
In questa sezione si creerà una nuova app Web di Azure, si distribuirà un'applicazione di esempio e quindi si registrerà l'identità gestita dell'app Web con Azure Key Vault.
Creare un nuovo repository GitHub usando il modello cosmos-db-nosql-dotnet-sample-web-environment-variables.
Nel portale di Azure selezionare Crea una risorsa > Web > App Web.
Nella pagina Crea app Web, all'interno della scheda Informazioni di base, immettere le informazioni seguenti:
Impostazione Descrizione Abbonamento Selezionare la sottoscrizione di Azure che si desidera utilizzare per questo account Azure Cosmos. Gruppo di risorse Selezionare un gruppo di risorse oppure fare clic su Crea nuovo, quindi immettere un nome univoco per il nuovo gruppo di risorse. Nome Immettere un nome univoco globale per l'app Web. Pubblicazione Selezionare Codice. Stack di runtime Selezionare .NET 6 (LTS). Sistema operativo Selezionare Windows. Area Selezionare una posizione geografica in cui ospitare l'account Azure Cosmos DB. Usare la località più vicina agli utenti per offrire loro la massima velocità di accesso ai dati. Lasciare i valori predefiniti per le altre impostazioni.
Selezionare Successivo: Distribuzione.
Nella scheda Distribuzione immettere le informazioni seguenti:
Impostazione Descrizione Distribuzione continua Seleziona Abilita. Account GitHub Seleziona Autorizza. Seguire le richieste di autorizzazione dell'account GitHub per concedere ad Azure l'autorizzazione per leggere il repository GitHub appena creato. Azienda Selezionare l'organizzazione per il nuovo repository GitHub. Repository Selezionare il nome del nuovo repository GitHub. Ramo Selezionare main. Selezionare Rivedi e crea.
Rivedere le impostazioni specificate e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale visualizzi La distribuzione è stata completata prima di continuare.
Potrebbe essere necessario attendere qualche minuto in più per la distribuzione iniziale dell'applicazione Web nell'app Web. Nella pagina della risorsa App Web di Azure selezionare Sfoglia per visualizzare lo stato predefinito dell'app.
Selezionare l'opzione Identità nel menu di spostamento.
Nella pagina Identità selezionare Attiva per l'identità gestita Assegnata dal sistema e quindi selezionare Salva.
Inserire i segreti di Azure Key Vault come impostazioni dell'app di App Web di Azure
Inserire quindi i segreti archiviati nell'insieme di credenziali delle chiavi come impostazioni dell'app all'interno dell'app Web. Le impostazioni dell'app inseriranno, a loro volta, le credenziali nell'applicazione in fase di esecuzione senza archiviare le credenziali in testo non crittografato.
Tornare alla pagina dell'insieme di credenziali delle chiavi nel portale di Azure. Selezionare Criteri di accesso nel menu di spostamento.
Nel menu della pagina Criteri di accesso selezionare Crea.
Nella scheda Autorizzazioni della pagina Creare un criterio di accesso selezionare l'opzione Ottieni nella sezione Autorizzazioni segrete. Selezionare Avanti.
Nella scheda Entità di sicurezza selezionare il nome dell'app Web creata in precedenza in questa esercitazione. Selezionare Avanti.
Nota
In questo screenshot di esempio l'app Web è denominata msdocs-dotnet-web.
Selezionare di nuovo Avanti per ignorare la scheda Applicazione. Nella scheda Rivedi e crea rivedere le impostazioni fornite e quindi selezionare Crea.
Tornare alla pagina dell'app Web nel portale di Azure. Selezionare Configurazione nel menu di spostamento.
Nella pagina Configurazione selezionare Nuova impostazione applicazione. Nella finestra di dialogo Aggiungi/Modifica impostazione applicazione immettere le seguenti informazioni:
Impostazione Description Nome CREDENTIALS__ENDPOINT
Chiave Ottenere l'identificatore del segreto per cosmos-endpoint nell'insieme di credenziali delle chiavi creato in precedenza in questa esercitazione. Immettere l'identificatore nel formato seguente: @Microsoft.KeyVault(SecretUri=<secret-identifier>)
.Suggerimento
Assicurarsi che la variabile di ambiente abbia un valore di sottolineatura doppia (
__
) anziché un singolo carattere di sottolineatura. Il doppio carattere di sottolineatura è un delimitatore di chiave supportato da .NET in tutte le piattaforme. Per altre informazioni, vedere Configurazione delle variabili di ambiente.Nota
Se, ad esempio, l'identificatore del segreto è
https://msdocs-key-vault.vault.azure.net/secrets/cosmos-endpoint/69621c59ef5b4b7294b5def118921b07
, il riferimento sarà@Microsoft.KeyVault(SecretUri=https://msdocs-key-vault.vault.azure.net/secrets/cosmos-endpoint/69621c59ef5b4b7294b5def118921b07)
.Selezionare OK per salvare in modo permanente la nuova impostazione dell'app
Selezionare di nuovo Nuova impostazione applicazione. Nella finestra di dialogo Aggiungi/Modifica impostazione applicazione immettere le seguenti informazioni e quindi scegliere OK:
Impostazione Description Nome CREDENTIALS__KEY
Chiave Ottenere l'identificatore del segreto per cosmos-readwrite-key nell'insieme di credenziali delle chiavi creato in precedenza in questa esercitazione. Immettere l'identificatore nel formato seguente: @Microsoft.KeyVault(SecretUri=<secret-identifier>)
.Tornare alla pagina Configurazione e selezionare Salva per aggiornare le impostazioni dell'app Web.
Dopo alcuni minuti l'app Web si riavvierà con le nuove impostazioni. A questo punto, nelle nuove impostazioni dell'app dovrà essere indicato se sono Informazioni di riferimento sull'insieme di credenziali delle chiavi.
Selezionare Panoramica nel menu di spostamento. Selezionare Sfoglia per visualizzare l'app con le credenziali impostate.
Passaggi successivi
- Per configurare un firewall per Azure Cosmos DB, vedere l'articolo Supporto del firewall di Azure Cosmos DB.
- Per configurare l'endpoint servizio di rete virtuale, vedere l'articolo relativo alla protezione dell'accesso tramite l'endpoint di servizio di rete virtuale.