Konfigurieren Sie Ihr GitHub Repository

Die Integration des Tools Git Repos and Issue Tracking basiert auf Github, einem webbasierten Hosting-Dienst für Git Repositories (Repos). Sie können sowohl über lokale als auch über ferne Kopien Ihrer Repositorys verfügen. Weitere Informationen finden Sie unter Git Repos and Issue Tracking{: external}.

Richtlinien für Filialschutz setzen Sicherheit und Zusammenarbeit durch und tragen dazu bei, dass Ihr Team Standards für Codequalität und Änderungsmanagement einhält. Dieser Artikel unterstützt Sie beim Festlegen und Verwalten von Verzweigungsrichtlinien. DevSecOps erfordert die Konfiguration der Branch-Schutzregeln IhresGitHub Repository.

GitHub unterstützt jetzt die Definition von Regelsätzen für den Schutz von Zweigen- ein detaillierterer und flexiblerer Mechanismus zur Definition von Schutzmaßnahmen und Richtlinien auf Repository-Ebene. Weitere Informationen finden Sie unter Über Regelsätze

Vorteile des Niederlassungsschutzes

  • Verbesserte Codequalität und Zusammenarbeit: Die Anforderung von Pull-Anforderungen und Genehmigungen durch Filialschutz verbessert die Codequalität und Zusammenarbeit. Dies stellt die Codekonsistenz und die Einhaltung der Codierungsstandards des Teams sicher. Änderungen werden überprüft und helfen, Fehler und Fehler frühzeitig zu erkennen, was zu zuverlässigeren und wartungsfähigen Codes führt.

  • Mehr Transparenz bei Änderungen: Die Anforderung von Pull-Anforderungen bietet mehr Transparenz bei Codeänderungen. Dieser Schritt vereinfacht die Verfolgung von Änderungen und die Identifizierung potenzieller Probleme.

  • Codeintegrität sicherstellen: Statusprüfungen von Pull-Anforderungen validieren den Code, indem automatisierte Tests für vordefinierte Standards und Linter ausgeführt werden, bevor eine Pull-Anforderung zusammengeführt werden kann. In diesem Schritt wird die Codeintegrität gewahrt, indem Programmfehler und andere Probleme frühzeitig im Entwicklungszyklus abgefangen werden.

