> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Blocking Rules

> Blocking Rules setzen Sicherheits- und Qualitätsstandards durch, indem sie den Merge von nicht konformem Code verhindern.

## Übersicht

### Funktionsweise

Mit Blocking Rules definieren Sie Bedingungen, unter denen Pull Requests nicht gemergt werden dürfen. So verhindern Sie, dass potenziell riskante oder nicht konforme Codeänderungen in Ihre Codebasis gelangen, und setzen die Sicherheits- und Qualitätsstandards Ihrer Organisation durch.

Sie können zwei Arten von Blocking Rules erstellen:

* **Code Vulnerability Rules**: Blockieren PRs aufgrund von Sicherheitslücken, Code-Quality-Befunden oder beidem
* **Dependency Vulnerability Rules**: Blockieren PRs aufgrund anfälliger Abhängigkeiten, die bei SCA-Scans gefunden wurden

### Zielgruppe

Blocking Rules richten sich hauptsächlich an:

* Entwicklungsteams
* Projektmanager
* Security Engineers

Diese Funktion ist besonders nützlich für Organisationen mit strengen Compliance-Anforderungen oder für diejenigen, die an geschäftskritischen Anwendungen arbeiten, bei denen Code Quality und Sicherheit von größter Bedeutung sind.

## Hauptmerkmale und Vorteile

<AccordionGroup>
  <Accordion title="Einhaltung der Codierungsstandards" icon="shield-check">
    Definieren Sie Regeln anhand von Common Weakness Enumerations (CWEs), um Pull Requests zu blockieren, die bestimmte Schwachstellen oder Code-Quality-Probleme einführen.
  </Accordion>

  <Accordion title="Dringlichkeitsstufen anpassen" icon="signal">
    Weisen Sie verschiedenen Arten von Problemen Dringlichkeitsstufen zu (z. B. kritisch, hoch, mittel, niedrig), sodass Sie sie entsprechend priorisieren und bearbeiten können.
  </Accordion>

  <Accordion title="Abhängigkeiten nach CVSS filtern" icon="gauge">
    Definieren Sie für Dependency Vulnerability Rules einen einschließlich der Grenzwerte geltenden CVSS-Bereich, um anfällige Abhängigkeiten anhand ihres CVSS-Scores zu blockieren.
  </Accordion>

  <Accordion title="Projekt- und Tag-spezifische Regeln" icon="folder-tree">
    Wenden Sie Blocking Rules auf bestimmte Projekte, Projekt-Tags oder Ihre gesamte Organisation an. So steuern Sie präzise, welche Regeln für welche Projekte gelten.
  </Accordion>

  <Accordion title="Regelverwaltung" icon="gear">
    Erstellen, bearbeiten und löschen Sie Blocking Rules über eine übersichtliche Oberfläche, damit die Regeln mit Ihren Anforderungen Schritt halten.
  </Accordion>

  <Accordion title="Regelaktivierung/-deaktivierung" icon="toggle-on">
    Schalten Sie den Status von Blocking Rules um, um sie bei Bedarf vorübergehend zu aktivieren oder zu deaktivieren, ohne ihre Konfigurationen zu verlieren.
  </Accordion>
</AccordionGroup>

## Regeltypen

Blocking Rules unterstützen für eine umfassende Absicherung zwei verschiedene Typen:

<CardGroup cols={2}>
  <Card title="Code Vulnerability" icon="code">
    Blockiert Pull Requests basierend auf **Sicherheitslücken**, **Code-Qualitätsbefunden** oder beidem.

    Konfiguration:

    * Issue-Typ auswählen: All, Vulnerabilities oder Code Quality
    * Bestimmte CWE-Kategorien (Common Weakness Enumeration) auswählen
    * Festlegen von Dringlichkeits-/Schweregraden

    Verhindern Sie damit unter anderem SQL-Injection, XSS, unsichere Kryptografie und andere Schwachstellen auf Codeebene.
  </Card>

  <Card title="Dependency Vulnerability" icon="box">
    Blockiert Pull Requests aufgrund **anfälliger Abhängigkeiten**, die durch Software Composition Analysis (SCA) gefunden wurden.

    Konfiguration:

    * Festlegen von Dringlichkeits-/Schweregraden (Kritisch, Hoch, Mittel, Niedrig)
    * Alternativ einen einschließlich der Grenzwerte geltenden CVSS-Bereich von 0,0 bis 10,0 festlegen

    Verhindern Sie damit, dass Pakete mit bekannten Schwachstellen in Ihre Software-Lieferkette gelangen.
  </Card>
