Impostare le variabili segrete

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

Le variabili segrete sono variabili crittografate che è possibile usare nelle pipeline senza esporre il relativo valore. Le variabili segrete possono essere usate per informazioni private come password, ID e altri dati di identificazione che non si desidera esporre in una pipeline. Le variabili segrete vengono crittografate inattive con una chiave RSA a 2048 bit e sono disponibili nell'agente per le attività e gli script da usare.

I modi consigliati per impostare le variabili segrete si trovano nell'interfaccia utente, in un gruppo di variabili e in un gruppo di variabili di Azure Key Vault. È anche possibile impostare le variabili segrete in uno script con un comando di registrazione, ma questo non è consigliato perché chiunque possa accedere alla pipeline può anche visualizzare il segreto.

Le variabili segrete impostate nell'interfaccia utente delle impostazioni della pipeline per una pipeline hanno come ambito la pipeline in cui sono impostate. È possibile usare gruppi di variabili per condividere le variabili segrete tra le pipeline.

Variabile segreta nell'interfaccia utente

È possibile impostare le variabili segrete nell'editor della pipeline quando si modifica una singola pipeline. Si crittograferà e si creerà un segreto di variabile della pipeline selezionando l'icona di blocco.

Le variabili segrete sono impostate allo stesso modo per YAML e Classic.

Per impostare i segreti nell'interfaccia Web, seguire questa procedura:

  1. Passare alla pagina Pipeline, selezionare la pipeline appropriata e quindi selezionare Modifica.
  2. Individuare le Variabili per la pipeline.
  3. Aggiungere o aggiornare la variabile.
  4. Selezionare l'opzione Mantieni questo valore segreto per archiviare la variabile in modo crittografato.
  5. Salvare la pipeline.

Le variabili segrete vengono crittografate quando sono inattive con una chiave RSA a 2048 bit. I segreti sono disponibili nell'agente per le attività e gli script da usare. Prestare attenzione a chi ha accesso per modificare la pipeline.

Importante

Si fa un tentativo di mascherare i segreti dalla visualizzazione nell'output di Azure Pipelines, ma è comunque necessario adottare precauzioni. Non richiamare mai i segreti come output. Alcuni sistemi operativi registrano gli argomenti della riga di comando. Non passare mai i segreti sulla riga di comando. È invece consigliabile eseguire il mapping dei segreti alle variabili di ambiente.

Non mascheramo mai le sottostringhe dei segreti. Se, ad esempio, "abc123" viene impostato come segreto, "abc" non viene mascherato dai log. Lo scopo è evitare di mascherare i segreti a un livello troppo granulare, rendendo illeggibili i log. Per questo motivo, i segreti non dovrebbero contenere dati strutturati. Se, ad esempio, "{ "foo": "bar" }" è impostato come segreto, "bar" non viene mascherato nei log.

A differenza di una variabile normale, non vengono decrittografati automaticamente nelle variabili di ambiente per gli script. È necessario eseguire il mapping esplicito delle variabili segrete.

Usare una variabile segreta nell'interfaccia utente

Sarà necessario eseguire il mapping della variabile segreta come variabili di ambiente per farvi riferimento nelle pipeline YAML. In questo esempio sono presenti due variabili segrete definite nell'interfaccia utente e SecretOne SecretTwo. Il valore di SecretOne è foo e il valore di SecretTwo è bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

Output della pipeline:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

Nota

Azure Pipelines si impegna a mascherare i segreti durante l'emissione di dati nei log della pipeline, pertanto è possibile visualizzare variabili aggiuntive e dati mascherati nell'output e nei log che non sono impostati come segreti.

Per un esempio più dettagliato, vedere Definire le variabili.

Impostare una variabile privata in un gruppo di variabili

È possibile aggiungere segreti a un gruppo di variabili o collegare segreti da un insieme di credenziali delle chiavi di Azure esistente.

Creare nuovi gruppi di variabili

  1. Selezionare Libreria> pipeline>+ Gruppo di variabili.

    Screenshot del pulsante Aggiungi gruppo di variabili evidenziato con la casella rossa.

  2. Immettere un nome e una descrizione per il gruppo.

  3. Facoltativo: spostare l'interruttore per collegare i segreti da un insieme di credenziali delle chiavi di Azure come variabili. Per ulteriori informazioni, vedere Utilizzare i segreti di Azure Key Vault.

  4. Immettere il nome e il valore per ogni variabile da includere nel gruppo, scegliendo + Aggiungi per ognuno di essi.

  5. Per proteggere la variabile, scegliere l'icona "blocca" alla fine della riga.

  6. Al termine dell'aggiunta di variabili, selezionare Salva.

    Screenshot del salvataggio di un gruppo di variabili.

I gruppi di variabili seguono il modello di sicurezza della libreria.

È possibile creare un gruppo di variabili che si collega a un insieme di credenziali delle chiavi di Azure esistente ed eseguire il mapping dei segreti selezionati di Key Vault al gruppo di variabili. Solo i nomi dei segreti vengono mappati al gruppo di variabili, non ai valori dei segreti. La pipeline esegue il collegamento al gruppo di variabili recupera i valori dei segreti più recenti dall'insieme di credenziali.

