Usare i segreti di Azure Key Vault in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Key Vault consente agli sviluppatori di archiviare e gestire in modo sicuro informazioni riservate, ad esempio chiavi API, credenziali o certificati. Il servizio Azure Key Vault supporta due tipi di contenitori: insiemi di credenziali e pool di moduli di protezione hardware gestiti . Gli insiemi di credenziali possono archiviare chiavi, segreti e certificati supportati dal software e dal modulo di protezione hardware, mentre i pool di moduli di protezione hardware gestiti supportano esclusivamente le chiavi supportate dal modulo di protezione hardware.

La presente esercitazione include informazioni su come:

  • Creare un'istanza di Azure Key Vault usando l'interfaccia della riga di comando di Azure
  • Aggiungere un segreto e configurare l'accesso all'insieme di credenziali delle chiavi di Azure
  • Usare i segreti nella pipeline

Prerequisiti

  • Un'organizzazione Di Azure DevOps e un progetto. Creare un'organizzazione o un progetto, se non è già stato fatto.

  • Una sottoscrizione di Azure. Creare gratuitamente un account Azure, se non ne è già disponibile uno.

Creare un repository

Se si ha già un repository personalizzato, procedere con il passaggio successivo. In caso contrario, seguire le istruzioni riportate di seguito per inizializzare il repository. Questo repository di Azure verrà usato per configurare la pipeline.

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Selezionare Repository e quindi inizializzare per inizializzare il ramo principale con un file README.

    Screenshot che mostra come inizializzare un repository con un file README.

Creare un Azure Key Vault

  1. Accedere al portale di Azure e quindi selezionare il pulsante Cloud Shell nell'angolo superiore destro.

  2. Se all'account sono associate più sottoscrizioni di Azure, usare il comando seguente per specificare una sottoscrizione predefinita. È possibile usare az account list per generare un elenco delle sottoscrizioni.

    az account set --subscription <YOUR_SUBSCRIPTION_NAME_OR_ID>
    
  3. Impostare l'area di Azure predefinita. È possibile usare az account list-locations per generare un elenco di aree disponibili.

    az config set defaults.location=<YOUR_REGION>
    
  4. Creare un nuovo gruppo di risorse.

    az group create --name <YOUR_RESOURCE_GROUP_NAME>
    
  5. Creare un nuovo insieme di credenziali delle chiavi di Azure.

    az keyvault create \
      --name <YOUR_KEY_VAULT_NAME> \
      --resource-group <YOUR_RESOURCE_GROUP_NAME>
    
  6. Creare un nuovo segreto nell'insieme di credenziali delle chiavi di Azure.

    az keyvault secret set \
      --name <YOUR_SECRET_NAME> \
      --value <YOUR_ACTUAL_SECRET> \
      --vault-name <YOUR_KEY_VAULT_NAME>
    

Configurare i criteri di accesso dell'insieme di credenziali delle chiavi

Per accedere ad Azure Key Vault, è necessario configurare un'entità servizio per concedere l'accesso ad Azure Pipelines. Seguire questa guida per creare un'entità servizio con l'interfaccia della riga di comando di Azure e quindi continuare con i passaggi successivi in questa sezione.

  1. Passare a portale di Azure e quindi usare la barra di ricerca per trovare l'insieme di credenziali delle chiavi creato in precedenza.

    Screenshot che mostra come cercare Azure Key Vault.

  2. Selezionare Criteri di accesso e quindi Crea per creare un nuovo criterio.

  3. In Autorizzazioni segrete selezionare Recupera ed Elenco.

  4. Selezionare Avanti e quindi selezionare l'entità servizio creata in precedenza. Un'entità servizio è un oggetto che rappresenta un'applicazione o un servizio che richiede l'accesso alle risorse di Azure.

  5. Selezionare Avanti e quindi Avanti ancora una volta.

  6. Esaminare i criteri e quindi selezionare Crea al termine.

Aggiungi un'assegnazione di ruolo

Nel passaggio successivo si creerà una connessione al servizio ARM usando l'entità servizio. Prima di poter verificare la connessione, è necessario concedere all'entità servizio l'accesso in lettura a livello di sottoscrizione:

  1. Passare a portale di Azure

  2. Selezionare Sottoscrizioni nel pannello di spostamento sinistro e quindi trovare e selezionare la sottoscrizione.

  3. Selezionare Controllo di accesso e quindi Aggiungi aggiungi>assegnazione di ruolo.

    Screenshot che mostra come aggiungere una nuova assegnazione di ruolo a livello di sottoscrizione.

  4. Selezionare Lettore nella scheda Ruolo e quindi selezionare Avanti.

  5. Selezionare Utente, gruppo o entità servizio e quindi selezionare Seleziona membri.

    Screenshot che mostra come aggiungere membri all'assegnazione di ruolo in Azure.

  6. Usare la barra di ricerca per trovare l'entità servizio e quindi selezionare il segno "+" per selezionarlo, quindi fare clic sul pulsante Seleziona .

  7. Selezionare Rivedi e assegna, rivedere le impostazioni e quindi selezionare Rivedi e assegna ancora una volta per confermare le scelte e aggiungere l'assegnazione di ruolo.