</CardGroup>

## So funktioniert es mit GitHub

<Info>
  **Voraussetzung** Sie müssen die [Corgea GitHub App](github) installiert und mit den entsprechenden Repository-Berechtigungen konfiguriert haben.
</Info>

<Steps>
  <Step title="Pull Request einreichen">
    Ein Entwickler reicht einen Pull Request mit Codeänderungen ein
  </Step>

  <Step title="Automatisierte Analyse">
    Das System analysiert die Codeänderungen anhand der aktiven Blocking Rules
  </Step>

  <Step title="Regelüberprüfung">
    Bei Regelverstößen wird der Pull Request automatisch blockiert

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=39013c8f8163f96d432b0f9bd4abbc05" style={{ borderRadius: '0.5rem' }} width="2776" height="1034" data-path="images/blocking_rules_pr_blocked.png" />
    </Frame>
  </Step>

  <Step title="Benachrichtigung des Entwicklers">
    Der Entwickler erhält eine detaillierte Benachrichtigung über Regelverstöße

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=4ac0e073341d12a425db9a4412e55b3e" style={{ borderRadius: '0.5rem' }} width="3078" height="1834" data-path="images/blocking_rules_pr_details.png" />
    </Frame>
  </Step>

  <Step title="Behebung">
    Vor dem Merge muss der Entwickler die Verstöße beheben und als Fixed markieren oder sie als False Positive beziehungsweise Accepted Risk kennzeichnen
  </Step>
</Steps>

## So funktioniert es mit Azure DevOps

<Info>
  **Voraussetzung** Stellen Sie sicher, dass die [Azure DevOps-Integration](azure_devops) mit Corgea konfiguriert ist und Sie die erforderlichen Berechtigungen besitzen.
</Info>

<Steps>
  <Step title="Pull Request einreichen">
    Ein Entwickler reicht in Azure DevOps einen Pull Request mit Codeänderungen ein.
  </Step>

  <Step title="Automatisierte Analyse">
    Das System prüft die Codeänderungen anhand der in Corgea aktiven Blocking Rules.
  </Step>

  <Step title="Regelüberprüfung">
    Bei Regelverstößen wird der Pull Request automatisch blockiert.

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=a85aa91d3cea8d9572197b863bafa4e4" style={{ borderRadius: '0.5rem' }} width="966" height="512" data-path="images/azure_blocking_rules_pr_blocked.png" />
    </Frame>

    Der Entwickler kann den PR erst mergen, nachdem die Verstöße behoben wurden.

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=1ecb01eb911476a19b0265a3b56dad72" style={{ borderRadius: '0.5rem' }} width="2900" height="2630" data-path="images/azure-devops_merging_blocked.png" />
    </Frame>
  </Step>

  <Step title="Benachrichtigung des Entwicklers">
    Der Entwickler erhält einen Link zu ausführlichen Informationen über die beanstandeten Issues auf der Scan-Seite von Corgea.

    <Frame>
      <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=e5e94b8c2fec2b7abab7eb76a37533b1" style={{ borderRadius: '0.5rem' }} width="2696" height="1556" data-path="images/azure_see_details_of_issues.png" />
    </Frame>
  </Step>

  <Step title="Behebung">
    Vor dem Merge muss der Entwickler die Verstöße beheben oder als False Positive beziehungsweise Accepted Risk markieren.
  </Step>
</Steps>

## Bedienungsanleitung

### Neue Blocking Rule erstellen

