Usare i segreti Azure Key Vault nella pipeline

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Gli sviluppatori possono usare Azure Key Vault per archiviare e gestire in modo sicuro informazioni riservate, ad esempio password, chiavi API e certificati. Questo articolo illustra come interrogare e usare segreti da un insieme di credenziali in Azure Key Vault nella propria pipeline.

Prerequisiti

Product Requisiti
Azure DevOps - Un progetto Azure DevOps.
-Autorizzazioni:
    - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators.
    - Per creare connessioni al servizio: è necessario avere il ruolo Amministratore o Creator per le connessioni al servizio.
GitHub - Un account GitHub e un repository GitHub.
- Una connessione al servizio GitHub per autorizzare Azure Pipelines.
Azzurro - Una sottoscrizione di Azure .

Creare un insieme di credenziali delle chiavi

  1. Accedere al portale di Azure e quindi selezionare Crea una risorsa.

  2. In Key Vault selezionare Crea per creare un nuovo Azure key vault.

  3. Selezionare la sottoscrizione dal menu a discesa e quindi selezionare un gruppo di risorse esistente o crearne uno nuovo. Immettere il nome del deposito di chiavi, selezionare una regione, scegliere un piano tariffario e selezionare Avanti per configurare altre proprietà. In caso contrario, selezionare Rivedi e crea per mantenere le impostazioni predefinite.

  4. Una volta completata la distribuzione, selezionare Vai alla risorsa.

Configurare l'autenticazione

Creare un'identità gestita assegnata dall'utente

  1. Accedere al portale Azure e quindi cercare il servizio Managed Identities nella barra di ricerca.

  2. Selezionare Crea e quindi compilare i campi obbligatori:

    • Sottoscrizione: selezionare la sottoscrizione dal menu a discesa.
    • Gruppo di risorse: selezionare un gruppo di risorse esistente o crearne uno nuovo.
    • Area: selezionare un'area dal menu a discesa.
    • Nome: immetti un nome per l'identità gestita assegnata dall'utente.
  3. Al termine, selezionare Rivedi e crea .

  4. Una volta completata la distribuzione, selezionare Vai alla risorsa. Copiare la sottoscrizione e l'ID client perché sono necessari nei passaggi successivi.

  5. Passare a Impostazioni>Proprietà e copiare il l'ID tenant dell'identità gestita per essere utilizzato in un secondo momento.

Configurare le politiche di accesso del Key Vault

  1. Vai al Azure Portal e usa la barra di ricerca per trovare il Key Vault creato in precedenza.

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

  3. In Autorizzazioni segrete selezionare le caselle di controllo Recupera ed Elenco .

  4. Selezionare Avanti e quindi incollare l'ID client dell'identità gestita creata in precedenza nella barra di ricerca.

  5. Selezionare l'identità gestita, selezionare Avanti e quindi di nuovo Avanti .

  6. Rivedi la tua nuova politica e quindi seleziona Crea al termine.

Creare una connessione al servizio

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

  2. Selezionare Impostazioni progetto>Connessioni al servizio e quindi selezionare Nuova connessione al servizio.

  3. Selezionare Azure Resource Manager, quindi selezionare Avanti.

  4. In Tipo di identità selezionare Identità gestita dal menu a discesa.

  5. Per Passaggio 1: Dettagli identità gestita compilare i campi:

    • Sottoscrizione per l'identità gestita: selezionare la sottoscrizione che contiene l'identità gestita.
    • Gruppo di risorse per l'identità gestita: selezionare il gruppo di risorse in cui è ospitata l'identità gestita.
    • Identità gestita: selezionare l'identità gestita dal menu a discesa.
  6. Per Fase 2: Ambito Azure, compilare i campi:

    • Livello di ambito per la connessione al servizio: selezionare Sottoscrizione.
    • Sottoscrizione per la connessione al servizio: selezionare la sottoscrizione a cui accede l'identità gestita.
    • Gruppo di risorse per la connessione al servizio: (facoltativo) Specificare questo elemento se si vuole limitare l'accesso a un gruppo di risorse specifico.
  7. Per Passaggio 3: Dettagli connessione al servizio, compilare i campi:

    • Nome connessione al servizio: immettere un nome per la connessione al servizio.
    • Informazioni di riferimento sulla gestione dei servizi: (facoltativo) Includere informazioni di contesto da un database ITSM.
    • Descrizione: (Facoltativo) Aggiungere una descrizione.
  8. In Sicurezza selezionare la casella di controllo Concedi l'autorizzazione di accesso a tutte le pipeline per consentire a tutte le pipeline di usare questa connessione al servizio. Se si lascia vuota questa casella di controllo, è necessario concedere manualmente l'accesso per ogni pipeline.

  9. Selezionare Salva per convalidare e creare la connessione al servizio.

    Screenshot che mostra come creare una connessione del servizio identità gestita di Azure Resource Manager.

Eseguire interrogazioni e usare segreti nel flusso di lavoro

Con l'attività Azure Key Vault, è ora possibile interrogare e recuperare segreti dal tuo key vault e usarli nelle attività successive nella pipeline. I segreti devono essere mappati in modo esplicito alle variabili di ambiente, come illustrato nell'esempio seguente:

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: AzureKeyVault@2                                # Download Azure Key Vault secrets.
  inputs:
    azureSubscription: 'SERVICE_CONNECTION_NAME'       # Name of the service connection. Alias: ConnectedServiceName.
    KeyVaultName: 'KEY_VAULT_NAME'                     # Name of the key vault.
    SecretsFilter: '*'                                 # Secrets filter. Default: *.

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

L'output dell'ultimo passaggio Bash dovrebbe essere simile all'esempio seguente:

Secret Found! ***

Nota

Per eseguire query su più segreti da Key Vault, usare l'input SecretsFilter e fornire un elenco delimitato da virgole di nomi di segreti, ad esempio "secret1, secret2".