Skydd av lagringsplats

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

Källkod, pipelinens YAML-fil och nödvändiga skript och verktyg lagras alla i en lagringsplats för versionskontroll. Behörigheter och grenprinciper måste användas för att säkerställa att ändringar i koden och pipelinen är säkra. Du kan också lägga till pipelinebehörigheter och kontroller till lagringsplatser.

Du bör också granska standardåtkomstkontrollen för lagringsplatser.

På grund av Gits design kommer skyddet på grennivå bara att medföra dig hittills. Användare med push-åtkomst till en lagringsplats kan vanligtvis skapa nya grenar. Om du använder GitHub-projekt med öppen källkod kan alla med ett GitHub-konto förgrena din lagringsplats och föreslå bidrag tillbaka. Eftersom pipelines är associerade med en lagringsplats och inte med specifika grenar måste du anta att koden och YAML-filerna inte är betrodda.

Gafflar

Om du skapar offentliga lagringsplatser från GitHub måste du överväga din inställning till förgreningsversioner. Gafflarna är särskilt farliga eftersom de kommer utanför organisationen. Tänk på följande rekommendationer för att skydda dina produkter från kod som har bidragit.

Kommentar

Följande rekommendationer gäller främst för att skapa offentliga lagringsplatser från GitHub.

Ange inte hemligheter för förgreningsversioner

Som standard är dina pipelines konfigurerade för att skapa förgreningar, men hemligheter och skyddade resurser görs inte tillgängliga för jobben i dessa pipelines som standard. Inaktivera inte det senare skyddet.

Screenshot of fork build protection UI.

Kommentar

När du aktiverar förgreningsversioner för åtkomst till hemligheter begränsar Azure Pipelines som standard den åtkomsttoken som används för förgreningsversioner. Den har mer begränsad åtkomst till öppna resurser än en vanlig åtkomsttoken. Om du vill ge förgreningsversioner samma behörigheter som vanliga versioner aktiverar du inställningen Skapa förgreningsversioner med samma behörigheter som vanliga versioner .

Screenshot of fork build protection UI in Azure DevOps Server 2020 and lower.

Kommentar

Även om du aktiverar förgreningsversioner för åtkomst till hemligheter begränsar Azure Pipelines den åtkomsttoken som används för förgreningsversioner. Den har mer begränsad åtkomst till öppna resurser än en vanlig åtkomsttoken. Du kan inte inaktivera det här skyddet.

Överväg att utlösa förgreningsversioner manuellt

Du kan inaktivera automatiska förgreningsversioner och i stället använda pull-begärandekommenter som ett sätt att skapa dessa bidrag manuellt. Den här inställningen ger dig möjlighet att granska koden innan du utlöser en version.

Använda Microsoft-värdbaserade agenter för förgreningsversioner

Kör inte versioner från gafflar på lokalt installerade agenter. På så sätt tillhandahåller du effektivt en sökväg till externa organisationer för att köra extern kod på datorer i företagets nätverk. Använd Microsoft-värdbaserade agenter när det är möjligt. För din lokala agent använder du någon form av nätverksisolering och ser till att agenterna inte bevarar sitt tillstånd mellan jobb.

Granska kodändringar

Innan du kör pipelinen på en förgrenad pull-begäran bör du noggrant granska de föreslagna ändringarna och se till att du är bekväm med att köra den.

Den version av YAML-pipelinen som du kör är den från pull-begäran. Var därför särskilt uppmärksam på ändringar i YAML-koden och den kod som körs när pipelinen körs, till exempel kommandoradsskript eller enhetstester.

Begränsning av GitHub-tokenomfång

När du skapar en GitHub-förgrenad pull-begäran ser Azure Pipelines till att pipelinen inte kan ändra något GitHub-lagringsplatsinnehåll. Den här begränsningen gäller endast om du använder GitHub-appen Azure Pipelines för att integrera med GitHub. Om du använder andra former av GitHub-integrering, till exempel OAuth-appen, tillämpas inte begränsningen.

Användargrenar

Användare i din organisation med rätt behörigheter kan skapa nya grenar som innehåller ny eller uppdaterad kod. Koden kan köras via samma pipeline som dina skyddade grenar. Om YAML-filen i den nya grenen ändras används dessutom den uppdaterade YAML:n för att köra pipelinen. Även om den här designen ger stor flexibilitet och självbetjäning är inte alla ändringar säkra (oavsett om de görs skadligt eller inte).

Om din pipeline använder källkod eller definieras i Azure Repos måste du helt förstå behörighetsmodellen för Azure Repos. I synnerhet kan en användare med behörigheten Skapa gren på lagringsplatsnivå introducera kod till lagringsplatsen även om användaren saknar Behörighet att bidra .

Nästa steg

Läs sedan mer om det mer skydd som erbjuds av kontroller av skyddade resurser.