<Steps>
  <Step title="Erstellung initiieren">
    Klicken Sie auf "Add Blocking Rule"
  </Step>

  <Step title="Regeltyp wählen">
    Wählen Sie den Typ der Blocking Rule:

    * **Code Vulnerability**: Blockiert Pull Requests aufgrund von Sicherheitsproblemen im Code (SAST-Befunde)
    * **Dependency Vulnerability**: Blockiert Pull Requests aufgrund anfälliger Abhängigkeiten (SCA-Befunde)

    <Frame>
      <img src="https://mintcdn.com/corgea/5RdbtGRSeHorS3ia/images/blocking_rule_create.png?fit=max&auto=format&n=5RdbtGRSeHorS3ia&q=85&s=30d79ec3c8001ced6485f58022aa3606" style={{ borderRadius: '0.5rem' }} width="1656" height="1640" data-path="images/blocking_rule_create.png" />
    </Frame>
  </Step>

  <Step title="Grundinformationen">
    Regelname und Beschreibung eingeben
  </Step>

  <Step title="Einstellungen konfigurieren">
    Für **Code Vulnerability** Rules: Wählen Sie unter **Issue Type**, ob die Regel für **All** Befunde, nur **Vulnerabilities** oder nur **Code Quality** gelten soll. **All** ist die Standardeinstellung und entspricht dem Verhalten vorhandener Regeln. Wählen Sie anschließend Dringlichkeitsstufen (Critical, High, Medium oder Low) und/oder Ziel-CWEs aus. Mindestens eine dieser Angaben ist erforderlich.

    Für **Dependency Vulnerability** Rules: Wählen Sie die Filterung nach Schweregrad oder CVSS-Score. Wählen Sie Dringlichkeitsstufen (Critical, High, Medium oder Low) oder geben Sie einen minimalen und maximalen CVSS-Score zwischen 0,0 und 10,0 ein. Die Grenzwerte sind jeweils eingeschlossen.
  </Step>

  <Step title="Bereich festlegen">
    Wählen Sie zutreffende Projekte und/oder Projekttags (optional) aus. Eine Regel gilt, wenn ein Projekt direkt ausgewählt ist oder einen ausgewählten Tag hat. Wenn keine Projekte oder Tags ausgewählt sind, gilt die Regel für alle Projekte.
  </Step>

  <Step title="Speichern">
    Prüfen Sie die Angaben und klicken Sie auf "Create"
  </Step>
</Steps>

### Vorhandene Regeln verwalten

Suchen Sie Regeln anhand ihres Namens oder ihrer Einstellungen. Mit dem Projekt-Tag-Filter zeigen Sie Regeln für Projekte mit einem bestimmten Tag an. In der Regeltabelle enthält die Spalte "Projects" die ausgewählten Projekte und Projekt-Tags als Chips. Bei Regeln ohne Projekt- oder Tag-Scope steht dort **All Projects**; längere Listen werden in einem Tooltip unter **+N more** zusammengefasst.

<Tabs>
  <Tab title="Regel bearbeiten">
    1. Regel in der Tabelle finden
    2. Klicken Sie auf "Edit"
    3. Passen Sie die Einstellungen nach Bedarf an
    4. Klicken Sie zum Speichern auf "Update"
  </Tab>

  <Tab title="Status umschalten">
    1. Finden Sie die Regel in der Tabelle
    2. Klicken Sie auf "Toggle Status"
    3. Bestätigen Sie die Statusänderung
  </Tab>

  <Tab title="Details anzeigen">
    1. Klicken Sie auf den Regelnamen
    2. Prüfen Sie die ausführlichen Informationen
    3. Schließen Sie anschließend den Dialog
  </Tab>
</Tabs>

### Regeln bei Scans anzeigen

Sie können Blocking Rules, die für Ihre Scans gelten, an zwei Orten anzeigen:

1. Auf der Detailseite des Scans sehen Sie einen Abschnitt "Blocking Rules", der alle ausgewerteten Regeln zeigt:

<Frame>
  <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=a132f7927273e0eaf8bdb84065bbcbf4" style={{ borderRadius: '0.5rem' }} width="1518" height="1082" data-path="images/blocking_rules_scan_details.png" />
</Frame>

2. In den Details einzelner Issues sehen Sie, welche Blocking Rules ausgelöst wurden:

