Esercitazione: Archiviare e usare le credenziali di Azure Cosmos DB con Azure Key Vault

Importante

È consigliabile accedere ad Azure Cosmos DB usando 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 durante lo 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 del Key Vault nella risorsa del Servizio App

Annotazioni

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 già esistente di Azure Cosmos DB per NoSQL.
  • Account GitHub.

Prima di iniziare: Ottenere le credenziali di Azure Cosmos DB

Prima di iniziare si otterranno le credenziali per l'account esistente.

  1. Passare alla pagina del portale di Azure per l'account Azure Cosmos DB for NoSQL esistente.

  2. Nella pagina dell'account Azure Cosmos DB for NoSQL, seleziona l'opzione Chiavi nel menu di navigazione.

    Screenshot di una pagina dell'account dell'API SQL di Azure Cosmos DB. L'opzione Chiavi è evidenziata nel menu di navigazione.

  3. Registrare i valori dei campi URI e PRIMARY KEY. Questi valori verranno usati più avanti nell'esercitazione.

    Screenshot della pagina Chiavi con varie credenziali per un account API SQL di Azure Cosmos DB.

Creare una risorsa di Azure Key Vault

Per prima cosa, creare un nuovo Key Vault per archiviare le credenziali dell'API per NoSQL.

  1. Accedi al portale di Azure.

  2. Selezionare Crea una risorsa > Key Vault > di Sicurezza.

  3. Nella pagina Crea un insieme di chiavi, inserisci le informazioni seguenti:

    Impostazione Description
    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 il key vault.
    Area geografica 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.
  4. Lasciare i valori predefiniti per le altre impostazioni.

  5. Selezionare Rivedi e crea.

  6. Rivedere le impostazioni specificate e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale mostri il messaggio La distribuzione è stata completata prima di continuare.

Aggiungere chiavi di accesso di Azure Cosmos DB all'Azure Key Vault

Ora, archivia le credenziali di Azure Cosmos DB come segreti nel Key Vault.

  1. Selezionare Vai alla risorsa per passare alla pagina delle risorse di Azure Key Vault.

  2. Nella pagina delle risorse di Azure Key Vault selezionare l'opzione del menu di spostamento Segreti.

  3. Selezionare Genera/Importa dal menu.

    Screenshot dell'opzione Genera/Importa in un menu di un insieme di credenziali.

  4. Nella pagina Crea un segreto immettere le informazioni seguenti:

    Impostazione Description
    Opzioni di caricamento Manuale
    Nome cosmos-endpoint
    Valore del segreto Immettere l'URI copiato in precedenza in questa esercitazione.

    Screenshot della finestra di dialogo per la creazione di un segreto nel portale di Azure con i dettagli per un segreto URI.

  5. Selezionare Crea per creare il nuovo segreto cosmos-endpoint.

  6. Selezionare di nuovo Genera/Importa dal menu. Nella pagina Crea un segreto immettere le informazioni seguenti:

    Impostazione Description
    Opzioni di caricamento Manuale
    Nome cosmos-readwrite-key
    Valore del segreto Immettere il valore del campo PRIMARY KEY copiato in precedenza in questa esercitazione.

    Screenshot della finestra di dialogo Crea un Segreto nel portale di Azure con i dettagli per un segreto PRIMARY KEY.

  7. Selezionare Crea per creare il nuovo segreto cosmos-readwrite-key.

  8. Dopo aver creato i segreti, visualizzarli nell'elenco dei segreti all'interno della pagina Segreti.

    Screenshot dell'elenco dei segreti per un Key Vault.

  9. Selezionare ogni chiave, selezionare la versione più recente e quindi copiare il valore di Identificatore segreto. Utilizzerai l'identificatore per i segreti cosmos-endpoint e cosmos-readwrite-key più avanti in questa esercitazione.

    Suggerimento

    L'identificatore del segreto è in questo formato https://<key-vault-name>.vault.azure.net/secrets/<secret-name>/<version-id>. Ad esempio, se il nome dell'insieme di credenziali è msdocs-key-vault, il nome della chiave è cosmos-readwrite-key, e la versione è aaaaaaaa-0b0b-1c1c-2d2d-333333333333; quindi l'identificativo segreto è https://msdocs-key-vault.vault.azure.net/secrets/cosmos-readwrite-key/aaaaaaaa-0b0b-1c1c-2d2d-333333333333.

    Screenshot di un identificatore di un segreto di un contenitore di chiavi denominato cosmos-readwrite-key.

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.

  1. Creare un nuovo repository GitHub usando il modello cosmos-db-nosql-dotnet-sample-web-environment-variables.

  2. Nel portale di Azure selezionare Crea una risorsa > Web > App Web.

  3. Nella pagina Crea app Web, all'interno della scheda Informazioni di base, immettere le informazioni seguenti:

    Impostazione Description
    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 Inserisci un nome univoco a livello globale per la tua app web.
    Pubblicare Seleziona Codice.
    Stack di esecuzione Selezionare .NET 6 (LTS).
    Sistema operativo Selezionare Windows.
    Area geografica 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.
  4. Lasciare i valori predefiniti per le altre impostazioni.

  5. Selezionare Successivo: Distribuzione.

  6. Nella scheda Distribuzione immettere le informazioni seguenti:

    Impostazione Description
    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.
    Organizzazione Selezionare l'organizzazione per il nuovo repository GitHub.
    Repository Selezionare il nome del nuovo repository GitHub.
    Ramo Selezionare main.
  7. Selezionare Rivedi e crea.

  8. Rivedere le impostazioni specificate e quindi selezionare Crea. La creazione dell'account richiede alcuni minuti. Attendere che la pagina del portale mostri il messaggio La distribuzione è stata completata prima di continuare.

  9. 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.

    Screenshot dell'applicazione Web nello stato predefinito senza credenziali.

  10. Selezionare l'opzione Identità nel menu di spostamento.

  11. Nella pagina Identità selezionare Attiva per l'identità gestita Assegnata dal sistema e quindi selezionare Salva.

    Screenshot della pagina Identità che mostra l'abilitazione dell'identità gestita assegnata dal sistema.