Creare una connessione al servizio

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Selezionare Connessioni al servizio Impostazioni> progetto, quindi selezionare Nuova connessione al servizio per creare una nuova connessione al servizio.

  3. Selezionare Azure Resource Manager e quindi avanti.

  4. Selezionare Entità servizio (manuale) e quindi selezionare Avanti.

  5. Selezionare Cloud di Azure per Ambiente e sottoscrizione per il livello di ambito, quindi immettere l'ID sottoscrizione e il nome della sottoscrizione.

  6. Compilare i campi seguenti con le informazioni ottenute durante la creazione dell'entità servizio e quindi selezionare Verifica al termine:

    • ID entità servizio: id appId dell'entità servizio.
    • Chiave dell'entità servizio: password dell'entità servizio.
    • ID tenant: tenant dell'entità servizio.
  7. Dopo aver completato la verifica, specificare un nome e una descrizione (facoltativo) per la connessione al servizio e quindi selezionare la casella di controllo Concedi autorizzazione di accesso a tutte le pipeline.

  8. Al termine, selezionare Verifica e salva .

    Screenshot che mostra come creare una nuova connessione al servizio Azure Resource Manager usando l'entità servizio.

  1. Accedere alla raccolta di Azure DevOps e quindi passare al progetto.

  2. Selezionare Connessioni al servizio Impostazioni>progetto>Nuova connessione al servizio e quindi selezionare Azure Resource Manager per creare una nuova connessione al servizio ARM.

  3. Assegnare un nome alla connessione al servizio e quindi selezionare Cloud di Azure per Ambiente e sottoscrizione per il livello di ambito.

  4. Immettere l'ID sottoscrizione e il nome della sottoscrizione.

  5. Compilare i campi seguenti con le informazioni ottenute durante la creazione dell'entità servizio e quindi selezionare Verifica connessione al termine:

    • ID client dell'entità servizio: id appId dell'entità servizio.
    • Chiave dell'entità servizio: password dell'entità servizio.
    • ID tenant: tenant dell'entità servizio.
  6. Selezionare la casella di controllo Consenti a tutte le pipeline di usare questa connessione e quindi selezionare OK al termine.

    Screenshot che mostra come creare una nuova connessione al servizio ARM usando l'entità servizio in Azure DevOps Server 2019.

