Sichern von Repositorys und Pullanforderungen

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

Sichern Sie Azure Repos, indem Sie Zugriffssteuerung, Pull-Request-Richtlinien und Statusprüfungen für Ihre wichtigsten Branches kombinieren. In diesem Artikel erfahren Sie, wie Sie direkte Änderungen einschränken, die richtigen Reviewer vorschreiben, Anforderungen an Arbeitselemente und Builds erzwingen und GitHub Advanced Security-Prüfungen hinzufügen, bevor Pull Requests zusammengeführt werden.

Bedrohungen und Kontrollen

Verwenden Sie die folgenden Steuerelemente zusammen, um die am häufigsten auftretenden Pullanforderungsrisiken zu reduzieren.

Bedrohung Risiko Empfohlenes Steuerelement
Direkte Pushes auf geschützte Branches Änderungen umgehen Prüfung und Validierung Verzweigungsberechtigungen und Verzweigungsrichtlinien
Genehmigung durch eine einzelne Person Die Qualität der Überprüfung hängt von einer Person ab. Mindestanzahl von Reviewern erforderlich
Fehlende Expertenüberprüfung zu vertraulichen Dateien Sicherheitskritische Änderungen werden ohne die richtigen Prüfer zusammengeführt Automatisch einbezogene Reviewer
Nicht nachverfolgte Codeänderungen Reduzierte Prüfbarkeit und Änderungsablaufverfolgung Auf verknüpfte Arbeitselemente überprüfen
Fehlerhafter oder nicht getesteter Code Regressionen gelangen in gemeinsame Branches Buildüberprüfung
Ungelöste Rückmeldungen zur Überprüfung Zusammenführung bekannter Probleme ohne Antwort Kommentarauflösung überprüfen
Neue hohe oder kritische Sicherheitsrisiken Sicherheitsregressionen werden durch Pullanforderungen zusammengeführt GitHub Erweiterte Sicherheitsstatusprüfungen

Prerequisites

Kategorie Anforderungen
Projektzugriff Mitglied eines Projekts.
Erlaubnisse - Code in privaten Projekten anzeigen: Mindestens einfacher Zugriff.
- Klonen oder Mitwirken an Code in privaten Projekten: Mitglied der Sicherheitsgruppe "Mitwirkende" oder entsprechende Berechtigungen im Projekt.
– Branch- oder Repositoryberechtigungen festlegen: Berechtigungen verwalten für den Branch oder das Repository.
- Branchrichtlinien festlegen, Statusprüfungen konfigurieren oder den Standardbranch ändern: Berechtigung „Richtlinien bearbeiten“ für das Repository oder den Branch oder Mitgliedschaft in der Sicherheitsgruppe „Projektadministratoren“.
- Ein Repository importieren: Mitglied der Sicherheitsgruppe "Projektadministratoren" oder der Berechtigungssatz für die Git-Projektebene "Repository erstellen" auf "Zulassen" gesetzt. Weitere Informationen finden Sie unter Festlegen von Git-Repositoryberechtigungen.
Dienste Repos aktiviert.
Werkzeuge Dies ist optional. Verwenden Sie az repos Befehle: Azure DevOps CLI.
Kategorie Anforderungen
Projektzugriff Mitglied eines Projekts.
Erlaubnisse - Code anzeigen: Mindestens einfacher Zugriff.
- Klonen oder zum Code beitragen: Mitglied der Sicherheitsgruppe "Mitwirkende" oder entsprechende Berechtigungen im Projekt.
Dienste Repos aktiviert.

Bevor Sie eine Branchrichtlinie konfigurieren:

  • Stellen Sie sicher, dass das Ziel-Repository und der Branch bereits vorhanden sind.
  • Entscheiden Sie, welche Gruppen Berechtigungen verwalten, Richtlinien umgehen und Pullanforderungen genehmigen können.
  • Wenn Sie beabsichtigen, eine Buildüberprüfung oder GitHub Advanced Security-Statusüberprüfungen zu erfordern, erstellen Sie zuerst die Buildpipeline.

