Condividi tramite


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 metodo 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. Per crittografare e creare un segreto di variabile della pipeline, selezionare 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

È 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 gruppi di variabili e collegarli a un insieme di credenziali delle chiavi di Azure esistente, consentendo di eseguire il mapping ai segreti archiviati nell'insieme di credenziali delle chiavi. 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. Per altre informazioni, vedere Collegare un gruppo di variabili ai segreti in Azure Key Vault.

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 metodo è 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 flag issecret.

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.