Beveiligde opslagplaatsen en pull-aanvragen

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

Beveilig Azure-opslagplaatsen door toegangsbeheer, beleid voor pull-aanvragen en statuscontroles op uw belangrijkste vertakkingen te combineren. In dit artikel leest u hoe u directe wijzigingen beperkt, de juiste revisoren nodig hebt, werkitem- en buildvereisten afdwingt en GitHub Geavanceerde beveiligingscontroles toevoegt voordat pull-aanvragen worden samengevoegd.

Tip

U kunt AI gebruiken om bij deze taak te helpen verderop in dit artikel, of zie AI-assistentie inschakelen met Azure DevOps MCP Server om te beginnen.

Bedreigingen en maatregelen

Gebruik de volgende besturingselementen samen om de meest voorkomende risico's voor pull-aanvragen te verminderen.

Bedreiging Risico Aanbevolen controle
Rechtstreekse pushes naar beveiligde branches Wijzigingen omzeilen beoordeling en validatie Vertakkingsmachtigingen plus vertakkingsbeleid
Goedkeuring van één persoon Beoordelingskwaliteit is afhankelijk van één persoon Vereis een minimum aantal beoordelaars
Geen beoordeling door een expert van gevoelige bestanden Beveiligingskritieke wijzigingen worden samengevoegd zonder de juiste revisoren Automatisch opgenomen revisoren
Niet-bijgehouden codewijzigingen Verminderde controlebaarheid en wijzigingstraceerbaarheid Controleren op gekoppelde werkitems
Kapotte of ongeteste code Regressies komen terecht in gedeelde branches Validatie van build
Niet-opgeloste beoordelingsfeedback Bekende problemen worden samengevoegd zonder antwoord Controleren op resolutie van opmerkingen
Nieuwe ernstige of kritieke kwetsbaarheden Beveiligingsregressies samenvoegen via pull-aanvragen GitHub Geavanceerde beveiligingsstatuscontroles

Prerequisites

Category Vereisten
Toegang tot het project Lid van een project.
Permissions - Code weergeven in privéprojecten: ten minste basistoegang .
- Kloon of bijdragen aan code in privéprojecten: lid van de beveiligingsgroep Inzenders of bijbehorende machtigingen in het project.
- Machtigingen voor branch of repository instellen: Machtigingen voor de branch of repository beheren.
- Stel vertakkingsbeleid, statuscontroles in of wijzig de standaardvertakking: Beleidsregelsmachtiging bewerken voor de opslagplaats of vertakking, of lidmaatschap van de beveiligingsgroep Project Administrators.
- Een opslagplaats importeren: Lid van de Projectbeheerders beveiligingsgroep of Git-projectniveau Opslagplaats maken machtiging ingesteld op Toestaan. Zie Machtigingen voor Git-opslagplaatsen instellen voor meer informatie.
Services Repositories ingeschakeld.
Tools Optional. Gebruik az repos opdrachten: Azure DevOps CLI.
Category Vereisten
Toegang tot het project Lid van een project.
Permissions - Code weergeven: ten minste basistoegang .
- Kloon of bijdragen aan code: Lid van de beveiligingsgroep Inzenders of bijbehorende machtigingen in het project.
Services Repositories ingeschakeld.

Voordat u een vertakkingsbeleid configureert:

  • Zorg ervoor dat de doelopslagplaats en vertakking al bestaan.
  • Bepaal welke groepen machtigingen kunnen beheren, beleidsregels kunnen omzeilen en pull-aanvragen kunnen goedkeuren.
  • Als u van plan bent buildvalidatie of statuscontroles voor GitHub Advanced Security te vereisen, maakt u eerst de buildpipeline.

Beveiligingsbasislijn voor de meeste teams

Voor een typische productievertakking, zoals main, begint u met deze basislijn:

