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 SecretOneSecretTwo. 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 of Add variable group button highlighted with red box.

  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 of saving a variable group.

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

Collegare un insieme di credenziali delle chiavi di Azure esistente a un gruppo di variabili ed eseguire il mapping dei segreti dell'insieme di credenziali selettivi al gruppo di variabili.

  1. Nella pagina Gruppi di variabili abilitare Collega segreti da un insieme di credenziali delle chiavi di Azure come variabili. Sarà necessario un insieme di credenziali delle chiavi esistente contenente i segreti. Creare un insieme di credenziali delle chiavi usando il portale di Azure.

    Screenshot of variable group with Azure key vault integration.

  2. Specificare l'endpoint della sottoscrizione di Azure e il nome dell'insieme di credenziali contenente i segreti.

    Verificare che la connessione al servizio di Azure disponga almeno delle autorizzazioni di gestione Get e List nell'insieme di credenziali per i segreti. Abilitare Azure Pipelines per impostare queste autorizzazioni scegliendo Autorizza accanto al nome dell'insieme di credenziali. In alternativa, impostare manualmente le autorizzazioni nel portale di Azure:

    1. Aprire Impostazioni per l'insieme di credenziali e quindi scegliere Criteri di accesso>Aggiungi nuovo.
    2. Selezionare Seleziona entità e quindi scegliere l'entità servizio per l'account client.
    3. Selezionare Autorizzazioni segrete e assicurarsi che Get e List dispongano di segni di spunta.
    4. Selezionare OK per salvare le modifiche.
  3. Nella pagina Gruppi di variabili selezionare + Aggiungi per selezionare segreti specifici dall'insieme di credenziali per il mapping a questo gruppo di variabili.

Gestire i segreti dell'insieme di credenziali delle chiavi

Vedere l'elenco seguente di suggerimenti utili per la gestione dei segreti.

  • Solo i nomi dei segreti vengono mappati al gruppo di variabili, non ai valori dei segreti. Il valore del segreto più recente, recuperato dall'insieme di credenziali, viene usato nell'esecuzione della pipeline collegata al gruppo di variabili.

  • Tutte le modifiche apportate ai segreti esistenti nell'insieme di credenziali delle chiavi sono automaticamente disponibili per tutte le pipeline in cui viene usato il gruppo di variabili.

  • Quando i nuovi segreti vengono aggiunti o eliminati dall'insieme di credenziali, i gruppi di variabili associati non vengono aggiornati automaticamente. I segreti inclusi nel gruppo di variabili devono essere aggiornati in modo esplicito in modo che le pipeline che usano il gruppo di variabili vengano eseguite correttamente.

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

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.

    Add the Azure Key Vault task.

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 of bash variable output.

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