Inserire i segreti di Azure Key Vault come impostazioni di App Web di Azure

Infine, inserisci i segreti archiviati nel vault delle chiavi come impostazioni dell'applicazione 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.

  1. Torna alla pagina di Key Vault nel portale di Azure. Selezionare Criteri di accesso dal menu di navigazione.

  2. Nel menu della pagina Criteri di accesso selezionare Crea.

    Screenshot dell'opzione Crea nel menu Criteri di accesso.

  3. Nella scheda Autorizzazioni della pagina Creare un criterio di accesso selezionare l'opzione Ottieni nella sezione Autorizzazioni segrete. Seleziona Avanti.

    Screenshot dell'autorizzazione Get abilitata per i permessi segreti.

  4. Nella scheda Principale selezionare il nome dell'app Web creata in precedenza nel presente tutorial. Seleziona Avanti.

    Screenshot di un'identità gestita assegnata a un'autorizzazione nell'applicazione web.

    Annotazioni

    In questo screenshot di esempio l'app Web è denominata msdocs-dotnet-web.

  5. Selezionare di nuovo Avanti per ignorare la scheda Applicazione. Nella scheda Rivedi e crea rivedere le impostazioni fornite e quindi selezionare Crea.

  6. Tornare alla pagina dell'app Web nel portale di Azure. Selezionare Configurazione nel menu di spostamento.

  7. 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 nel Key Vault 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 carattere di sottolineatura doppia è un delimitatore di chiave supportato da .NET in tutte le piattaforme. Per altre informazioni, vedere Configurazione delle variabili di ambiente.

    Annotazioni

    Ad esempio, se l'identificatore del segreto è https://msdocs-key-vault.vault.azure.net/secrets/cosmos-endpoint/AB0CD1EF2GH3IJ4KL5MN6OP7QR8ST9, il riferimento è @Microsoft.KeyVault(SecretUri=https://msdocs-key-vault.vault.azure.net/secrets/cosmos-endpoint/AB0CD1EF2GH3IJ4KL5MN6OP7QR8ST9):

    Screenshot della finestra di dialogo Aggiungi/Modifica impostazioni applicazione con un nuovo elemento che fa riferimento a un segreto di Key Vault.

  8. Selezionare OK per salvare in modo permanente la nuova impostazione dell'app

  9. 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 Ottieni l'identificatore del segreto per cosmos-readwrite-key nel Key Vault che hai creato in precedenza in questo tutorial. Immettere l'identificatore nel formato seguente: @Microsoft.KeyVault(SecretUri=<secret-identifier>).
  10. Tornare alla pagina Configurazione e selezionare Salva per aggiornare le impostazioni dell'app Web.

    Screenshot dell'opzione Salva nel menu della pagina Configurazione.

  11. 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.

    Screenshot della designazione del riferimento del Key Vault in due impostazioni dell'app in un'applicazione web.

  12. Selezionare Panoramica nel menu di spostamento. Selezionare Sfoglia per visualizzare l'app con le credenziali impostate.

    Screenshot dell'applicazione Web con credenziali valide dell'account Azure Cosmos DB per NoSQL.

Passaggi successivi