Dela via


Hemligheter i Azure Pipelines

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Den här artikeln innehåller metodtips för att skydda hemligheter i Azure Pipelines. En hemlighet är allt som du vill kontrollera åtkomsten till, till exempel API-nycklar, lösenord, certifikat eller kryptografiska nycklar. Azure Pipelines genererar inte hemliga värden, men du kan behöva lägga till hemligheter i pipelines för att lagra känsliga data som API-nycklar.

Den här artikeln är en del av en serie som hjälper dig att implementera säkerhetsåtgärder för Azure Pipelines. Mer information finns i Skydda Azure Pipelines.

Förutsättningar

Kategori Krav
Azure DevOps – Implementera rekommendationerna i Gör dina Azure DevOps säkra och Gör dina Azure Pipelines säkra.
– Grundläggande kunskaper om YAML och Azure Pipelines. Mer information finns i Skapa din första pipeline.
behörigheter – Ändra pipelinebehörigheter: Medlem i gruppen Projektadministratörer.
– Ändra organisationsbehörigheter: Medlem i gruppen Projektsamlingsadministratörer.

Använda en annan metod

Hemligheter medför inneboende säkerhetsrisker, så det är bäst att inte använda dem alls. I stället för att hantera hemligheter i variabler eller exponera dem i pipelinekonfigurationen kan du se om pipelinen kan använda någon av dessa andra metoder för att utföra en uppgift.

Mer information finns i Använda tjänstens huvudnamn och hanterade identiteter.

Använda hemliga variabler

Lagra aldrig känsliga värden som oformaterad text i en azure-pipelines.yml fil. Du kan använda hemliga variabler för privat information som lösenord, ID:t och andra identifierande data som du inte vill ska exponeras. Hemliga variabler krypteras, så du kan använda dem i pipelines utan att exponera deras värden.

  • Det är bäst att hantera hemliga variabler på ett säkert sätt i Azure Key Vault. Du kan också ange hemliga variabler i pipelinedefinitionsgränssnittet eller i en variabelgrupp.
  • Använd inte ett loggningskommando för att ange en hemlig variabel, eftersom alla som har åtkomst till din pipeline också kan se hemligheten.
  • Upprepa aldrig hemligheter som utdata och skicka inte hemligheter på kommandoraden. I stället är det bäst att mappa dina hemligheter till miljövariabler.
  • När du skapar en hemlighet följer du riktlinjerna för variabel namngivning och ser till att ditt hemliga namn inte avslöjar känslig information.

Mer information om hur du anger hemligheter i variabler finns i Ange hemliga variabler.

Begränsa åtkomsten till hemliga variabler

Om du vill begränsa åtkomsten till hemligheter i Azure DevOps följer du någon av följande metoder:

  • Lagra dina hemligheter i Azure Key Vault. Genom att använda Azure Key Vault kan du använda rollbaserad åtkomstkontroll i Azure för att begränsa åtkomsten till en hemlighet eller grupp med hemligheter.
  • Ange hemliga variabler i pipelinegränssnittet. De här variablerna är begränsade till pipelinen där de anges, så de är endast synliga för användare av den pipelinen.
  • Ange hemligheter i variabelgrupper. Variabelgrupper följer bibliotekssäkerhetsmodellen så att du kan styra vem som kan komma åt eller skapa objekt.

Skriv inte hemligheter till loggar

Azure Pipelines försöker rensa hemligheter från loggar där det är möjligt, men är inte felfritt. Undvik att upprepa hemligheter för konsolen, använda dem i kommandoradsparametrar eller logga dem till filer.

Var försiktig när du använder Azure CLI-kommandon som matar ut känslig information. Använd utdataformatet Ingen och om du behöver hämta en hemlighet från ett Azure CLI-anrop hämtar du säkerhetsinformation från en hemlig variabel.

Använd inte strukturerade data som hemligheter

Undvik att använda strukturerade dataformat som JSON, XML eller YAML för att kapsla in hemliga värden, inklusive kontrolltecken som vagnretur \r och radmatning \n. Skapa i stället enskilda hemligheter för varje känsligt värde. Den här metoden säkerställer bättre redigeringsnoggrannhet och minimerar risken för att oavsiktligt exponera känsliga data.

Granskning av hemlig användning

Följ dessa metodtips för att granska hur dina pipelines använder hemligheter:

  • Granska källkoden för lagringsplatsen som är värd för pipelinen. För att säkerställa att hemligheter hanteras korrekt, kontrollera alla uppgifterna som pipelinen använder. Kontrollera att hemligheter inte oavsiktligt skickas till oavsiktliga värdar eller uttryckligen skrivs ut i loggutdata.

  • När du har testat giltiga och ogiltiga indata kan du visa körningsloggarna för din pipeline. Kontrollera att hemligheter redigeras korrekt och inte exponeras. Ibland kan fel i kommandon eller verktyg oavsiktligt läcka hemligheter i felloggar. Även om Azure Pipelines försöker rensa hemligheter från loggar är manuell granskning fortfarande viktigt.

Granska och rotera hemligheter

Följ dessa metodtips för att granska och rotera hemligheter:

  • Granska regelbundet hemligheter som är registrerade i dina pipelines. Bekräfta att de fortfarande är nödvändiga och ta bort alla som inte längre behövs. Den här metoden hjälper till att minska oredan och potentiella säkerhetsrisker.
  • Säkerställa korrekt konfiguration och säker hantering av tjänstanslutningshemligheter.
  • Håll varaktigheten för personlig åtkomsttoken (PAT) kort och välj de minsta behörigheter som krävs.
  • Rotera regelbundet hemligheter för att minimera den tid som en komprometterad hemlighet kan utnyttjas. Att ändra hemligheter ökar säkerheten med jämna mellanrum.

Använda YAML-mallar

Använd mallar i stället för att inkludera infogade skript med hemliga parametrar direkt i din pipeline YAML. Den här metoden förbättrar säkerheten genom att avlägsna känslig information från huvudpipelinen.

Om du vill implementera den här metoden skapar du en separat YAML-fil för skriptet och lagrar skriptet på en separat, säker lagringsplats. Du kan sedan referera till mallen och skicka en hemlig variabel från Azure Key Vault, en variabelgrupp eller pipelinegränssnittet i YAML som en parameter. Mer information om hur du använder mallar finns i mallanvändningsreferensen.

Begränsa hemligheter med grenprinciper och behörigheter för variabelgrupper

För att säkerställa att hemligheter endast är tillgängliga för en viss lagringsplatsgren kan du använda en kombination av grenprinciper, behörigheter för variabelgrupper och infogning av villkorsstyrda jobb.

Framtvinga byggvalideringsprinciper som endast tillåter byggen från en viss gren. Använd sedan behörigheter för variabelgrupper för att säkerställa att endast auktoriserade pipelines kan komma åt hemligheterna som lagras i din variabelgrupp. Slutligen, använd ett villkor i din pipeline för att säkerställa att endast en push till den avsedda grenen kan referera till variabelgruppen.

jobs:
- job: ExampleJob
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - script: echo "This runs only for the main branch"
    displayName: 'Conditional Step'
  variables:
  - group: your-variable-group-name