Condividi tramite


Usare i segreti di Azure Key Vault nella pipeline

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

Con Azure Key Vault è possibile archiviare e gestire in modo sicuro le informazioni riservate, ad esempio password, chiavi API, certificati e così via. usando Azure Key Vault, è possibile creare e gestire facilmente le chiavi di crittografia per crittografare i dati. Azure Key Vault può essere usato anche per gestire i certificati per tutte le risorse. In questo articolo si apprenderà come:

  • Creare un insieme di credenziali delle chiavi di Azure.
  • Configurare le autorizzazioni di Key Vault.
  • Creare una nuova connessione al servizio.
  • Eseguire una query per individuare i segreti dalla pipeline di Azure.

Prerequisiti

Creare un Azure Key Vault

  1. Passare al portale di Azure.

  2. Selezionare Crea una risorsa nel riquadro di spostamento a sinistra.

    A screenshot showing how to create a new resource in Azure portal.

  3. Cercare Key Vault e quindi premere INVIO.

    A screenshot showing how to search for Azure Key Vault in Azure portal.

  4. Selezionare Crea per creare un nuovo insieme di credenziali delle chiavi di Azure.

    A screenshot showing how to create a new Azure Key Vault in Azure portal.

  5. Selezionare la sottoscrizione e quindi aggiungere un nuovo gruppo di risorse. Immettere un nome dell'insieme di credenziali delle chiavi e selezionare un'areae un piano tariffario. Al termine, selezionare Rivedi e crea .

    A screenshot showing the steps to create a new key vault in Azure portal.

  6. Selezionare Vai alla risorsa al termine della distribuzione della nuova risorsa.

    A screenshot showing how to navigate to your resource in Azure portal.

Creare un'entità servizio

In questo passaggio si creerà una nuova entità servizio in Azure, consentendo di eseguire query su Azure Key Vault da Azure Pipelines.

  1. Passare al portale di Azure.

  2. Nella barra dei menu selezionare l'icona >_ per aprire Cloud Shell.

  3. Selezionare PowerShell o lasciarlo Bashin base alle preferenze.

  4. Eseguire il comando seguente per creare una nuova entità servizio:

    az ad sp create-for-rbac --name YOUR_SERVICE_PRINCIPAL_NAME
    
  5. L'output deve corrispondere all'esempio seguente. Assicurarsi di copiare l'output del comando, perché sarà necessario per creare la connessione al servizio nel passaggio successivo.

    {
      "appId": "p951q3e2-8e5r-z697-e9q52aviu8a2",
      "displayName": "MyServicePrincipal",
      "password": "***********************************",
      "tenant": "85wes2u6-63sh-95zx-2as3-qw58wex269df"
    }
    

Configurare le autorizzazioni di accesso di Key Vault

  1. Passare al portale di Azure.

  2. Selezionare l'insieme di credenziali delle chiavi creato nel passaggio precedente.

  3. Seleziona Criteri di accesso.

    A screenshot showing how to navigate to your key vault access policies in Azure portal.

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

  5. Aggiungere un oggetto Get e List alle autorizzazioni Secret.

    A screenshot showing how to add get and list permissions to your key vault in Azure portal.

  6. In Seleziona entità selezionare per aggiungere un'entità servizio e scegliere quella creata in precedenza.

  7. Al termine, seleziona Salva.

Nota

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

Creare una nuova connessione al servizio

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

  2. Selezionare gear iconImpostazioni progetto e quindi Connessioni al servizio.

  3. Se si configura una connessione al servizio per la prima volta nel progetto, selezionare Crea connessione al servizio. Se sono state effettuate connessioni al servizio in precedenza, selezionare Nuova connessione al servizio.

  4. Selezionare Azure Resource Manager e quindi avanti.

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

  6. Selezionare Sottoscrizione per il livello di ambito e compilare i campi obbligatori con le informazioni dell'entità servizio creata in precedenza. Al termine, selezionare Verifica :

    • ID entità servizio: id appId dell'entità servizio.
    • Chiave dell'entità servizio: password dell'entità servizio.
    • ID tenant: tenant dell'entità servizio.
  7. Specificare un nome per la connessione al servizio e assicurarsi di selezionare la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline .

  8. Al termine, selezionare Verifica e salva .

    A screenshot showing how to create a new manual service principal service connection.

Eseguire query e usare segreti nella pipeline

Usando l'attività azure Key Vault è possibile recuperare il valore del segreto e usarlo nelle attività successive nella pipeline. Un aspetto da tenere presente è che i segreti devono essere mappati in modo esplicito alla variabile env, come illustrato nell'esempio seguente.

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@1
  inputs:
    azureSubscription: 'repo-kv-demo'                    ## YOUR_SERVICE_CONNECTION_NAME
    KeyVaultName: 'kv-demo-repo'                         ## YOUR_KEY_VAULT_NAME
    SecretsFilter: 'secretDemo'                          ## YOUR_SECRET_NAME. Default value: *
    RunAsPreJob: false                                   ## Make the secret(s) available to the whole job

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: '**/*.csproj'

- task: DotNetCoreCLI@2
  inputs:
    command: 'run'
    projects: '**/*.csproj'
  env:
    mySecret: $(secretDemo)

- bash: |
    echo "Secret Found! $MY_MAPPED_ENV_VAR"        
  env:
    MY_MAPPED_ENV_VAR: $(mySecret)

L'output dell'ultimo comando bash dovrebbe essere simile al seguente:

Secret Found! ***

Nota

Se si vuole eseguire una query per più segreti da Azure Key Vault, usare l'argomento SecretsFilter per passare un elenco delimitato da virgole di nomi segreti: 'secret1, secret2'.