Sicherheitsgrundwerte für die meisten Teams

Beginnen Sie für einen typischen Produktionszweig wie mainz. B. mit dieser Basis:

Kontrollbereich Empfohlene Basislinie Warum?
Repositoryzugriff Einschränken des Schreibzugriffs auf Mitwirkende, die aktiv im Repository arbeiten Reduziert die Anzahl der Identitäten, die Quellcode- oder Repositoryeinstellungen ändern können.
Branchberechtigungen Einschränken von Umgehungsrichtlinien beim Abschließen von Pullanforderungen und Umgehungsrichtlinien beim Pushen an eine kleine Administratorgruppe Verhindert, dass Benutzer erforderliche Überprüfungen, Validierungen und andere Branchschutzregeln überspringen.
Richtlinie überprüfen Für main mindestens zwei Prüfer verlangen Verbessert die Qualität der Überprüfung und reduziert das Risiko einer einzelnen fehlerhaften oder voreingenommenen Genehmigung.
Vertrauliche Dateien Automatisches Einschließen von Prüfern für Sicherheits-, Infrastruktur- oder Compliance-sensible Pfade Stellt sicher, dass Änderungen an Risikobereichen von den richtigen Personen oder Teams überprüft werden.
Nachverfolgbarkeit Aktivieren Suche nach verknüpften Arbeitselementen Bewahrt einen Prüfpfad zwischen Codeänderungen und den Aufgaben, die diese begründen.
Validation Buildvalidierung für den PR-Branch hinzufügen Erkennt Build- und Testfehler, bevor der Code in einen geschützten Branch zusammengeführt wird.
Überprüfung abschließen Aktivieren der Kommentarauflösung aktivieren Hilft dabei, sicherzustellen, dass die Bedenken der Prüfer vor Abschluss behoben werden.
Sicherheitsrisikotore Fügen Sie AdvancedSecurity/NewHighAndCritical hinzu, nachdem die Überprüfung durch „Erweiterte Sicherheit“ konfiguriert wurde Blockiert Pullanforderungen, die neue hohe oder kritische Sicherheitsergebnisse einführen.

Schritt 1: Zugriff auf Repository und Branch einschränken

Beginnen Sie mit Berechtigungen. Richtlinien sind am effektivsten, wenn nur eine kleine Gruppe von Benutzern sie umgehen kann.

Überprüfen von Repositoryberechtigungen

Verwenden Sie Repositoryberechtigungen, um zu steuern, wer Einstellungen lesen, mitwirken, verwalten oder zu Pullanforderungen beitragen kann. Ausführliche Berechtigungsreferenz finden Sie unter Festlegen von Git-Repositoryberechtigungen.

Verwenden Sie das folgende Muster:

  • Gewähren Sie Mitwirkenden die Berechtigungen, die sie für die Arbeit in Featurezweigen benötigen.
  • Reservieren Sie die Repositoryverwaltung für eine kleine Administratorgruppe.
  • Vermeiden Sie die weitreichende Vergabe von Berechtigungen zur Umgehung von Richtlinien.

Einschränken von Verzweigungsberechtigungen

Überprüfen Sie diese Berechtigungen für geschützte Verzweigungen sorgfältig und beschränken Sie sie:

  • Richtlinien beim Abschließen von Pull Requests umgehen
  • Richtlinien beim Pushen umgehen
  • ** Force Push (Historie neu schreiben, Branches und Tags löschen)
  • Richtlinien bearbeiten
  • Berechtigungen verwalten

Verwenden Sie "Verzweigungsberechtigungen festlegen" , um diese Einstellungen zu konfigurieren.

Empfohlenes Muster für main:

Gruppe Empfohlene Branchberechtigungen
Beitragende Reguläre Beiträge über Pull Requests zulassen, aber keine Umgehungsberechtigungen erteilen
Projektadministratoren Bearbeiten von Richtlinien und Verwalten von Berechtigungen zulassen
Besitzer von Notfallfreigaben Erteilen Sie Berechtigungen zur Umgehung nur, wenn Ihr Incident-Management-Prozess diese erfordert