<Frame>
  <img src="https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?fit=max&auto=format&n=uxLuQR4653lM43Tj&q=85&s=433dd74d99f714b953608a1e59ac973a" style={{ borderRadius: '0.5rem' }} width="3072" height="1124" data-path="images/blocking_rule_issue_details.png" />
</Frame>

So erkennen Sie, welche Regeln sich auf Ihre Scans und einzelne Issues auswirken und weshalb bestimmte Änderungen blockiert werden.

## Beispiele

<AccordionGroup>
  <Accordion title="Unsichere Kryptografie blockieren" icon="lock">
    **Regeltyp:** Code-Schwachstelle

    Erstellen Sie eine Regel, die auf CWE-326 (unzureichende Verschlüsselungsstärke) und CWE-327 (Verwendung eines gebrochenen oder riskanten kryptografischen Algorithmus) mit der Dringlichkeit "Kritisch" abzielt, um die Verwendung schwacher Verschlüsselung zu verhindern.
  </Accordion>

  <Accordion title="Code Quality durchsetzen" icon="code">
    **Regeltyp:** Code Vulnerability

    Wählen Sie **Code Quality** als Issue-Typ und erstellen Sie eine Regel für CWE-398 (Indicator of Poor Code Quality) und CWE-477 (Use of Obsolete Functions) mit der Dringlichkeit "Medium", um Ihre Code-Standards durchzusetzen.
  </Accordion>

  <Accordion title="Kritische Abhängigkeitslücken blockieren" icon="box">
    **Regeltyp:** Dependency Vulnerability

    Erstellen Sie eine Regel mit den Dringlichkeitsstufen "Critical" und "High". Sie blockiert automatisch alle Pull Requests, die Abhängigkeiten mit kritischen oder schwerwiegenden Schwachstellen einführen, und schützt so Ihre Software-Lieferkette vor bekanntermaßen anfälligen Paketen.
  </Accordion>

  <Accordion title="Abhängigkeiten nach CVSS-Bereich blockieren" icon="gauge">
    **Regeltyp:** Dependency Vulnerability

    Erstellen Sie eine Regel, die nach CVSS-Score filtert, z. B. 7,0 bis 10,0, um Pull Requests zu blockieren, die verwundbare Abhängigkeiten innerhalb dieses Score-Bereichs einführen.
  </Accordion>
</AccordionGroup>

## Best Practices

<Card title="Implementierungstipps" icon="lightbulb">
  * Beginnen Sie mit den wesentlichen Regeln und erweitern Sie sie schrittweise
  * Beginnen Sie bei **Dependency Vulnerability Rules** nur mit dem Schweregrad Critical oder einem gezielten CVSS-Bereich und erweitern Sie die Regel, sobald sich Ihr Team darauf eingestellt hat
  * Konzentrieren Sie sich bei **Code Vulnerability Rules** zunächst auf die folgenreichsten CWEs (z. B. Injection- und Authentifizierungsfehler)
  * Regelmäßige Überprüfung und Aktualisierungen
  * Klare Dokumentation und Schulung des Teams
  * Feedback und Zusammenarbeit fördern
  * Strategische Nutzung von Dringlichkeitsstufen
  * Berücksichtigen Sie Projekttags, wenn dieselbe Regel eine Gruppe verwandter Projekte abdecken soll
</Card>

## Fehlerbehebung

<Warning>Wenn ein Pull Request unerwartet blockiert ist, überprüfen Sie zuerst die aktiven Regeln und deren Konfigurationen.</Warning>

<AccordionGroup>
  <Accordion title="Häufige Probleme" icon="bug">
    * Unerwartetes Blockierverhalten
    * Fehlerhafte Zieldefinition der Regel
    * Probleme mit dem Projekt-Scope
  </Accordion>

  <Accordion title="Schritte zur Behebung" icon="wrench">
    * Überprüfen Sie die Regelkonfigurationen
    * CWE-Zielsetzung überprüfen
    * Projekteinstellungen bestätigen
    * Bei Bedarf den Support kontaktieren
  </Accordion>
</AccordionGroup>