Controlegebied Aanbevolen basislijn Waarom
Toegang tot repository Schrijftoegang beperken tot inzenders die actief in de opslagplaats werken Vermindert het aantal identiteiten dat broncode- of opslagplaatsinstellingen kan wijzigen.
Branchmachtigingen Beperk beleidsregels omzeilen bij het voltooien van pullaanvragen en beleidsregels omzeilen bij het pushen tot een kleine groep met beheerders Hiermee voorkomt u dat gebruikers vereiste beoordelingen, validatie en andere vertakkingsbeveiligingen overslaan.
Beoordelingsbeleid Vereis ten minste twee beoordelaars voor main Verbetert de kwaliteit van de beoordeling en vermindert het risico op een enkele onjuiste of bevooroordeelde goedkeuring.
Gevoelige bestanden Revisoren automatisch opnemen voor beveiligings-, infrastructuur- of nalevingsgevoelige paden Zorgt ervoor dat wijzigingen in gebieden met een hoog risico worden beoordeeld door de juiste personen of teams.
Traceerbaarheid Controleren op gekoppelde werkitems inschakelen Behoudt een auditspoor tussen codewijzigingen en het werk dat eraan ten grondslag lag.
Validation Build-validatie toevoegen voor de PR-branch Detecteert build- en testfouten voordat code wordt samengevoegd met een beveiligde branch.
Voltooiing controleren Schakel Controleren op opgeloste opmerkingen in Helpt ervoor te zorgen dat de zorgen van revisoren worden opgelost voordat ze klaar zijn.
Controlepunten voor kwetsbaarheden Voeg AdvancedSecurity/NewHighAndCritical toe nadat scannen met Geavanceerde beveiliging is ingesteld Hiermee blokkeert u pull-aanvragen waarmee nieuwe belangrijke beveiligingsresultaten worden geïntroduceerd.

Stap 1: Toegang tot opslagplaatsen en vertakkingen beperken

Begin met machtigingen. Beleidsregels zijn het meest effectief wanneer slechts een kleine groep gebruikers deze kan omzeilen.

Opslagplaatsmachtigingen controleren

Gebruik opslagplaatsmachtigingen om te bepalen wie instellingen kan lezen, bijdragen, beheren of bijdragen aan pull-aanvragen. Zie Git-opslagplaatsmachtigingen instellen voor gedetailleerde naslaginformatie over machtigingen.

Gebruik het volgende patroon:

  • Geef Bijdragers de machtigingen die ze nodig hebben om in featurebranches te werken.
  • Beheer van opslagplaatsen reserveren voor een kleine beheergroep.
  • Vermijd brede toekenningen van machtigingen voor het omzeilen van beleid.

Branchmachtigingen beperken

Voor beveiligde branches: controleer en beperk deze machtigingen zorgvuldig.

  • Beleid omzeilen bij het voltooien van pull requests
  • Beleidsregels negeren tijdens het pushen
  • Force push (geschiedenis herschrijven, branches en tags verwijderen)
  • Beleid bewerken
  • Machtigingen beheren

Gebruik Branchmachtigingen instellen om deze instellingen te configureren.

Aanbevolen patroon voor main:

Groep Aanbevolen vertakkingsmachtigingen
Contributors Reguliere bijdrage via pull-aanvragen toestaan, maar geen bypass-machtigingen verlenen
Projectbeheerders Toestaan: Beleid bewerken en Machtigingen beheren
Eigenaren van noodreleases Bypass-machtigingen alleen verlenen als voor uw incidentproces deze zijn vereist

Important

Bewaar bypass-beleid bij het voltooien van pull-aanvragen en bypass-beleid bij het pushen beperkt tot een kleine set vertrouwde beheerders. Deze machtigingen verslaan de beveiligingen die zijn gemaakt door vereiste revisoren, validatie en statuscontroles.

Stap 2: een sterke beoordeling van pull-aanvragen vereisen

Vereis een minimum aantal beoordelaars

Gebruik Vereisen een minimum aantal revisoren voor belangrijke vertakkingen, zoals main en release-vertakkingen.

Aanbevolen instellingen:

  • Minimum aantal reviewers: 2 voor belangrijke gedeelde branches
  • Minimaal één goedkeuring vereisen voor de laatste iteratie
  • Toestaan dat aanvragers hun eigen wijzigingen goedkeuren: Off
  • Verbied degene die het laatst heeft gepusht om de eigen wijzigingen goed te keuren: On als u een striktere functiescheiding wilt