Important

Beschränken Sie die Umgehung von Richtlinien beim Abschließen von Pull Requests und die Umgehung von Richtlinien beim Pushen auf eine kleine Anzahl vertrauenswürdiger Administratoren. Diese Berechtigungen unterlaufen die Schutzmaßnahmen, die durch verpflichtende Reviewer, Validierungen und Statusprüfungen gewährleistet werden.

Schritt 2: Strenge Pull-Request-Überprüfung erforderlich machen

Mindestanzahl von Reviewern erforderlich

Verwenden Sie Eine Mindestanzahl von Prüfern erforderlich für wichtige Branches wie main und Release-Branches.

Empfohlene Einstellungen:

  • Mindestanzahl an Prüfern: 2 für wichtige freigegebene Branches
  • Mindestens eine Genehmigung für die letzte Iteration erforderlich
  • Zulassen, dass Anforderer ihre eigenen Änderungen genehmigen: Off
  • Verbieten Sie den letzten Pusher, ihre eigenen Änderungen zu genehmigen: On wenn Sie eine stärkere Trennung von Aufgaben wünschen

Richtlinie für die Mindestanzahl von Prüfern konfigurieren

  1. Wechseln Sie zu Projekteinstellungen>Repositorys.
  2. Wählen Sie Ihr Repository aus, und wählen Sie dann den geschützten Branch aus.
  3. Aktivieren Sie unter "Richtlinien" die Option "Mindestens eine Anzahl von Prüfern anfordern".
  4. Legen Sie die Reviewer-Optionen für den Branch fest.

Überprüfen Sie das Ergebnis:

  • Die Liste der Branchrichtlinien zeigt die Reviewer-Richtlinie als aktiviert an.
  • Pull Requests in den Branch können erst abgeschlossen werden, wenn die erforderliche Anzahl von Freigaben vorliegt.

Details zu Richtlinien finden Sie unter Branch-Richtlinien und -Einstellungen.

Automatisches Einschließen von Prüfern für vertrauliche Dateien

Verwenden Sie automatisch hinzugefügte Reviewer, wenn bestimmte Dateien oder Ordner die Genehmigung einer bestimmten Person oder eines bestimmten Teams erfordern.

Folgende Kandidaten sind geeignet:

  • Bereitstellungs- und Infrastrukturcode
  • Authentifizierungs- und Autorisierungscode
  • Compliance-vertrauliche Ordner
  • Freigegebene Pipelinevorlagen

Konfigurieren Sie die Richtlinie für automatisch einbezogene Prüfer

  1. Wechseln Sie zu Projekteinstellungen>Repositorys.
  2. Öffnen Sie den Zielzweig unter Branch-Richtlinien.
  3. Fügen Sie eine Richtlinie für automatisch einbezogene Prüfer hinzu.
  4. Fügen Sie die erforderlichen Personen oder Gruppen hinzu.
  5. Wählen Sie aus, ob die Richtlinie erforderlich oder optional ist.
  6. Fügen Sie Pfadfilter für die Dateien oder Ordner hinzu, die ihre Überprüfung erfordern.
  7. Antragsteller dürfen ihre eigenen Änderungen nicht genehmigen.

Überprüfen Sie das Ergebnis:

  • Eine Pullanforderung, die übereinstimmende Dateien ändert, fügt automatisch die konfigurierten Prüfer hinzu.
  • Die Pullanforderung kann erst abgeschlossen werden, wenn die erforderliche Prüferrichtlinie erfüllt ist.

Weitere Informationen finden Sie unter "Automatisches Einschließen von Codeprüfern".

Schritt 3: Erzwingen der Rückverfolgbarkeit und Validierung

Auf verknüpfte Arbeitselemente überprüfen