Vorteile von Regelwerken

  • Granulares Targeting: Anwendung von Regeln auf Zweige und Tags unter Verwendung leistungsstarker fnmatch-Muster (z. B. release/**, refs/tags/v*)

  • Zentralisierte Verwaltung: Konfigurieren und verwalten Sie den gesamten Abzweig- und Tag-Schutz über eine einzige Schnittstelle. GitHub UI und API bieten klare Regelzuordnungen und Durchsetzungsdetails für mehr Transparenz.

  • Höhere Flexibilität: Im Gegensatz zum herkömmlichen Zweigschutz (der nur eine Regel pro Zweig zulässt) können mit Regelsätzen mehrere, übereinanderliegende Regelsätze definiert werden, die unter Verwendung von Mustern auf mehrere Zweige angewendet werden können. Ein einzelner Zweig kann mehrere anwendbare Regelsätze haben, was eine fein abgestufte Kontrolle, wiederverwendbare Richtlinien für verschiedene Zweige und eine bessere Anpassung an komplexe Arbeitsabläufe ermöglicht.

Konfigurieren von Regelsätzen in GitHub

Gehen Sie folgendermaßen vor, um Regelsätze in GitHub für Ihr Repository zu konfigurieren:

Zugriff auf Regelsatzeinstellungen

  1. Navigieren Sie zur Registerkarte Einstellungen Ihres Repositorys auf GitHub.
  2. Klicken Sie in der linken Seitenleiste unter Regeln auf Regelsätze, um die Seite mit den Regelsatzeinstellungen aufzurufen.
  3. Klicken Sie auf die grüne Schaltfläche „Neues Branch RuleSet
  4. Fügen Sie die erforderlichen Informationen zur Definition des Regelsatzes hinzu und klicken Sie auf Erstellen.

GitHub repository Regelsatz repository Regelsatz
GitHub

Hinzufügen von Schutzregeln in Regelsätzen

Wenn Sie auf die grüne Schaltfläche Neuer Zweigregelsatz klicken, wird eine Seite zum Ausfüllen der Details des Regelsatzes eingeblendet.

Regelsatz erstellen
Regelsatz erstellen

  1. Benennen Sie Ihre RuleSet und aktivieren/deaktivieren/evaluieren Sie den Regelsatz, indem Sie aus dem Dropdown-Menü Aktivierungsstatus auswählen

Name und Freigabe des Regelsatzes
Name und Freigabe des Regelsatzes

  1. Konfigurieren Sie die Zielzweige, indem Sie auf Ziel hinzufügen klicken. Wählen Sie Einschließen**, Ausschließen****, Standard** oder Alle, um die Zielkriterien für die Zweigstelle zu konfigurieren. GitHub unterstützt die fnmatch-Syntax für musterbasiertes Targeting.

Zielbranchen auswählen
Zielbranchen auswählen

  1. Konfigurieren Sie die Umgehungsberechtigungen unter Umgehungsliste, indem Sie auf Umgehung hinzufügen klicken. Sie können die erforderlichen Rollen hinzufügen, die die Prüfungen umgehen können. Sie können die Liste leer lassen (dies entspricht der Aktivierung der Option Umgehung dieser Einstellungen nicht zulassen in den herkömmlichen Zweigstellenschutz-Einstellungen).

Umgehungsakteure hinzufügen
Umgehungsakteure hinzufügen

  1. Aktivieren Sie die Option Vor dem Zusammenführen eine Pull-Anfrage verlangen unter Verzweigungsregeln.

  2. Aktivieren Sie die Option Genehmigungen erforderlich und legen Sie für Erforderliche Anzahl von Genehmigungen vor dem Zusammenführen mindestens 1 oder die Anzahl der erforderlichen Genehmigungen in Ihrem Team fest.

  3. Aktivieren Sie die Option Veraltete Pull-Anforderungsgenehmigungen ablehnen, wenn neue Festschreibungen mit Push-Operation übertragen werden, um alle letzten Änderungen zu überprüfen, bevor sie in einer anderen Verzweigung zusammengeführt werden können.

Verzweigungsregeln hinzufügen
Verzweigungsregeln hinzufügen

Einschränkung

Derzeit kann die Liste der Umgehungsakteure nur aus den Regelsätzen auf Repository-Ebene abgerufen werden. Wenn ein Regelsatz auf Organisationsebene definiert ist, können diese Informationen im Rahmen der Standardberechtigungen nicht aus diesen Regelsätzen abgerufen werden.

Um die Liste der Bypass-Akteure aus den Regelsätzen auf Organisationsebene abzurufen, überprüfen Sie bitte die erforderlichen Zugriffsrechte und gewähren Sie dem funktionalen ID/GitHub Konto, das die Pipeline ausführt, erweiterte Rechte (Eigentümerzugriff auf die Organisation ). Dies liegt am Berechtigungsmodell GitHub's, das die Sichtbarkeit der Metadaten von Regelsätzen auf Organisationsebene zum Umgehen von Akteuren ohne entsprechende Autorisierung einschränkt, um den Verlust vertraulicher Informationen zu verhindern.

Weitere Informationen finden Sie in der offiziellen Dokumentation GitHub zu Organisationsregeln und Bypass-Akteuren.

Statusprüfungen für Regelsatz konfigurieren

  1. Aktivieren Sie die Option Require status checks to pass before merging.

Um sie als erforderliche Statusprüfungen festlegen zu können, müssen Sie zuerst eine PR/CI-Pipeline auslösen (in der Benutzerschnittstelle werden nur vorhandene Statusprüfungen aufgelistet).

Nach der Aktivierung der Option Require status checks to pass before merging müssen Sie die spezifischen Statusprüfungen konfigurieren, die erfolgreich sein müssen, bevor Sie eine Pull-Anforderung zusammenführen.

  1. Aktivieren Sie in der Liste der verfügbaren Statusprüfungen die folgenden Optionen für Prüfungen:
  • tekton/code-branch-protection
  • tekton/code-cis-check
  • tekton/code-detect-secrets
  • tekton/code-unit-tests
  • tekton/code-vulnerability-scan

Diese Prüfungen sind die standardmäßig erwarteten Statusprüfungen für Pull-Anfragen in der Pipeline.

Statusprüfungen
Statusprüfungen

Hinzufügen aller Standard-Regelsätze (vollständige Konfiguration)

Dieser CURL-Befehl richtet sowohl die standardmäßig erforderlichen Statusprüfungen als auch die Einstellungen für die Überprüfung von Pull-Anfragen ein.

curl -H "Authorization: Bearer $(cat ${APP_TOKEN_PATH})" "${APP_API_URL}/repos/${APP_REPO_OWNER}/${APP_REPO_NAME}/rulesets" \
    -XPUT -d '{
  "name": "Branch Protection Equivalent Ruleset",
  "target": "branch",
  "enforcement": "active",
  "bypass_actors": [], // as the list is empty no one can bypass which is equivalent to enforce_admins: true with no restriction
  "conditions": {
    "ref_name": {
      "include": ["refs/heads/master"],
      "exclude": []
    }
  },
  "rules": [
    {
      "type": "required_status_checks",
      "parameters": {
        "strict_required_status_checks_policy": true,
        "required_status_checks": [
          {
            "context": "tekton/code-unit-tests"
          },
          {
            "context": "tekton/code-branch-protection"
          },
          {
            "context": "tekton/code-cis-check"
          },
          {
            "context": "tekton/code-vulnerability-scan"
          },
          {
            "context": "tekton/code-detect-secrets"
          }
        ]
      }
    },
    {
      "type": "pull_request",
      "parameters": {
        "required_approving_review_count": 1,
        "dismiss_stale_reviews_on_push": true,
        "require_code_owner_review": false,
        "require_last_push_approval": false,
        "required_review_thread_resolution": false
      }
    }
  ]
}'

Verzweigungsschutzregeln in GitHub konfigurieren

Führen Sie die folgenden Schritte aus, um Zweigschutzregeln in GitHub für Ihr Repository zu konfigurieren:

Auf Zweigschutzeinstellungen zugreifen

  1. Navigieren Sie zur Registerkarte Einstellungen Ihres Repositorys auf GitHub.
  2. Klicken Sie in der linken Seitenleiste auf Verzweigungen, um auf die Seite mit den Verzweigungseinstellungen zuzugreifen.
  3. Blättern Sie abwärts zum Abschnitt Verzweigungsschutzregeln.
  4. Suchen Sie den Zweig, den Sie konfigurieren möchten (normalerweise den Hauptzweig).
  5. Wählen Sie die Schaltfläche Bearbeiten neben dem Verzweigungsnamen aus, um die zugehörigen Zugriffsschutzregeln zu ändern.

GitHub Repository-Einstellungen
GitHub Repository-Einstellungen

Verzweigungsschutzregeln hinzufügen

Wenn keine vorhandenen Regeln eingerichtet sind, klicken Sie auf die Schaltfläche Regel hinzufügen und geben Sie den entsprechenden Verzweigungsnamen in das Feld **Branch name pattern** ein. Fahren Sie dann mit den folgenden Schritten fort:

  1. Aktivieren Sie die Option Pull-Anforderung vor Zusammenführung erforderlich.
  2. Aktivieren Sie die Option Genehmigungen erforderlich und legen Sie für Erforderliche Anzahl von Genehmigungen vor dem Zusammenführen mindestens 1 oder die Anzahl der erforderlichen Genehmigungen in Ihrem Team fest.
  3. Aktivieren Sie die Option Veraltete Pull-Anforderungsgenehmigungen ablehnen, wenn neue Festschreibungen mit Push-Operation übertragen werden, um alle letzten Änderungen zu überprüfen, bevor sie in einer anderen Verzweigung zusammengeführt werden können.

Zweigschutzregeln
Zweigschutzregeln

  1. Aktivieren Sie die Option Umgehung der Einstellungen nicht zulassen, um zu verhindern, dass Administratoren und benutzerdefinierte Rollen mit der Berechtigung "Zweigschutz umgehen" die erforderlichen Prüfungen des Zweigschutzes umgehen können.

Regeln zum Schutz von Zweigstellen
Umgehen der oben genannten Einstellungen nicht zulassen

Derzeit werden Warnungen in Protokollen angezeigt, wenn die Überprüfung von Do not allow bypassing these settings nicht aktiviert ist. Es wird die Prüfung zum Schutz der Branche nicht bestehen, bis die Prüfung Mitte März verpflichtend wird. Bitte aktivieren Sie die Prüfung bis Mitte März, um einen Ausfall der Pipeline zu verhindern.

Pull-Anforderungen müssen genehmigt werden, bevor sie in den Masterzweig aufgenommen werden können. Diese Regel stellt sicher, dass Änderungen von Teammitgliedern geprüft und geprüft werden, fördert die Zusammenarbeit, die Codequalität und die Einhaltung von Projektstandards.

Statusprüfungen konfigurieren

Statusprüfungen sind erforderlich inDevSecOps um umfassende Qualitäts- und Sicherheitsmaßnahmen für den Code durchzusetzen. Dadurch wird sichergestellt, dass Codeänderungen sicher und zuverlässig sind, bevor sie in eine geschützte Verzweigung zusammengeführt werden. Da die Statusprüfungen vor der Zusammenführung bestanden werden müssen, können Sie verhindern, dass defekter oder nicht getesteten Code in der Produktion bereitgestellt wird.

Wenn eine Pull-Anforderung übergeben wird, löst die PR/CI-Pipeline automatisch eine Reihe von Tests, Validierungen und anderen Prüfungen aus, um die vorgeschlagenen Änderungen zu überprüfen.

Erst wenn alle erforderlichen Statusprüfungen erfolgreich bestanden wurden, kann die Pull-Anforderung in den geschützten Zweig aufgenommen werden.

Durch die Nutzung von Statusprüfungen innerhalbDevSecOps, Sie können die Codequalität aufrechterhalten, Codierungsstandards einhalten und das Fehlen von Schwachstellen oder kritischen Fehlern sicherstellen, bevor Sie Änderungen in den geschützten Zweig Ihres Projekts integrieren.

Weitere Informationen zum Konfigurieren von Statusprüfungen finden Sie im Abschnitt Nur Statusprüfungen konfigurieren(Konfiguration von Statusprüfungen).

  1. Aktivieren Sie die Option Require status checks to pass before merging.

Um sie als erforderliche Statusprüfungen festlegen zu können, müssen Sie zuerst eine PR/CI-Pipeline auslösen (in der Benutzerschnittstelle werden nur vorhandene Statusprüfungen aufgelistet).

Nach der Aktivierung der Option Require status checks to pass before merging müssen Sie die spezifischen Statusprüfungen konfigurieren, die erfolgreich sein müssen, bevor Sie eine Pull-Anforderung zusammenführen.

  1. Aktivieren Sie in der Liste der verfügbaren Statusprüfungen die folgenden Optionen für Prüfungen:
  • tekton/code-branch-protection
  • tekton/code-cis-check
  • tekton/code-detect-secrets
  • tekton/code-unit-tests
  • tekton/code-vulnerability-scan

Statusprüfungen
Statusprüfungen

Die angezeigten Statusprüfungen müssen erfolgreich sein, bevor eine Pull-Anforderung zusammengeführt wird.

Diese Prüfungen sind die standardmäßig erwarteten Statusprüfungen für Pull-Anfragen in der Pipeline.

Angepasste Liste von Konformitätsprüfungen festlegen

Sie können auch eine eigene Liste von Statusprüfungen für die Validierung durch die Pipeline erstellen. Um dies zu erreichen, legen Sie zuerst Ihre Liste der erforderlichen Statusprüfungen im Repository fest und legen Sie außerdem den Pfad der Werteinstellung branch-protection-rules-path auf eine JSON-Datei fest, die dieselben Listenstatusprüfungen enthält, also relativ zu Ihrem App-Repository.

|branch-protection-rules-path |text | Legen Sie den Pfad zu einer JSON-Datei fest, die die angepasste Liste der erforderlichen Konformitätsprüfungen relativ zum integrierten App-Repository enthält. | Optional |

Die JSON-Datei hat dieses Format.

[{
  "type": "branch-protection",
  "name": "code-review",
  "params": {
    "checks": [
      "tekton/code-branch-protection",
      "tekton/code-unit-tests",
      "tekton/code-cis-check",
      "tekton/code-vulnerability-scan",
      "tekton/code-detect-secrets"
    ]
  }
}]

Notiz :DevSecOps basiert standardmäßig das Ergebnis der Überprüfungen des Zweigschutzes auf den Ergebnissen der Statusüberprüfungen, die den tekton/ Präfix.

Angepasstes Präfix für Konformitätsprüfungen festlegen

Wenn Sie die tekton Präfix für etwas anderes inGitHub, Sie sollten einen Wert festlegen für branch-protection-status-check-prefix Umgebungseigenschaft in Ihrer Pipeline.

|branch-protection-status-check-prefix |text | Der Präfixtext für die Statusprüfung des Verzweigungsschutzes (Standardeinstellung tekton). | Optional |

Sobald Sie die Einstellungen für den Verzweigungsschutz konfiguriert haben, wird jeder Versuch, eine Pull-Anforderung mit dem geschützten Zweig zusammenzuführen, zurückgewiesen, sofern die erforderlichen Bedingungen nicht erfüllt sind.

Optionale Einstellungen

Zusätzlich zu den obigen Einstellungen haben Sie die Möglichkeit, die folgenden zusätzlichen Einstellungen für Zweigschutzregeln zu konfigurieren. Bitte beachten Sie, dass die Statusprüfungen vonDevSecOps wird diese Einstellungen weder validieren noch erzwingen.

  • Signierte Commits erforderlich: Diese Einstellung erfordert, dass alle Commits für die geschützte Verzweigung signiert werden, um zu verhindern, dass zerstörerische Änderungen am Code vorgenommen werden.

  • Lineares Protokoll erforderlich: Diese Einstellung setzt voraus, dass alle Commits für die geschützte Verzweigung über ein lineares Protokoll verfügen. Dies bedeutet, dass alle Pull-Anforderungen, die in der geschützten Verzweigung zusammengeführt werden, eine Squash-oder Rebase-Zusammenführung verwenden müssen. Ein streng linearer Commitverlauf kann Teams dabei helfen, Änderungen einfacher umzukehren.

Diese zusätzlichen Einstellungen sind optional und können an Ihre speziellen Anforderungen und Vorgaben angepasst werden.

Verzweigungsschutzregeln mit CURL-Befehlen festlegen

Alle Verzweigungsschutzregeln hinzufügen (Konfiguration abschließen)

Verzweigungsschutzregeln können auch mit dem folgenden curl-Befehl festgelegt werden, nachdem die Variablen $GH_TOKEN, $OWNER, $APP_API_URL $REPO, $BRANCH ersetzt wurden.

curl -u ":$GH_TOKEN" $APP_API_URL/repos/$OWNER/$REPO/branches/$BRANCH/protection -XPUT -d '{"required_pull_request_reviews":{"dismiss_stale_reviews":true},"required_status_checks":{"strict":true,"contexts":["tekton/code-branch-protection","tekton/code-unit-tests","tekton/code-cis-check","tekton/code-vulnerability-scan","tekton/code-detect-secrets"]},"enforce_admins":null,"restrictions":null}'

Dieser CURL-Befehl richtet sowohl die erforderlichen Statusprüfungen als auch die Einstellungen für die Prüfung von Pull-Anforderungen ein.

Sobald diese Einstellungen konfiguriert wurden, wird jeder Versuch, eine Pull-Anforderung mit $BRANCH zusammenzuführen, zurückgewiesen, sofern die Pull-Anforderung nicht von mindestens einem anderen Benutzer genehmigt wurde.

Nur Statusprüfungen konfigurieren (Konfiguration der Statusprüfungen)

Wenn Sie nur die erforderlichen Statusprüfungen konfigurieren wollen, können Sie den folgenden CURL-Befehl als Referenz verwenden:

curl -H "Authorization: Bearer $(cat ${APP_TOKEN_PATH})" "${APP_API_URL}/repos/${APP_REPO_OWNER}/${APP_REPO_NAME}/branches/master/protection" \
    -XPUT -d '{"required_pull_request_reviews":{"dismiss_stale_reviews":true},"required_status_checks":{"strict":true,"contexts":["tekton/code-branch-protection","tekton/code-unit-tests","tekton/code-cis-check","tekton/code-vulnerability-scan","tekton/code-detect-secrets"]},"enforce_admins":null,"restrictions":null}'

In unserer Referenzimplementierung wurde bereits eine Beispielkonfiguration für das Repository hello-compliance-app bereitgestellt, sodass Sie sie als Ausgangspunkt verwenden und an Ihre Anforderungen anpassen können.

Befolgen Sie das vorherige Beispiel, um die Codequalität und die Einhaltung von Sicherheitsmaßnahmen für Ihr Repository sicherzustellen. Um dies sicherzustellen, konfigurieren Sie die erforderlichen Zweigschutzregeln und Statusprüfungen.