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:
- Gå till sidan Pipelines , välj lämplig pipeline och välj sedan Redigera.
- Leta upp variablerna för den här pipelinen.
- Lägg till eller uppdatera variabeln.
- Välj alternativet för att behålla den här värdehemligheten för att lagra variabeln på ett krypterat sätt.
- 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
Välj Pipelines Library+ Variable group (Pipelines>Library>+ Variable group).
Ange ett namn och en beskrivning för gruppen.
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.
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.
Om du vill skydda variabeln väljer du "lås"-ikonen i slutet av raden.
När du är klar med att lägga till variabler väljer du Spara.
Variabelgrupper följer bibliotekssäkerhetsmodellen.
Länka hemligheter från ett Azure-nyckelvalv
Du kan skapa en variabelgrupp som länkar till ett befintligt Azure-nyckelvalv och mappa valda Key Vault-hemligheter till variabelgruppen. Endast de hemliga namnen mappas till variabelgruppen, inte de hemliga värdena. Pipelinen kör den länken till variabelgruppen och hämtar de senaste hemliga värdena från valvet.
Alla ändringar som görs i befintliga hemligheter i nyckelvalvet är automatiskt tillgängliga för alla pipelines som använder variabelgruppen. Men om hemligheter läggs till eller tas bort från valvet uppdateras inte de associerade variabelgrupperna automatiskt. Du måste uttryckligen uppdatera hemligheterna så att de inkluderas i variabelgruppen.
Även om Key Vault stöder lagring och hantering av kryptografiska nycklar och certifikat i Azure, stöder Azure Pipelines-variabelgruppintegrering endast mappning av nyckelvalvshemligheter. Kryptografiska nycklar och certifikat stöds inte.
Kommentar
Nyckelvalv som använder rollbaserad åtkomstkontroll i Azure (Azure RBAC) stöds inte.
Förutsättningar
- Ett Azure-nyckelvalv som innehåller dina hemligheter. Du kan skapa ett nyckelvalv med hjälp av Azure-portalen.
- En Azure-tjänstanslutning för projektet.
Skapa variabelgruppen
- I ditt Azure DevOps-projekt väljer du Gruppen PipelinesBibliotek>>+ Variabel.
- På sidan Variabelgrupper anger du ett namn och en valfri beskrivning för variabelgruppen.
- Aktivera Länkhemligheter från ett Azure-nyckelvalv som variabler.
- Välj namnet på din Azure-prenumerationsslutpunkt och nyckelvalv.
- Aktivera Azure DevOps för att komma åt nyckelvalvet genom att välja Auktorisera bredvid valvnamnet.
- På skärmen Välj hemligheter väljer du specifika hemligheter från valvet för mappning till den här variabelgruppen och väljer sedan OK.
- Välj Spara för att spara den hemliga variabelgruppen.
Kommentar
Din Azure-tjänstanslutning måste ha minst Behörigheter för Hämta och Lista för nyckelvalvet, som du kan auktorisera i föregående steg. Du kan också ange dessa behörigheter från Azure-portalen genom att följa dessa steg:
- Öppna Inställningar för nyckelvalvet och välj sedan Åtkomstkonfiguration>Gå till åtkomstprinciper.
- På sidan Åtkomstprinciper väljer du Skapa om ditt Azure Pipelines-projekt inte visas under Program med behörigheter som minst Hämta och Lista.
- Under Hemliga behörigheter väljer du Hämta och Lista och väljer sedan Nästa.
- Välj tjänstens huvudnamn och välj sedan Nästa.
- Välj Nästa igen, granska inställningarna och välj sedan Skapa.
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.
I pipelineredigeraren väljer du Visa assistent för att expandera assistentpanelen.
Sök
vault
efter och välj Azure Key Vault-aktiviteten.
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.
Läs mer om hur du ställer in och använder variabler i skript.