Aktivieren Sie " Überprüfen auf verknüpfte Arbeitsaufgaben ", wenn Ihr Team die Änderungsablaufverfolgung zwischen Pullanforderungen und Arbeitsnachverfolgung benötigt.

Richtlinie für verknüpfte Arbeitselemente konfigurieren

  1. Wechseln Sie zu Projekteinstellungen>Repositorys.
  2. Öffnen Sie den Zielzweig unter Branch-Richtlinien.
  3. Aktivieren Sie die Überprüfung auf verknüpfte Arbeitsaufgaben.
  4. Wählen Sie "Erforderlich" aus, wenn Pullanforderungen vor Abschluss verknüpfte Arbeitsaufgaben aufweisen müssen.

Überprüfen Sie das Ergebnis: Pullanforderungen ohne verknüpfte Arbeitsaufgaben zeigen die Richtlinie als nicht erfüllt an.

Weitere Informationen finden Sie unter "Überprüfen auf verknüpfte Arbeitsaufgaben".

Überprüfung erstellen

Verwenden Sie die Buildüberprüfung , um eine erfolgreiche Pipelineausführung für Pullanforderungen vor dem Zusammenführen zu erfordern.

Important

Bevor Sie die Buildüberprüfung konfigurieren, erstellen Sie die Buildpipeline, die die Pullanforderung überprüfen soll.

Empfohlene Einstellungen für geschützte Branches:

  • Trigger: Automatisch
  • Richtlinienanforderung: Required
  • Build-Ablauf: Wählen Sie einen Wert aus, der dazu passt, wie oft sich der geschützte Branch ändert.

Konfigurieren der Buildüberprüfungsrichtlinie

  1. Öffnen Sie den Zielzweig unter Branch-Richtlinien.
  2. Fügen Sie eine Buildüberprüfungsrichtlinie hinzu.
  3. Wählen Sie die Build-Pipeline aus.
  4. Wählen Sie aus, ob die Richtlinie erforderlich ist.
  5. Speichern Sie die Richtlinie.

Überprüfen Sie das Ergebnis:

  • Beim Öffnen oder Aktualisieren einer Pullanforderung wird der konfigurierte Überprüfungsbuild in die Warteschlange gestellt.
  • Die Pullanforderung kann erst abgeschlossen werden, wenn der erforderliche Build erfolgreich ist.

Weitere Informationen finden Sie unter Build-Validierung.

Kommentarauflösung überprüfen

Verwenden Sie Auf Auflösung von Kommentaren prüfen, um sicherzustellen, dass Überprüfungsthreads aufgelöst sind, bevor der Pull Request abgeschlossen wird.

Konfigurieren der Kommentarauflösungsrichtlinie

  1. Öffnen Sie den Zielzweig unter Branch-Richtlinien.
  2. Aktivieren Sie die Überprüfung der Kommentarauflösung.
  3. Wählen Sie Erforderlich aus, wenn ungelöste Kommentare den Abschluss blockieren sollen.

Überprüfen Sie das Ergebnis: Pull-Anforderungen mit nicht aufgelösten Kommentaren bleiben blockiert, bis Prüfer oder Autoren die Threads auflösen.

Weitere Informationen finden Sie unter Überprüfen der Kommentarauflösung.

Einschränken von Mergetypen

Verwenden Sie Zusammenführungstypen einschränken als Einstellung zur Steuerung des Repositoryverlaufs. Diese Richtlinie hilft dabei, die Darstellung von Commits aus Pull Requests nach dem Zusammenführen zu vereinheitlichen, ist jedoch keine direkte Sicherheitsmaßnahme.

Wählen Sie eine Merge-Strategie danach aus, wie Ihr Team die Historie überprüft, nachverfolgt und auditiert.

Anwendungsbeispiele:

  • Squash-Merges für kurzlebige Feature-Arbeit erforderlich machen.
  • Lassen Sie Rebase oder Squash auf Branches nicht zu, wenn Ihr Auditprozess Merge-Commits voraussetzt.