Het minimale revisorbeleid configureren

  1. Ga naar Project instellingen>opslagplaatsen.
  2. Selecteer uw opslagplaats en selecteer vervolgens de beveiligde vertakking.
  3. Schakel onder Beleideen minimum aantal revisoren in.
  4. Stel de opties voor beoordelaars voor de branch in.

Controleer het resultaat:

  • In de lijst met vertakkingsbeleid wordt het revisorbeleid weergegeven als ingeschakeld.
  • Pull requests naar de branch kunnen pas worden afgerond zodra het vereiste aantal goedkeuringen is verleend.

Zie Beleidsregels en instellingen voor branches voor meer informatie over het beleid.

Revisoren automatisch opnemen voor gevoelige bestanden

Gebruik automatisch opgenomen revisoren wanneer bepaalde bestanden of mappen goedkeuring vereisen van een specifieke persoon of een specifiek team.

Goede kandidaten zijn:

  • implementatie- en infrastructuurcode
  • verificatie- en autorisatiecode
  • compliancegevoelige mappen
  • sjablonen voor gedeelde pijplijnen

Het beleid voor automatisch opgenomen revisoren configureren

  1. Ga naar Project instellingen>opslagplaatsen.
  2. Open de doeltak onder Branchbeleid.
  3. Voeg een beleid voor automatisch opgenomen revisoren toe.
  4. Voeg de vereiste personen of groepen toe.
  5. Kies of het beleid vereist of optioneel is.
  6. Voeg padfilters toe voor de bestanden of mappen waarvoor hun beoordeling is vereist.
  7. Aanvragers niet toestaan hun eigen wijzigingen goed te keuren.

Controleer het resultaat:

  • Een pull request die overeenkomstige bestanden wijzigt, voegt automatisch de ingestelde reviewers toe.
  • De pull-aanvraag kan pas worden voltooid als aan het vereiste revisorbeleid is voldaan.

Zie Coderevisoren automatisch opnemen voor meer informatie.

Stap 3: Traceerbaarheid en validatie afdwingen

Controleer de gekoppelde werkitems

Schakel Controle op gekoppelde werkitems in wanneer je team behoefte heeft aan traceerbaarheid van wijzigingen tussen pull requests en werkitemtracking.

Het beleid voor gekoppelde werkitems configureren

  1. Ga naar Project instellingen>opslagplaatsen.
  2. Open de doeltak onder Branchbeleid.
  3. Schakel Controleren op gekoppelde werkitems in.
  4. Kies Vereist als pull-aanvragen gekoppelde werkitems moeten hebben voordat ze zijn voltooid.

Controleer het resultaat: Pull-aanvragen zonder gekoppelde werkitems geven het beleid weer als niet tevreden.

Zie Controleren op gekoppelde werkitems voor meer informatie.

Buildvalidatie

Gebruik buildvalidatie om een geslaagde pijplijnuitvoering voor pull-aanvragen te vereisen voordat u samenvoegt.

Important

Voordat u buildvalidatie configureert, maakt u de build-pijplijn die de pull-aanvraag moet valideren.

Aanbevolen instellingen voor beveiligde branches:

  • Trigger: Automatisch
  • Beleidsvereiste: Required
  • Verlooptijd van build: Kies een waarde die overeenkomt met hoe vaak de beveiligde vertakking verandert

Het buildvalidatiebeleid configureren

  1. Open de doeltak onder Branchbeleid.
  2. Voeg een beleid voor buildvalidatie toe.
  3. Selecteer de buildpipeline.
  4. Kies of het beleid vereist is.
  5. Sla het beleid op.

Controleer het resultaat:

  • Het openen of bijwerken van een pull-aanvraag plaatst de geconfigureerde validatiebuild in de wachtrij.
  • De pull-aanvraag kan pas worden voltooid als de vereiste build is voltooid.

Zie Build-validatie voor meer informatie.

Controleren op resolutie van opmerkingen