Tutte le modifiche apportate ai segreti esistenti nell'insieme di credenziali delle chiavi sono automaticamente disponibili per tutte le pipeline che usano il gruppo di variabili. Tuttavia, se i segreti vengono aggiunti o eliminati dall'insieme di credenziali, i gruppi di variabili associati non vengono aggiornati automaticamente. È necessario aggiornare in modo esplicito i segreti da includere nel gruppo di variabili.

Sebbene Key Vault supporti l'archiviazione e la gestione di chiavi crittografiche e certificati in Azure, l'integrazione dei gruppi di variabili di Azure Pipelines supporta solo il mapping dei segreti dell'insieme di credenziali delle chiavi. Le chiavi crittografiche e i certificati non sono supportati.

Nota

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

Prerequisiti

  • Insieme di credenziali delle chiavi di Azure che contiene i segreti. È possibile creare un insieme di credenziali delle chiavi usando il portale di Azure.
  • Una connessione al servizio di Azure per il progetto.

Creare il gruppo di variabili

  1. Nel progetto Azure DevOps selezionare Pipelines>Library+ Variable group (Libreria> pipeline+ gruppo di variabili).
  2. Nella pagina Gruppi di variabili immettere un nome e una descrizione facoltativa per il gruppo di variabili.
  3. Abilitare l'interruttore Collega segreti da un insieme di credenziali delle chiavi di Azure come variabili .
  4. Selezionare l'endpoint della sottoscrizione di Azure e il nome dell'insieme di credenziali delle chiavi.
  5. Abilitare Azure DevOps per accedere all'insieme di credenziali delle chiavi selezionando Autorizza accanto al nome dell'insieme di credenziali.
  6. Nella schermata Scegli segreti selezionare segreti specifici dall'insieme di credenziali per il mapping a questo gruppo di variabili e quindi selezionare OK.
  7. Selezionare Salva per salvare il gruppo di variabili segrete.

Screenshot del gruppo di variabili con l'integrazione dell'insieme di credenziali delle chiavi di Azure.

Nota

La connessione al servizio di Azure deve avere almeno le autorizzazioni Get ed List per l'insieme di credenziali delle chiavi, che è possibile autorizzare nei passaggi precedenti. È anche possibile fornire queste autorizzazioni dal portale di Azure seguendo questa procedura:

  1. Aprire Impostazioni per l'insieme di credenziali delle chiavi e quindi scegliere Configurazione di accesso>Vai ai criteri di accesso.
  2. Nella pagina Criteri di accesso , se il progetto di Azure Pipelines non è elencato in Applicazioni con almeno autorizzazioni Get ed List , selezionare Crea.
  3. In Autorizzazioni segrete selezionare Recupera ed Elenco e quindi selezionare Avanti.
  4. Selezionare l'entità servizio e quindi selezionare Avanti.
  5. Selezionare di nuovo Avanti , rivedere le impostazioni e quindi selezionare Crea.

Usare l'attività Azure Key Vault

È possibile usare l'attività Azure Key Vault per includere segreti nella pipeline. Questa attività consente alla pipeline di connettersi all'insieme di credenziali delle chiavi di Azure e recuperare i segreti da usare come variabili della pipeline.

  1. Nell'editor della pipeline selezionare Mostra assistente per espandere il pannello degli assistenti.

  2. vault Cercare e selezionare l'attività Azure Key Vault.

    Aggiungere l'attività Azure Key Vault.

L'opzione Rendi i segreti disponibili per l'intero processo non è attualmente supportata in Azure DevOps Server 2019 e 2020.

Per altre informazioni sull'attività Azure Key Vault, vedere Usare i segreti di Azure Key Vault in Azure Pipelines.

Impostare una variabile segreta in uno script con i comandi di registrazione

È possibile usare il task.setvariable comando di registrazione per impostare le variabili negli script di PowerShell e Bash. Questo è il modo meno sicuro per lavorare con le variabili segrete, ma può essere utile per il debug. I modi consigliati per impostare le variabili segrete si trovano nell'interfaccia utente, in un gruppo di variabili e in un gruppo di variabili di Azure Key Vault.

Per impostare una variabile come script con un comando di registrazione, è necessario passare il issecret flag.

Se issecret è impostato su true, il valore della variabile verrà salvato come segreto e mascherato dai log.

Nota

Azure Pipelines si impegna a mascherare i segreti durante l'emissione di dati nei log della pipeline, pertanto è possibile visualizzare variabili aggiuntive e dati mascherati nell'output e nei log che non sono impostati come segreti.

Impostare la variabile segreta mySecretVal .

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

Ottenere la variabile mySecretValprivata .

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

Output delle variabili segrete in bash.

Screenshot dell'output della variabile bash.

Altre informazioni sull'impostazione e sull'uso delle variabili negli script.