Crea una nuova pipeline

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Selezionare Pipeline e quindi Nuova pipeline.

  3. Selezionare Usa l'editor classico per creare una pipeline classica.

  4. Selezionare Azure Repos Git, selezionare il repository e il ramo predefinito e quindi selezionare Continua.

  5. Selezionare il modello di pipeline .Net Desktop .

  6. Per questo esempio, saranno necessarie solo le ultime due attività. Premere CTRL e quindi selezionare le prime cinque attività, fare clic con il pulsante destro del mouse e scegliere Rimuovi le attività selezionate per eliminarle.

    Screenshot che mostra come eliminare più attività della pipeline.

  7. Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Riga di comando , selezionarla e quindi selezionare Aggiungi per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:

    • Nome visualizzato: Crea file
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Screenshot che mostra come configurare l'attività della riga di comando.

  8. Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Azure Key Vault , selezionarla e quindi selezionare Aggiungi* per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:

    • Nome visualizzato: Azure Key Vault
    • Sottoscrizione di Azure: selezionare la connessione al servizio dell'entità servizio creata in precedenza
    • Insieme di credenziali delle chiavi: selezionare l'insieme di credenziali delle chiavi
    • Filtro segreto: elenco delimitato da virgole di nomi segreti o lasciare * per scaricare tutti i segreti dall'insieme di credenziali delle chiavi selezionato

    Screenshot che mostra come configurare l'attività di Azure Key Vault nelle pipeline classiche.

  9. Selezionare l'attività Copia file e compilare i campi obbligatori come indicato di seguito:

    • Nome visualizzato: Copia file
    • Contenuto: secret.txt
    • Cartella di destinazione: $(build.artifactstagingdirectory)

    Screenshot che mostra come configurare l'attività Copia file nelle pipeline classiche.

  10. Selezionare l'attività Pubblica artefatti e compilare i campi obbligatori come indicato di seguito:

    • Nome visualizzato: Pubblica artefatto
    • Percorso di pubblicazione: $(build.artifactstagingdirectory)
    • Nome artefatto: drop
    • Percorso di pubblicazione degli artefatti: Azure Pipelines

    Screenshot che mostra come configurare l'attività pubblica artefatti nelle pipeline classiche.

  11. Selezionare Salva e accodamento e quindi selezionare Esegui per eseguire la pipeline.

  12. Al termine dell'esecuzione della pipeline, tornare al riepilogo della pipeline e selezionare l'artefatto pubblicato.

  13. Selezionare drop>secret.txt per scaricare l'artefatto pubblicato.

    Screenshot che mostra come scaricare l'artefatto pubblicato.

  14. Aprire il file di testo appena scaricato, il file di testo deve contenere il segreto dall'insieme di credenziali delle chiavi di Azure.

  1. Accedere alla raccolta di Azure DevOps e quindi passare al progetto.

  2. Selezionare Pipeline e quindi Compilazioni.

  3. Selezionare Nuova>pipeline di compilazione.

  4. Selezionare Usa l'editor classico per creare una nuova pipeline di compilazione classica.

  5. Selezionare Azure Repos Git, selezionare il repository e il ramo predefinito e quindi selezionare Continua.

  6. Selezionare il modello di pipeline .Net Desktop e quindi selezionare Applica.

  7. Per questo esempio, saranno necessarie solo le ultime due attività. Premere CTRL e quindi selezionare le prime cinque attività, fare clic con il pulsante destro del mouse e scegliere Rimuovi le attività selezionate per eliminarle.

    Screenshot che mostra come eliminare più attività della pipeline nelle pipeline classiche in Azure DevOps Server 2019.

  8. Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Riga di comando , selezionarla e quindi selezionare Aggiungi per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:

    • Nome visualizzato: Crea file
    • Script: echo $(YOUR_SECRET_NAME) > secret.txt

    Screenshot che mostra come configurare l'attività della riga di comando nelle pipeline classiche in Azure DevOps Server 2019.

  9. Selezionare questa opzione + per aggiungere una nuova attività. Cercare l'attività Azure Key Vault , selezionarla e quindi selezionare Aggiungi* per aggiungerla alla pipeline. Dopo l'aggiunta, configurarla come segue:

    • Nome visualizzato: Azure Key Vault
    • Sottoscrizione di Azure: selezionare la connessione al servizio dell'entità servizio creata in precedenza
    • Insieme di credenziali delle chiavi: selezionare l'insieme di credenziali delle chiavi
    • Filtro segreto: elenco delimitato da virgole di nomi segreti o lasciare * per scaricare tutti i segreti dall'insieme di credenziali delle chiavi selezionato

    Screenshot che mostra come configurare l'attività azure Key Vault in una pipeline classica in Azure DevOps Server 2019.

  10. Selezionare l'attività Copia file e compilare i campi obbligatori come indicato di seguito:

    • Nome visualizzato: Copia file
    • Contenuto: secret.txt
    • Cartella di destinazione: $(build.artifactstagingdirectory)

    Screenshot che mostra come configurare l'attività Copia file nelle pipeline classiche in Azure DevOps Server 2019.

  11. Selezionare l'attività Pubblica artefatti e compilare i campi obbligatori come indicato di seguito:

    • Nome visualizzato: Pubblica artefatto
    • Percorso di pubblicazione: $(build.artifactstagingdirectory)
    • Nome artefatto: drop
    • Percorso di pubblicazione degli artefatti: Azure Pipelines

    Screenshot che mostra come configurare l'attività pubblica artefatti nelle pipeline classiche in Azure DevOps Server 2019.

  12. Selezionare Salva e coda e quindi salva e coda per eseguire la pipeline di compilazione.

  13. Al termine dell'esecuzione della pipeline, selezionare Artifacts (Artefatti) e quindi selezionare drop (Elimina).

  14. Nella finestra appena aperta selezionare drop>secret.txt, selezionare l'icona con i puntini di sospensione (...), quindi selezionare Scarica per salvare il file di testo.

  15. Aprire il file di testo appena scaricato, che deve contenere il segreto dall'insieme di credenziali delle chiavi di Azure.

Avviso

Questa esercitazione è solo a scopo didattico. Per le procedure consigliate per la sicurezza e come usare in modo sicuro i segreti, vedere Gestire i segreti nelle app server con Azure Key Vault.

Pulire le risorse

Seguire questa procedura per eliminare le risorse create:

  1. Se è stata creata una nuova organizzazione per ospitare il progetto, vedere come eliminare l'organizzazione, altrimenti eliminare il progetto.

  2. Tutte le risorse di Azure create durante questa esercitazione sono ospitate in un singolo gruppo di risorse. Eseguire il comando seguente per eliminare il gruppo di risorse e tutte le relative risorse.

    az group delete --name <YOUR_RESOURCE_GROUP_NAME>
    

Domande frequenti

D: Viene visualizzato l'errore seguente: "L'utente o il gruppo non dispone dell'autorizzazione per l'elenco dei segreti" cosa devo fare?

R: Se si verifica un errore che indica che l'utente o il gruppo non dispone dell'autorizzazione dell'elenco di segreti per l'insieme di credenziali delle chiavi, eseguire i comandi seguenti per autorizzare l'applicazione ad accedere alla chiave o al segreto in Azure Key Vault:

$ErrorActionPreference="Stop";
$Credential = Get-Credential;
Connect-AzAccount -SubscriptionId <YOUR_SUBSCRIPTION_ID> -Credential $Credential;
$spn=(Get-AzureRmADServicePrincipal -SPN <YOUR_SERVICE_PRINCIPAL_ID>);
$spnObjectId=$spn.Id;
Set-AzureRmKeyVaultAccessPolicy -VaultName key-vault-tutorial -ObjectId $spnObjectId -PermissionsToSecrets get,list;