Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Skydda Azure-lagringsplatser genom att kombinera åtkomstkontroll, principer för pull requests och statuskontroller för dina viktigaste grenar. Den här artikeln visar hur du begränsar direkta ändringar, kräver rätt granskare, framtvingar arbetsobjekt och byggkrav och lägger till GitHub Advanced Security-kontroller innan pull-begäranden slås samman.
Tip
Du kan använda AI för att hjälpa till med den här uppgiften senare i den här artikeln, eller se Aktivera AI-hjälp med Azure DevOps MCP Server för att komma igång.
Hot och kontroller
Använd följande kontroller tillsammans för att minska de vanligaste riskerna med pull-begäranden.
| Hot | Risk | Rekommenderad kontroll |
|---|---|---|
| Direkt push-överföring till skyddade grenar | Ändringar kringgår granskning och validering | Grenbehörigheter plus grenprinciper |
| Godkännande av en person | Granskningskvaliteten beror på en person | Kräv ett minsta antal granskare |
| Expertgranskning saknas för känsliga filer | Säkerhetskritiska ändringar slås samman utan rätt granskare | Automatiskt inkluderade granskare |
| Kodändringar som inte spårats | Minskad granskningsbarhet och ändringsspårning | Sök efter länkade arbetsobjekt |
| Trasig eller otestad kod | Regressioner når delade grenar | Buildvalidering |
| Olöst granskningsfeedback | Kända problem slås samman utan svar | Kontrollera om kommentarer har lösts |
| Nya höga eller kritiska sårbarheter | Säkerhetsregressioner sammanfogas via pull-begäranden | GitHub Statuskontroller för avancerad säkerhet |
Prerequisites
| Category | Krav |
|---|---|
| Åtkomst till projekt | Medlem i ett projekt. |
| Permissions | – Visa kod i privata projekt: Minst Grundläggande åtkomst. – Klona eller bidra till kod i privata projekt: Medlem i säkerhetsgruppen Deltagare eller motsvarande behörigheter i projektet. – Ange behörigheter för gren eller lagringsplats: Hantera behörigheter för grenen eller lagringsplatsen. – Ange grenprinciper, statuskontroller eller ändra standardgrenen: Redigera principbehörighet för lagringsplatsen eller grenen eller medlemskap i säkerhetsgruppen Project Administratörer. – Importera en lagringsplats: Medlem i säkerhetsgruppen Projektadministratörer eller Behörigheten Skapa lagringsplats på Git-projektnivå har angetts till Tillåt. Mer information finns i Ange Behörigheter för Git-lagringsplats. |
| Services | Repos är aktiverade. |
| Tools | Optional. Använd az repos kommandon: Azure DevOps CLI. |
| Category | Krav |
|---|---|
| Åtkomst till projekt | Medlem i ett projekt. |
| Permissions | – Visa kod: Minst Grundläggande åtkomst. – Klona eller bidra till kod: Medlem i säkerhetsgruppen för Bidragsgivare eller motsvarande behörigheter i projektet. |
| Services | Repos är aktiverade. |
Innan du konfigurerar någon grenprincip:
- Kontrollera att mållagringsplatsen och -grenen redan finns.
- Bestäm vilka grupper som kan hantera behörigheter, kringgå principer och godkänna pull-begäranden.
- Om du planerar att kräva buildvalidering eller statuskontroller för GitHub Advanced Security ska du först skapa byggpipelinen.
Säkerhetsbaslinje för de flesta team
För en typisk produktionsgren, till exempel main, börjar du med den här baslinjen:
| Kontrollområde | Rekommenderad baslinje | Varför |
|---|---|---|
| Åtkomst till lagringsplats | Begränsa skrivåtkomsten till deltagare som aktivt arbetar på lagringsplatsen | Minskar antalet identiteter som kan ändra inställningarna för källkod eller lagringsplats. |
| Behörigheter för grenar | Begränsa kringgå principer när du slutför pull-begäranden och Kringgå principer vid push-överföring till en liten administratörsgrupp | Hindrar användare från att hoppa över nödvändiga granskningar, validering och andra grenskydd. |
| Granskningsprincip | Kräv minst två granskare för main |
Förbättrar granskningskvaliteten och minskar risken för ett enskilt felaktigt eller partiskt godkännande. |
| Känsliga filer | Inkludera automatiskt granskare för säkerhets-, infrastruktur- eller efterlevnadskänsliga sökvägar | Säkerställer att ändringar i högriskområden granskas av rätt personer eller team. |
| Spårbarhet | Aktivera Sök efter länkade arbetsobjekt | Bevarar en spårningslogg mellan kodändringar och det arbete som motiverade dem. |
| Validation | Lägg till versionsverifiering för PR-grenen | Fångar upp bygg- och testfel innan koden slås samman till en skyddad gren. |
| Slutförande av granskning | Aktivera Kontrollera om kommentarer är lösta | Hjälper till att se till att granskarnas problem åtgärdas innan de slutförs. |
| Sårbarhetsportar | Lägg till AdvancedSecurity/NewHighAndCritical när avancerad säkerhetsgenomsökning har konfigurerats |
Blockerar pull-begäranden som introducerar nya höga eller kritiska säkerhetsresultat. |
Steg 1: Begränsa lagringsplats och grenåtkomst
Börja med behörigheter. Policyer är mest effektiva när endast ett mindre antal användare kan kringgå dem.
Granska lagringsplatsens behörigheter
Använd lagringsplatsens behörigheter för att styra vem som kan läsa, bidra, administrera inställningar eller bidra till pull-begäranden. Detaljerad behörighetsreferens finns i Ange Behörigheter för Git-lagringsplats.
Använd följande mönster:
- Ge deltagare de behörigheter de behöver för att arbeta i funktionsgrenar.
- Reservera lagringsplatsadministration för en liten administratörsgrupp.
- Undvik breda beviljanden av behörigheter som kringgås av principer.
Begränsa grenbehörigheter
Granska och begränsa dessa behörigheter noggrant för skyddade grenar:
- Kringgå principer när du slutför pull-begäranden
- Kringgå principer vid push-överföring
- Framtvinga push-överföring (skriva om historik, ta bort grenar och taggar)
- Redigera principer
- Hantera behörigheter
Använd Ange grenbehörigheter för att konfigurera de här inställningarna.
Rekommenderat mönster för main:
| Grupp | Rekommenderade behörigheter för grenar |
|---|---|
| Contributors | Tillåt regelbundna bidrag via pull-begäranden, men bevilja inte förbikopplingsbehörigheter |
| Projektadministratörer | Tillåt redigeringsprinciper och Hantera behörigheter |
| Ansvariga för nödutlösning | Bevilja endast förbikopplingsbehörigheter om din incidentprocess kräver dem |
Important
Begränsa Kringgå principer vid slutförande av pull-begäranden och Kringgå principer vid pushning till ett litet antal betrodda administratörer. Dessa behörigheter besegrar de skydd som skapats av nödvändiga granskare, validering och statuskontroller.
Steg 2: Kräv strikt granskning av pull requests
Kräv ett minsta antal granskare
Använd Kräv ett minsta antal granskare för viktiga grenar som main och versionsgrenar.
Rekommenderade inställningar:
- Minsta antal granskare:
2för delade grenar av högt värde - Kräv minst ett godkännande för den senaste iterationen
-
Tillåt att de som begär godkänner sina egna ändringar:
Off -
Förhindra att den som senast pushade godkänner sina egna ändringar:
Onnär du vill ha en tydligare åtskillnad av ansvar
Konfigurera principen för minsta antal granskare
- Gå till Project inställningar>Lagringsplatser.
- Välj lagringsplatsen och välj sedan den skyddade grenen.
- Under Principer aktiverar du Kräv ett minsta antal granskare.
- Ange granskaralternativen för grenen.
Kontrollera resultatet:
- Listan över grenpolicyer visar att principen för granskare är aktiverad.
- Pull-begäranden till grenen kan inte slutföras förrän det nödvändiga antalet godkännanden finns.
Information om principer finns i Avdelningsprinciper och inställningar.
Inkludera automatiskt granskare för känsliga filer
Använd Automatiskt inkluderade granskare när vissa filer eller mappar kräver godkännande från en viss person eller ett visst team.
Exempel på bra kandidater är:
- distributions- och infrastrukturkod
- autentiserings- och auktoriseringskod
- efterlevnadskänsliga mappar
- mallar för delade pipelines
Konfigurera principen för automatiskt inkluderade granskare
- Gå till Project inställningar>Lagringsplatser.
- Öppna målgrenen under Grenprinciper.
- Lägg till en princip för automatiskt inkluderade granskare .
- Lägg till de personer eller grupper som krävs.
- Välj om principen är Obligatorisk eller Valfri.
- Lägg till sökvägsfilter för de filer eller mappar som kräver deras granskning.
- Tillåt inte att beställare godkänner sina egna ändringar.
Kontrollera resultatet:
- En pull-begäran som ändrar matchande filer lägger automatiskt till de konfigurerade granskarna.
- Pull requesten kan inte slutföras förrän principen om obligatorisk granskare är uppfylld.
Mer information finns i Inkludera kodgranskare automatiskt.
Steg 3: Framtvinga spårning och validering
Sök efter länkade arbetsobjekt
Aktivera Sök efter länkade arbetsobjekt när ditt team behöver ändra spårningsbarheten mellan pull-begäranden och arbetsspårning.
Konfigurera principen för länkade arbetsobjekt
- Gå till Project inställningar>Lagringsplatser.
- Öppna målgrenen under Grenprinciper.
- Aktivera Sök efter länkade arbetsobjekt.
- Välj Obligatoriskt om pull-begäranden måste ha länkade arbetsobjekt innan de slutförs.
Kontrollera resultatet: Pullbegäranden utan länkade arbetsobjekt visar att policyn inte är uppfylld.
Mer information finns i Söka efter länkade arbetsobjekt.
Byggverifiering
Använd Build-validering för att kräva en lyckad pipelinekörning för pull-begäranden före sammanslagning.
Important
Innan du konfigurerar byggverifiering skapar du bygg-pipelinen som ska verifiera pull-begäran.
Rekommenderade inställningar för skyddade grenar:
- Utlösare: Automatisk
-
Principkrav:
Required - Versionsförfallodatum: Välj ett värde som matchar hur ofta den skyddade grenen ändras
Konfigurera principen för byggverifiering
- Öppna målgrenen under Grenprinciper.
- Lägg till en build-valideringsprincip .
- Välj byggpipeline.
- Välj om principen ska vara obligatorisk.
- Spara principen.
Kontrollera resultatet:
- När du öppnar eller uppdaterar en pullbegäran placeras det konfigurerade valideringsbygget i kö.
- Pull-begäran kan inte slutföras förrän den nödvändiga versionen har slutförts.
Mer information finns i Skapa validering.
Kontrollera kommentarers lösning
Använd Kontrollera kommentarers lösningsstatus för att säkerställa att granskningstrådar är lösta innan pull requesten slutförs.
Konfigurera policyn för att lösa kommentarer
- Öppna målgrenen under Grenprinciper.
- Aktivera Kontrollera om kommentarer har lösts.
- Välj Obligatoriskt om olösta kommentarer ska blockera slutförande.
Kontrollera resultatet: Pull-begäranden med olösta kommentarer förblir blockerade tills granskare eller författare löser trådarna.
Mer information finns i Kontrollera om kommentarer är lösta.
Begränsa sammanslagningstyper
Använd Begränsa sammanslagningstyper som en inställning för lagringsplatshistorikstyrning. Den här policyn hjälper till att standardisera hur commitar i pull requests ser ut efter sammanslagning, men den är inte en direkt säkerhetskontroll.
Välj en sammanslagningsstrategi utifrån hur ditt team granskar, spårar och reviderar historiken.
Exempel på användning:
- Kräv squash-mergningar för kortvarig funktionsutveckling.
- Tillåt inte ombasering eller squash på grenar där granskningsprocessen förväntar sig sammanslagningar.
Gransknings- och spårningsöverväganden:
- Squash skapar en renare historik för målgrenen, men slår ihop flera källcommitar till en enda commit när grenarna slås samman.
- Om granskningsmodellen är beroende av att bevara den exakta incheckningssekvensen från en funktionsgren föredrar du strategier för sammanslagning framför squash.
- Se till att policyn är konsekvent med hur utvecklare granskar och felsöker historik i pull requests och i målgrenen.
Azure DevOps CLI-exempel:
az repos policy merge-strategy create \
--blocking true \
--branch main \
--enabled true \
--repository-id <repository-id> \
--allow-no-fast-forward true \
--allow-rebase false \
--allow-rebase-merge false \
--allow-squash false
Mer information finns i Begränsa sammanslagningstyper.
Steg 4: Lägg till GitHub statuskontroller för avancerad säkerhet
GitHub Statuskontroller för avancerad säkerhet hjälper till att förhindra att pull-begäranden slås samman när nya kritiska eller allvarliga säkerhetsrisker introduceras.
Important
GitHub Advanced Security för Azure DevOps är endast tillgängligt för Azure DevOps Services och endast för git-lagringsplatser med kod.
Innan du lägger till statuskontrollprincipen:
- Aktivera GitHub Avancerad säkerhet på lagringsplatsen.
- Konfigurera de obligatoriska pipeline-aktiviteterna för funktionen Avancerad säkerhet.
- Lägg till en build-valideringsprincip för pull-begärandegrenen.
- Aktivera
Wait for Processing: trueför de dokumenterade uppgifterna i Advanced Security. - Kör pipelinen minst en gång så att statuskontrollen visas i listan Status att kontrollera .
Börja med AdvancedSecurity/NewHighAndCritical om lagringsplatsen redan har olösta aviseringar. När du har minskat backloggen, överväg att gå över till AdvancedSecurity/AllHighAndCritical.
Webbläsarsökväg:
- Öppna målgrenen under Grenprinciper.
- Under Statuskontroller väljer du +.
- Ange Status för att kontrollera till
AdvancedSecurity/NewHighAndCritical. - Låt Avancerade alternativ ha standardvärdena.
- Spara principen.
Statuskontroller för avancerad säkerhet konfigureras från Statuskontroller i webbläsaren när du har aktiverat avancerad säkerhetsgenomsökning och byggvalidering för lagringsplatsen. Den nödvändiga konfigurationen finns i Konfigurera statuskontroller för pull-begäranden.
Kontrollera resultatet:
- Pull-begäranden med nya höga eller kritiska resultat visar statuskontrollen som misslyckad.
- Grenprincipen blockerar slutförandet tills resultaten har lösts eller principen har gjorts valfri.
Information om konfiguration finns i:
Exempel på distributionsplaner
Baslinje för lagringsplats med lägre känslighet
Om lagringsplatsen har lägre känslighet och du vill ha en hanterbar startpunkt:
- Begränsa behörigheter för förbikoppling av gren på
main. - Kräv minst en eller två granskare.
- Aktivera länkade arbetsobjekt.
- Lägg till byggverifiering.
- Aktivera lösning av kommentarer.
Lagringsplats med hög känslighet
Om lagringsplatsen innehåller distributions-, identitets- eller efterlevnadskritiska tillgångar:
- Begränsa behörigheter att kringgå policyer till administratörer.
- Kräv två granskare på
main. - Lägg till automatiskt inkluderade granskare för skyddade sökvägar.
- Kräv länkade arbetsobjekt.
- Lägg till byggverifiering.
- Lägg till GitHub statuskontroller för avancerad säkerhet om du använder Azure DevOps Services.
Valfritt: Använd AI-assistans för att granska konfigurationen av grenprinciper
AI-hjälp är valfritt. Dina grenbehörigheter, principer och statuskontroller tillämpar lagringsplatsskydd oavsett om du använder AI eller inte.
Du kan använda dessa uppmaningar för att granska principkonfigurationen, identifiera luckor och få baslinjerekommendationer snabbare. Om du konfigurerar Azure DevOps MCP Server kan assistenten använda din Azure DevOps kontext för att förbättra svaren. Information om hur du konfigurerar finns i Aktivera AI-hjälp med Azure DevOps MCP Server.
Använd frågor som följande för att komma igång:
| Mål | Exempelprompt |
|---|---|
| Granska grenskydd | Summarize the branch policies on main and explain which ones are required. |
| Identifiera risk för förbikoppling | Find users or groups that can bypass branch policies on the main branch. |
| Kontrollera granskningstäckning | List the reviewer and comment-resolution policies configured for this repository. |
| Verifiera arbetsspårning | Check whether pull requests into main require linked work items. |
| Kontrollera valideringsgrindar | Show the build validation policy for main and explain what pipeline it uses. |
| Undersöka säkerhetsstatuskontroller | List the status checks configured for main and tell me whether GitHub Advanced Security is one of them. |
| Planera en säkrare baslinje | Recommend a secure branch policy baseline for this repository based on its current settings. |
Verifiera alltid genererade kommandon och rekommendationer mot lagringsplatsens behörigheter, greninställningar och den aktuella Azure DevOps dokumentationen innan du tillämpar dem.
Felsökningstips
| Problem | Sannolik orsak | Rekommenderad åtgärd |
|---|---|---|
| Ett alternativ för grenprincip visas inte | Du har inte behörighet att redigera principer eller så har grenen inte valts | Bekräfta åtkomst till grenar och policybehörigheter |
| Pull requester kan fortfarande sammanfogas utan att uppfylla policyn | En användare har behörighet att kringgå | Granska Kringgå principer när du slutför pull-begäranden och Kringgå principer vid push-överföring |
| Nödvändiga granskare läggs inte till | Sökvägsfiltret för granskaren matchar inte de ändrade filerna | Kontrollera sökvägsfiltren och granskningsidentiteterna igen |
| Statuskontrollen För avancerad säkerhet är inte tillgänglig | Lagringsplatsen har inte slutfört en lyckad genomsökningskörning med nödvändiga uppgifter | Verifiera byggverifiering, pipelineuppgifter och Wait for Processing inställningar |
| En policy för länkat arbetsobjekt blockerar inte | Principen är valfri i stället för obligatorisk | Öppna grenprincipen på nytt och bekräfta kravnivån |