Überlegungen zur Überwachung und Rückverfolgbarkeit:

  • Squash erzeugt einen übersichtlicheren Verlauf des Ziel-Branches, fasst jedoch beim Mergen mehrere Quell-Commits zu einem Commit zusammen.
  • Wenn Ihr Audit-Modell davon abhängt, dass die genaue Commit-Reihenfolge in einem Feature-Branch erhalten bleibt, sollten Sie Merge-Commit-Strategien gegenüber Squash-Merges bevorzugen.
  • Halten Sie Ihre Richtlinie im Einklang damit, wie Entwickler den Verlauf in Pull Requests und im Zielbranch untersuchen und debuggen.

Azure DevOps CLI-Beispiel:

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

Weitere Informationen finden Sie unter Einschränken von Zusammenführungstypen.

Schritt 4: Hinzufügen von GitHub Erweiterten Sicherheitsstatusüberprüfungen

GitHub Advanced Security-Statusüberprüfungen verhindern, dass Pullanforderungen zusammengeführt werden, wenn neue sicherheitskritische oder schwere Sicherheitsrisiken eingeführt werden.

Important

GitHub Advanced Security for Azure DevOps ist nur für Azure DevOps Services und nur für Code Git-Repositorys verfügbar.

Bevor Sie die Statusüberprüfungsrichtlinie hinzufügen:

  1. Aktivieren Sie GitHub Advanced Security im Repository.
  2. Konfigurieren Sie die erforderlichen Pipelineaufgaben für erweiterte Sicherheit.
  3. Fügen Sie eine Buildüberprüfungsrichtlinie für den Pullanforderungszweig hinzu.
  4. Aktivieren Sie Wait for Processing: true für die dokumentierten Aufgaben der erweiterten Sicherheit.
  5. Führen Sie die Pipeline mindestens einmal erfolgreich aus, damit die Statusprüfung in der Liste Status to check angezeigt wird.

Beginnen Sie mit AdvancedSecurity/NewHighAndCritical , wenn das Repository bereits nicht aufgelöste Warnungen enthält. Nachdem Sie den Backlog abgebaut haben, erwägen Sie den Umstieg auf AdvancedSecurity/AllHighAndCritical.

Browser-Pfad:

  1. Öffnen Sie den Zielzweig unter Branch-Richtlinien.
  2. Wählen Sie unter Statusüberprüfungen die Option +aus.
  3. Setzen Sie „Zu prüfender Status“ auf AdvancedSecurity/NewHighAndCritical.
  4. Behalten Sie die erweiterten Optionen bei ihren Standardwerten bei.
  5. Speichern Sie die Richtlinie.

Erweiterte Sicherheitsstatusüberprüfungen werden über Statusüberprüfungen im Browser konfiguriert, nachdem Sie die Advanced Security-Überprüfung und die Buildüberprüfung für das Repository aktiviert haben. Informationen zum erforderlichen Setup finden Sie unter Einrichten von Pullanforderungsstatusüberprüfungen.

Überprüfen Sie das Ergebnis:

  • Pullanforderungen mit neuen hohen oder kritischen Ergebnissen zeigen die Statusüberprüfung als fehlgeschlagen an.
  • Die Branchrichtlinie blockiert den Abschluss, bis die Ergebnisse behoben werden oder die Richtlinie als optional festgelegt wird.

Details zum Setup finden Sie unter:

Beispiel für Rolloutpläne

Basislinie für Repositorys mit geringerer Sensibilität

Wenn das Repository weniger sensibel ist und Sie einen überschaubaren Ausgangspunkt suchen:

  1. Beschränken Sie die Berechtigungen zum Umgehen von Branches auf main.
  2. Mindestens ein oder zwei Prüfer erforderlich.
  3. Aktivieren Sie verknüpfte Arbeitsaufgaben.
  4. Fügen Sie die Buildüberprüfung hinzu.
  5. Aktivieren Sie die Auflösung von Kommentaren.

Hochempfindliches Repository