Gebruik Controleren of opmerkingen zijn opgelost om ervoor te zorgen dat beoordelingsdiscussies zijn opgelost voordat de pull request wordt voltooid.

Het beleid voor het oplossen van opmerkingen configureren

  1. Open de doeltak onder Branchbeleid.
  2. Schakel Controleren op resolutie van opmerkingen in.
  3. Kies Vereist als niet-opgeloste opmerkingen voltooiing moeten blokkeren.

Controleer het resultaat: pull-aanvragen met niet-opgeloste opmerkingen blijven geblokkeerd tot revisoren of auteurs de threads oplossen.

Zie Controleren op oplossing van opmerkingen voor meer informatie.

Samenvoegtypen beperken

Gebruik samenvoegtypen beperken als instelling voor geschiedenisbeheer van opslagplaatsen. Dit beleid helpt bij het standaardiseren van hoe pull-aanvraagdoorvoeringen worden weergegeven na samenvoegen, maar het is geen direct beveiligingsbeheer.

Kies een samenvoegstrategie op basis van hoe uw team de geschiedenis van uw team beoordeelt, traceert en controleert.

Voorbeelden van gebruik:

  • Er zijn squashsamenvoegingen vereist voor kortdurende functiewerkzaamheden.
  • Sta rebase of squash niet toe op branches waar uw auditproces merge-commits verwacht.

Overwegingen voor controle en traceerbaarheid:

  • Squash zorgt voor een overzichtelijkere geschiedenis van de doelbranch, maar voegt bij het samenvoegen meerdere broncommits samen tot één commit.
  • Als uw controlemodel afhankelijk is van het behoud van de exacte doorvoerreeks van een functievertakking, geeft u de voorkeur aan samenvoegstrategieën boven squash.
  • Houd uw beleid consistent met de wijze waarop ontwikkelaars de geschiedenis van pull-aanvragen en in de doelbranch inspecteren en fouten opsporen.

Azure DevOps CLI-voorbeeld:

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

Zie Samenvoegtypen beperken voor meer informatie.

Stap 4: GitHub Geavanceerde beveiligingsstatuscontroles toevoegen

GitHub Geavanceerde beveiligingsstatuscontroles helpen voorkomen dat pull-aanvragen worden samengevoegd wanneer er nieuwe kritieke of ernstige beveiligingsproblemen worden geïntroduceerd.

Important

GitHub Advanced Security for Azure DevOps is alleen beschikbaar voor Azure DevOps Services en alleen voor Git-codeopslagplaatsen.

Voordat u het statuscontrolebeleid toevoegt:

  1. Schakel GitHub Geavanceerde beveiliging in de opslagplaats in.
  2. Configureer de vereiste geavanceerde beveiligingspijplijntaken.
  3. Voeg een buildvalidatiebeleid toe voor de pull-aanvraagbranch.
  4. Schakel Wait for Processing: true in voor de gedocumenteerde taken voor Geavanceerde beveiliging.
  5. Voer de pijplijn minstens één keer succesvol uit, zodat de statuscheck wordt weergegeven in de lijst Status to check.

Begin met AdvancedSecurity/NewHighAndCritical als de opslagplaats al onopgeloste waarschuwingen heeft. Nadat u de achterstand hebt verminderd, kunt u overwegen om over te stappen op AdvancedSecurity/AllHighAndCritical.

Pad naar browser:

  1. Open de doeltak onder Branchbeleid.
  2. Selecteer onder Statuscontroles de optie +.
  3. Stel de status in om te controleren op AdvancedSecurity/NewHighAndCritical.
  4. Laat geavanceerde opties op de standaardwaarden staan.
  5. Sla het beleid op.

Geavanceerde beveiligingsstatuscontroles worden geconfigureerd vanuit statuscontroles in de browser nadat u Advanced Security-scan en buildvalidatie voor de opslagplaats hebt ingeschakeld. Zie Statuscontroles voor pull-aanvragen instellen voor de vereiste installatie.

Controleer het resultaat:

  • Pull-aanvragen met nieuwe hoge of kritieke bevindingen geven de statuscontrole weer als mislukt.
  • Het vertakkingsbeleid blokkeert de voltooiing totdat de bevindingen zijn opgelost of het beleid is optioneel.

