Ange hemliga variabler

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Hemliga variabler är krypterade variabler som du kan använda i pipelines utan att exponera deras värde. Hemliga variabler kan användas för privat information som lösenord, ID:t och andra identifierande data som du inte vill ska exponeras i en pipeline. Hemliga variabler krypteras i vila med en 2048-bitars RSA-nyckel och är tillgängliga på agenten för uppgifter och skript att använda.

De rekommenderade sätten att ange hemliga variabler finns i användargränssnittet, i en variabelgrupp och i en variabelgrupp från Azure Key Vault. Du kan också ange hemliga variabler i ett skript med ett loggningskommando , men det rekommenderas inte eftersom alla som har åtkomst till din pipeline också kan se hemligheten.

Hemliga variabler som anges i användargränssnittet för pipelineinställningar för en pipeline begränsas till pipelinen där de anges. Du kan använda variabelgrupper för att dela hemliga variabler mellan pipelines.

Hemlig variabel i användargränssnittet

Du kan ange hemliga variabler i pipelineredigeraren när du redigerar en enskild pipeline. Du krypterar och gör en pipelinevariabelhemlighet genom att välja låsikonen.

Du anger hemliga variabler på samma sätt för YAML och Classic.

Följ dessa steg för att ange hemligheter i webbgränssnittet:

  1. Gå till sidan Pipelines , välj lämplig pipeline och välj sedan Redigera.
  2. Leta upp variablerna för den här pipelinen.
  3. Lägg till eller uppdatera variabeln.
  4. Välj alternativet för att behålla den här värdehemligheten för att lagra variabeln på ett krypterat sätt.
  5. Spara pipelinen.

Hemliga variabler krypteras i vila med en 2048-bitars RSA-nyckel. Hemligheter är tillgängliga på agenten för uppgifter och skript som ska användas. Var försiktig med vem som har åtkomst till att ändra din pipeline.

Viktigt!

Vi gör ett försök att maskera hemligheter från att visas i Azure Pipelines-utdata, men du måste fortfarande vidta försiktighetsåtgärder. Upprepa aldrig hemligheter som utdata. Vissa operativsystem loggar kommandoradsargument. Skicka aldrig hemligheter på kommandoraden. I stället föreslår vi att du mappar dina hemligheter till miljövariabler.

Vi maskerar aldrig understrängar av hemligheter. Om till exempel "abc123" anges som en hemlighet maskeras inte "abc" från loggarna. Detta är för att undvika maskering av hemligheter på en för detaljerad nivå, vilket gör loggarna olästa. Därför bör hemligheter inte innehålla strukturerade data. Om till exempel "{ "foo": "bar" }" har angetts som en hemlighet maskeras inte "bar" från loggarna.

Till skillnad från en normal variabel dekrypteras de inte automatiskt till miljövariabler för skript. Du måste uttryckligen mappa hemliga variabler.

Använda en hemlig variabel i användargränssnittet

Du måste mappa hemlig variabel som miljövariabler för att referera till dem i YAML-pipelines. I det här exemplet finns det två hemliga variabler som definierats i användargränssnittet SecretOne och SecretTwo. Värdet SecretOne för är foo och värdet SecretTwo för är 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) 

Pipelinens utdata:

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

Kommentar

Azure Pipelines gör ett försök att maskera hemligheter när data skickas till pipelineloggar, så du kan se ytterligare variabler och data maskerade i utdata och loggar som inte har angetts som hemligheter.

Ett mer detaljerat exempel finns i Definiera variabler.

Ange en hemlig variabel i en variabelgrupp

Du kan lägga till hemligheter i en variabelgrupp eller länka hemligheter från ett befintligt Azure Key Vault.

Skapa nya variabelgrupper

  1. Välj Pipelines Library+ Variable group (Pipelines>Library>+ Variable group).

    Screenshot of Add variable group button highlighted with red box.

  2. Ange ett namn och en beskrivning för gruppen.

  3. Valfritt: Flytta växlingsknappen för att länka hemligheter från ett Azure-nyckelvalv som variabler. Mer information finns i Använda Azure Key Vault-hemligheter.

  4. Ange namnet och värdet för varje variabel som ska inkluderas i gruppen och välj + Lägg till för var och en.

  5. Om du vill skydda variabeln väljer du "lås"-ikonen i slutet av raden.

  6. När du är klar med att lägga till variabler väljer du Spara.

    Screenshot of saving a variable group.