Wenn das Repository Bereitstellungs-, Identitäts- oder Compliance-kritische Ressourcen enthält:

  1. Beschränken Sie Berechtigungen zum Umgehen von Richtlinien auf Administratoren.
  2. Zwei Prüfer für main erforderlich machen.
  3. Fügen Sie automatisch hinzugefügte Reviewer für geschützte Pfade hinzu.
  4. Verknüpfte Arbeitselemente erforderlich.
  5. Fügen Sie die Buildüberprüfung hinzu.
  6. Fügen Sie GitHub Advanced Security-Statusüberprüfungen hinzu, wenn Sie Azure DevOps Dienste verwenden.

Optional: Verwenden der KI-Unterstützung zum Überprüfen der Konfiguration von Zweigrichtlinien

KI-Unterstützung ist optional. Ihre Branch-Berechtigungen, Richtlinien und Statusprüfungen setzen den Schutz des Repositorys durch, unabhängig davon, ob Sie KI verwenden.

Sie können diese Eingabeaufforderungen verwenden, um die Richtlinienkonfiguration zu überprüfen, Lücken zu identifizieren und grundlegende Empfehlungen schneller zu erhalten. Wenn Sie Azure DevOps MCP-Server konfigurieren, kann der Assistent Ihren Azure DevOps Kontext verwenden, um Antworten zu verbessern. Anleitungen zur Einrichtung finden Sie unter Aktivieren der KI-Unterstützung bei Azure DevOps MCP-Server.

Verwenden Sie Eingabeaufforderungen wie die folgenden, um zu beginnen:

Zielsetzung Beispielaufforderung
Branchschutz überprüfen Summarize the branch policies on main and explain which ones are required.
Identifizieren des Umgehungsrisikos Find users or groups that can bypass branch policies on the main branch.
Prüfungsabdeckung prüfen List the reviewer and comment-resolution policies configured for this repository.
Arbeitszeiterfassung überprüfen Check whether pull requests into main require linked work items.
Überprüfen von Validierungsgaten Show the build validation policy for main and explain what pipeline it uses.
Sicherheitsstatusprüfungen untersuchen List the status checks configured for main and tell me whether GitHub Advanced Security is one of them.
Planen eines sichereren Basisplans Recommend a secure branch policy baseline for this repository based on its current settings.

Überprüfen Sie immer generierte Befehle und Empfehlungen anhand Ihrer Repositoryberechtigungen, Verzweigungseinstellungen und der aktuellen Azure DevOps Dokumentation, bevor Sie sie anwenden.

Tipps zur Problembehandlung

Problem Wahrscheinliche Ursache Empfohlene Maßnahme
Eine Branchrichtlinienoption wird nicht angezeigt. Sie haben nicht die Berechtigung Richtlinien zu bearbeiten, oder der Branch wurde nicht ausgewählt. Bestätigen von Zweigzugriffs- und Richtlinienberechtigungen
Pull Requests können weiterhin zusammengeführt werden, ohne die Richtlinie zu erfüllen. Ein Benutzer verfügt über Umgehungsberechtigungen. Überprüfen von Umgehungsrichtlinien beim Abschließen von Pullanforderungen und Umgehungsrichtlinien beim Pushen
Erforderliche Prüfer werden nicht hinzugefügt. Der Pfadfilter der Reviewer-Richtlinie entspricht nicht den geänderten Dateien. Überprüfen Sie die Pfadfilter und Prüferidentitäten erneut.
Die Statusüberprüfung für erweiterte Sicherheit ist nicht verfügbar. Das Repository hat keinen erfolgreichen Scanvorgang mit den erforderlichen Aufgaben abgeschlossen. Überprüfen von Buildvalidierung, Pipelineaufgaben und Wait for Processing-Einstellungen
Eine Richtlinie für verknüpfte Arbeitsaufgaben blockiert nicht Die Richtlinie ist optional statt erforderlich. Öffnen Sie die Branchrichtlinie erneut, und bestätigen Sie die Anforderungsstufe.