Zie voor meer informatie over de installatie:

Voorbeeld van implementatieplannen

Basislijn voor repositories met lagere gevoeligheid

Als de opslagplaats een lagere gevoeligheid heeft en u een beheerbaar beginpunt wilt:

  1. Machtigingen voor het overslaan van vertakkingen beperken.main
  2. Vereis minimaal één of twee beoordelaars.
  3. Gekoppelde werkitems inschakelen.
  4. Voeg buildvalidatie toe.
  5. Schakel het oplossen van opmerkingen in.

Opslagplaats met hoge gevoeligheid

Als de opslagplaats implementatie-, identiteits- of nalevingskritieke assets bevat:

  1. Beperk machtigingen voor het overslaan van beleid aan beheerders.
  2. Vereis twee beoordelaars op main.
  3. Voeg automatisch opgenomen beoordelaars toe voor beveiligde paden.
  4. Gekoppelde werkitems verplicht stellen.
  5. Voeg buildvalidatie toe.
  6. Voeg GitHub geavanceerde beveiligingsstatuscontroles toe als u Azure DevOps Services gebruikt.

Optioneel: AI-assistentie gebruiken om de configuratie van branchbeleid te beoordelen

AI-hulp is optioneel. Uw vertakkingsmachtigingen, beleidsregels en statuscontroles dwingen beveiliging van opslagplaatsen af, ongeacht of u AI gebruikt.

U kunt deze prompts gebruiken om de beleidsconfiguratie te controleren, hiaten te identificeren en sneller basislijnaan aanbevelingen te krijgen. Als u Azure DevOps MCP-server configureert, kan de assistent uw Azure DevOps context gebruiken om antwoorden te verbeteren. Zie Ai-hulp inschakelen met Azure DevOps MCP-server voor hulp bij het instellen.

Gebruik prompts als de volgende om aan de slag te gaan:

Doel Voorbeeldprompt
Branchbeveiligingen controleren Summarize the branch policies on main and explain which ones are required.
Risico's voor bypass identificeren Find users or groups that can bypass branch policies on the main branch.
Dekking van beoordelingen controleren List the reviewer and comment-resolution policies configured for this repository.
Werkregistratie controleren Check whether pull requests into main require linked work items.
Validatiepoorten inspecteren Show the build validation policy for main and explain what pipeline it uses.
Onderzoek controles van de beveiligingsstatus List the status checks configured for main and tell me whether GitHub Advanced Security is one of them.
Een veiligere basislijn plannen Recommend a secure branch policy baseline for this repository based on its current settings.

Valideer altijd gegenereerde opdrachten en aanbevelingen op basis van uw opslagplaatsmachtigingen, vertakkingsinstellingen en de huidige Azure DevOps documentatie voordat u deze toepast.

Tips voor probleemoplossing

Probleem Waarschijnlijke oorzaak Aanbevolen actie
Er wordt geen optie voor vertakkingsbeleid weergegeven U beschikt niet over de machtiging Beleid bewerken of de vertakking is niet geselecteerd Toegang tot de branch en beleidsmachtigingen bevestigen
Pull-aanvragen kunnen nog steeds worden samengevoegd zonder vergaderbeleid Een gebruiker heeft bypassmachtigingen Controleer beleid voor het omzeilen bij het voltooien van pull requests en beleid voor het omzeilen bij het pushen
Vereiste revisoren worden niet toegevoegd Het filter voor het revisorbeleidspad komt niet overeen met de gewijzigde bestanden De padfilters en revisoridentiteiten opnieuw controleren
De statuscontrole voor Geavanceerde beveiliging is niet beschikbaar De opslagplaats heeft een geslaagde scanuitvoering met de vereiste taken niet voltooid Buildvalidatie, pijplijntaken en Wait for Processing instellingen controleren
Een beleid voor gekoppelde werkitems blokkeert niet Het beleid is optioneel in plaats van vereist Open het vertakkingsbeleid opnieuw en bevestig het vereisteniveau