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 segreti, 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 supportano l'archiviazione di chiavi, segreti e certificati supportati da software e HSM, mentre i pool di moduli di protezione hardware gestiti supportano solo le chiavi supportate dal modulo di protezione hardware.

In questa esercitazione verranno illustrate le procedure per:

  • Creare un Key Vault di Azure con 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

Creare un Azure Key Vault

Accedere al portale di Azure e quindi selezionare il pulsante Cloud Shell nell'angolo in alto a destra.

  1. 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>
    
  2. 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>
    

    Ad esempio, questo comando selezionerà l'area westus2:

    az config set defaults.location=westus2
    
  3. Creare un nuovo gruppo di risorse. Un gruppo di risorse è un contenitore con risorse correlate per una soluzione Azure.

    az group create --name <your-resource-group>
    
  4. Creare un nuovo insieme di credenziali delle chiavi.

    az keyvault create \
      --name <your-key-vault> \
      --resource-group <your-resource-group>
    
  5. Creare un nuovo segreto nell'insieme di credenziali delle chiavi di Azure.

    az keyvault secret set \
      --name "Password" \
      --value "mysecretpassword" \
      --vault-name <your-key-vault-name>
    

Creare un progetto

  1. Accedere all'organizzazione di Azure DevOps.

  2. Se non sono ancora presenti progetti nell'organizzazione, selezionare Crea un progetto per iniziare. In caso contrario, selezionare Nuovo progetto nell'angolo superiore destro.

Creare un repository

Si userà YAML per creare la pipeline, ma prima di tutto è necessario creare un nuovo repository.

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

  2. Selezionare Repository e quindi inizializza per inizializzare un nuovo repository con un file README.

    Screenshot che mostra come inizializzare un repository.

Creare una nuova pipeline

  1. Selezionare Pipeline e quindi nuova pipeline.

  2. Selezionare Azure Repos Git (YAML).

    Screenshot che mostra come selezionare Azure Repos controllo del codice sorgente.

  3. Selezionare il repository creato nel passaggio precedente.

  4. Selezionare il modello pipeline starter .

  5. La pipeline predefinita includerà alcuni script che eseguono comandi echo. Queste non sono necessarie in modo da poterle eliminare. Il nuovo file YAML sarà simile al seguente:

    trigger:
    - main
    
    pool:
        vmImage: 'ubuntu-latest'
    
    steps:
    
  6. Selezionare Mostra assistente per espandere il pannello assistente. Questo pannello fornisce un elenco pratico e ricercabile di attività della pipeline.

    Screenshot che mostra come accedere al pannello assistente attività.

  7. Cercare l'insieme di credenziali e selezionare l'attività Azure Key Vault.

    Screenshot che mostra come cercare l'attività azure Key Vault.

  8. Selezionare la sottoscrizione di Azure e quindi selezionare Autorizza. Selezionare l'insieme di credenziali delle chiavi dal menu a discesa e quindi selezionare Aggiungi per aggiungere l'attività alla pipeline YAML.

    Screenshot che mostra come configurare l'attività azure Key Vault.

    Nota

    La funzionalità Rendi i segreti disponibili per l'intero processo non è supportata in Azure DevOps Server 2019 e 2020.

  9. Il file YAML dovrebbe essere simile al seguente:

    trigger:
    - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
    - task: AzureKeyVault@2
      inputs:
        azureSubscription: 'Your-Azure-Subscription'
        KeyVaultName: 'Your-Key-Vault-Name'
        SecretsFilter: '*'
        RunAsPreJob: false
    
    - task: CmdLine@2
      inputs:
        script: 'echo $(Your-Secret-Name) > secret.txt'
    
    - task: CopyFiles@2
      inputs:
        Contents: secret.txt
        targetFolder: '$(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'
        publishLocation: 'Container'
    

Non salvare o accodare ancora la pipeline. È innanzitutto necessario concedere alla pipeline le autorizzazioni appropriate per accedere ad Azure Key Vault. Mantenere aperta la scheda del browser, i passaggi rimanenti verranno ripresi dopo aver configurato le autorizzazioni dell'insieme di credenziali delle chiavi.

Configurare i criteri di accesso di Azure Key Vault

Per accedere all'Key Vault di Azure, è prima necessario configurare un'entità servizio per concedere l'accesso ad Azure Pipelines. Seguire questa guida per creare l'entità servizio e quindi procedere con i passaggi successivi di questa sezione.

  1. Passare al portale di Azure.

  2. Usare la barra di ricerca per cercare l'insieme di credenziali delle chiavi creato in precedenza.

    Screenshot che mostra come cercare il Key Vault di Azure.

  3. In Impostazioni selezionare Criteri di accesso.

  4. Selezionare Aggiungi criteri di accesso per aggiungere un nuovo criterio.

  5. Per Autorizzazioni segrete selezionare Recupera ed Elenco.

  6. Selezionare l'opzione per selezionare un'entità servizio e cercare quella creata all'inizio di questa sezione. Un'entità di sicurezza è un oggetto che rappresenta un utente, un gruppo, un servizio o un'applicazione che richiede l'accesso alle risorse di Azure.

  7. Selezionare Aggiungi per creare i criteri di accesso, quindi selezionare Salva al termine.

Nota

Gli insiemi di credenziali delle chiavi di Azure che usano il controllo degli accessi in base al ruolo di Azure non sono supportati.

Eseguire ed esaminare la pipeline

  1. Tornare alla scheda precedente in cui è stato interrotto.

  2. Selezionare Salva e quindi selezionare di nuovo Salva per eseguire il commit delle modifiche e attivare la pipeline. È possibile che venga richiesto di consentire l'accesso alla pipeline alle risorse di Azure, se richiesto selezionare Consenti. È necessario approvare la pipeline una sola volta.

  3. Selezionare l'attività CmdLine per visualizzare i log.

    Screenshot che mostra i log attività della riga di comando.

  4. Tornare al riepilogo della pipeline e selezionare l'artefatto pubblicato.

    Screenshot che mostra il riepilogo della pipeline e l'artefatto pubblicato.

  5. Selezionare l'artefatto secret.txt per aprirlo.

    Screenshot che mostra come aprire l'artefatto pubblicato.

  6. Il file di testo deve contenere il segreto: mysecretpassword.

Avviso

Questa esercitazione è solo per scopi didattici. 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, in caso contrario eliminare il progetto.

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

    az group delete --name PipelinesKeyVaultResourceGroup
    

Domande frequenti

D: Viene visualizzato l'errore seguente: "l'utente o il gruppo non dispone dell'autorizzazione dell'elenco dei segreti" cosa è necessario eseguire?

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

$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;

Passaggi successivi