Variabelgrupper följer bibliotekssäkerhetsmodellen.

Länka ett befintligt Azure-nyckelvalv till en variabelgrupp och mappa selektiva valvhemligheter till variabelgruppen.

  1. På sidan Variabelgrupper aktiverar du Länkhemligheter från ett Azure-nyckelvalv som variabler. Du behöver ett befintligt nyckelvalv som innehåller dina hemligheter. Skapa ett nyckelvalv med hjälp av Azure-portalen.

    Screenshot of variable group with Azure key vault integration.

  2. Ange slutpunkten för din Azure-prenumeration och namnet på valvet som innehåller dina hemligheter.

    Kontrollera att Azure-tjänstanslutningen har minst behörighet att hämta och lista hantering i valvet för hemligheter. Aktivera Azure Pipelines för att ange dessa behörigheter genom att välja Auktorisera bredvid valvnamnet. Eller ange behörigheterna manuellt i Azure-portalen:

    1. Öppna Inställningar för valvet och välj sedan Åtkomstprinciper>Lägg till ny.
    2. Välj Välj huvudnamn och välj sedan tjänstens huvudnamn för ditt klientkonto.
    3. Välj Hemliga behörigheter och se till att Hämta och Lista har bockmarkeringar.
    4. Spara ändringarna genom att välja OK .
  3. På sidan Variabelgrupper väljer du + Lägg till för att välja specifika hemligheter från valvet för mappning till den här variabelgruppen.

Hantera key vault-hemligheter

Se följande lista med användbara tips för att hantera hemligheter.

  • Endast de hemliga namnen mappas till variabelgruppen, inte de hemliga värdena. Det senaste hemliga värdet, som hämtats från valvet, används i pipelinekörningen som är länkad till variabelgruppen.

  • Alla ändringar som görs i befintliga hemligheter i nyckelvalvet är automatiskt tillgängliga för alla pipelines som variabelgruppen används i.

  • När nya hemligheter läggs till eller tas bort från valvet uppdateras inte de associerade variabelgrupperna automatiskt. Hemligheterna som ingår i variabelgruppen måste uppdateras explicit så att pipelines som använder variabelgruppen körs korrekt.

  • Azure Key Vault stöder lagring och hantering av kryptografiska nycklar och hemligheter i Azure. För närvarande stöder Azure Pipelines-variabelgruppintegrering endast mappning av hemligheter från Azure-nyckelvalvet. Kryptografiska nycklar och certifikat stöds inte.

Använda Azure Key Vault-uppgiften

Du kan använda Azure Key Vault-uppgiften för att inkludera hemligheter i din pipeline. Med den här uppgiften kan pipelinen ansluta till ditt Azure Key Vault och hämta hemligheter som ska användas som pipelinevariabler.

  1. I pipelineredigeraren väljer du Visa assistent för att expandera assistentpanelen.

  2. Sök vault efter och välj Azure Key Vault-aktiviteten.

    Add the Azure Key Vault task.

Alternativet Gör hemligheter tillgängliga för hela jobbet stöds för närvarande inte i Azure DevOps Server 2019 och 2020.

Mer information om Azure Key Vault-uppgiften finns i Använda Azure Key Vault-hemligheter i Azure Pipelines.

Ange en hemlig variabel i ett skript med loggningskommandon

Du kan använda loggningskommandot task.setvariable för att ange variabler i PowerShell- och Bash-skript. Det här är det minst säkra sättet att arbeta med hemliga variabler, men kan vara användbart för felsökning. De rekommenderade sätten att ange hemliga variabler finns i användargränssnittet, i en variabelgrupp och i en variabelgrupp från Azure Key Vault.

Om du vill ange en variabel som ett skript med ett loggningskommando måste du skicka issecret flaggan.

När issecret är inställt på true sparas värdet för variabeln som hemlighet och maskeras från loggar.

Kommentar

Azure Pipelines gör ett försök att maskera hemligheter när data skickas till pipelineloggar, så du kan se ytterligare variabler och data maskerade i utdata och loggar som inte har angetts som hemligheter.

Ange den hemliga variabeln mySecretVal.

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

Hämta den hemliga variabeln mySecretVal.

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

Hemliga variabelutdata i bash.

Screenshot of bash variable output.

Läs mer om hur du ställer in och använder variabler i skript.