> ## 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.

# Règles de blocage

> Les règles de blocage contribuent à faire respecter les normes de sécurité et de qualité en empêchant la fusion de code non conforme.

## Aperçu

### Fonctionnement

Les règles de blocage sont de puissantes garde-fous qui permettent de définir des conditions spécifiques dans lesquelles les pull requests doivent être bloquées pour ne pas être fusionnées. Cela permet de garantir que votre base de code respecte les normes de sécurité et de qualité de votre organisation en empêchant la fusion de modifications de code potentiellement risquées ou non conformes.

Vous pouvez créer deux types de règles de blocage :

* **Règles de vulnérabilité du code**: bloquent les pull requests selon les vulnérabilités, les problèmes de qualité du code ou les deux
* **Règles de vulnérabilité des dépendances**: bloquent les pull requests selon les dépendances vulnérables détectées par le scan SCA

### Pour qui c’est

Les règles de blocage sont principalement conçues pour :

* Équipes de développement
* Chefs de projet
* Professionnels de la sécurité

Cette fonctionnalité est particulièrement utile pour les organisations ayant des exigences strictes en matière de conformité ou celles travaillant sur des applications critiques où la qualité du code et la sécurité sont primordiales.

## Caractéristiques clés et avantages

<AccordionGroup>
  <Accordion title="Appliquer les normes de codage" icon="shield-check">
    Définir des règles basées sur les Common Weakness Enumerations (CWE) pour bloquer les pull requests introduisant des types spécifiques de vulnérabilités ou des problèmes de qualité de code.
  </Accordion>

  <Accordion title="Personnaliser les niveaux d’urgence" icon="signal">
    Attribuez des niveaux d’urgence (par exemple, critique, élevé, moyen, bas) à différents types de problèmes, ce qui vous permet de les prioriser et de les gérer en conséquence.
  </Accordion>

  <Accordion title="Filtrer les dépendances par score CVSS" icon="gauge">
    Pour les règles de vulnérabilité des dépendances, définissez une plage inclusive de scores CVSS afin de bloquer les dépendances vulnérables selon leur score.
  </Accordion>

  <Accordion title="Périmètre par projet et tag" icon="folder-tree">
    Appliquez des règles de blocage à des projets spécifiques, à des tags de projet, ou à l’ensemble de votre organisation, ce qui vous donne un contrôle granulaire sur quels projets sont soumis à quelles règles.
  </Accordion>

  <Accordion title="Gestion des règles" icon="gear">
    Créez, modifiez et supprimez facilement des règles de blocage grâce à une interface conviviale, afin de garantir que vos règles restent à jour avec vos besoins évolutifs.
  </Accordion>

  <Accordion title="Activation/désactivation des règles" icon="toggle-on">
    Activez ou désactivez temporairement les règles de blocage selon vos besoins, sans perdre leur configuration.
  </Accordion>
</AccordionGroup>

## Types de règles

Les règles de blocage prennent en charge deux types distincts pour offrir une couverture de sécurité complète :

<CardGroup cols={2}>
  <Card title="Vulnérabilité du code" icon="code">
    Bloque les pull requests selon les **vulnérabilités de sécurité**, les **problèmes de qualité du code** ou les deux.

    Configurer par :

    * Sélection d’un type de problème : Tous, vulnérabilités ou qualité du code
    * Sélection de catégories CWE (Common Weakness Enumeration) précises
    * Définir les niveaux d’urgence/sévérité

    Utilisez ce type de règle pour empêcher les injections SQL, les XSS, la cryptographie non sécurisée et d’autres vulnérabilités du code.
  </Card>

  <Card title="Vulnérabilité de dépendance" icon="box">
    Bloque les pull requests selon les **dépendances vulnérables** détectées par l’analyse de la composition logicielle (SCA).

    Configurer par :

    * Définir les niveaux d’urgence/gravité (Critique, Élevé, Moyen, Bas)
    * Ou définition d’une plage inclusive de scores CVSS comprise entre 0,0 et 10,0

    Utilisez ce type de règle pour empêcher l’introduction de paquets présentant des vulnérabilités connues et protéger votre chaîne d’approvisionnement.
  </Card>
</CardGroup>

## Comment cela fonctionne avec GitHub

<Info>
  **Prérequis** Vous devez avoir installé et configuré la [Corgea GitHub App](github) avec les autorisations de dépôt requises.
</Info>

<Steps>
  <Step title="Soumission de pull request">
    Le développeur soumet une pull request avec des modifications de code
  </Step>

  <Step title="Analyse automatisée">
    Le système analyse les modifications du code au regard des règles de blocage actives
  </Step>

  <Step title="Validation des règles">
    Si des violations sont détectées, la pull request est automatiquement bloquée

    <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="Notification au développeur">
    Le développeur reçoit une notification détaillée concernant les violations des règles

    <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="Résolution">
    Avant que la fusion ne soit autorisée, le développeur doit corriger les violations et les marquer comme corrigées, ou les classer comme faux positifs ou risques acceptés
  </Step>
</Steps>

## Comment cela fonctionne avec Azure DevOps

<Info>
  **Prérequis** Assurez-vous que l’[intégration Azure DevOps](azure_devops) avec Corgea est configurée et que vous disposez des autorisations nécessaires.
</Info>

<Steps>
  <Step title="Soumission de pull request">
    Un développeur soumet une pull request avec des modifications de code dans Azure DevOps.
  </Step>

  <Step title="Analyse automatisée">
    Le système évalue les modifications du code selon les règles de blocage actives définies dans Corgea.
  </Step>

  <Step title="Validation des règles">
    Si des violations sont détectées, la pull request est automatiquement bloquée.

    <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>

    Le développeur ne peut pas fusionner la pull request tant que les violations ne sont pas résolues.

    <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="Notification au développeur">
    Le développeur reçoit un lien vers les informations détaillées sur les problèmes ayant entraîné l’échec, dans la page de scan 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="Résolution">
    Le développeur doit résoudre les violations en les corrigeant ou en les marquant comme faux positifs ou risque accepté avant que la fusion puisse se poursuivre.
  </Step>
</Steps>

## Guide d’utilisation

### Création d’une nouvelle règle de blocage

<Steps>
  <Step title="Commencer la création">
    Cliquez sur le bouton « Ajouter une règle de blocage »
  </Step>

  <Step title="Choisir le type de règle">
    Sélectionnez le type de règle de blocage :

    * **Vulnérabilité du code**: bloque les pull requests selon les problèmes de sécurité du code (résultats SAST)
    * **Vulnérabilité de dépendance**: bloque les pull requests selon les dépendances vulnérables (résultats SCA)

    <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="Informations de base">
    Saisissez le nom et la description de la règle
  </Step>

  <Step title="Configurer les paramètres">
    Pour les règles de **vulnérabilité du code** : choisissez un **type de problème** afin d’appliquer la règle à **Tous** les résultats, uniquement aux **Vulnérabilités** ou uniquement aux résultats de **Qualité du code**. **Tous** est la valeur par défaut et préserve le comportement des règles existantes. Sélectionnez ensuite les niveaux d’urgence (critique, élevé, moyen ou faible) et/ou les CWE ciblées ; au moins un de ces critères est requis.

    Pour les règles de **vulnérabilité des dépendances** : choisissez un filtrage par sévérité ou par score CVSS. Sélectionnez les niveaux d’urgence (critique, élevé, moyen ou faible), ou saisissez un score CVSS minimal et maximal compris entre 0,0 et 10,0 afin de bloquer les dépendances vulnérables dans cette plage inclusive.
  </Step>

  <Step title="Définir le périmètre">
    Choisissez les projets concernés et/ou les tags de projet (optionnel). Une règle s’applique lorsqu’un projet est sélectionné directement ou possède un tag sélectionné. Si aucun projet ou tag n’est sélectionné, la règle s’applique à tous les projets.
  </Step>

  <Step title="Sauvegarder">
    Révisez et cliquez sur « Créer »
  </Step>
</Steps>

### Gestion des règles existantes

Recherchez les règles par nom ou par paramètre, ou utilisez le filtre de tags de projet pour afficher celles qui s’appliquent aux projets portant un tag donné. Dans le tableau des règles, la colonne Projets affiche les projets et tags sélectionnés sous forme de badges. Les règles sans périmètre de projet ou de tag indiquent **Tous les projets** ; les longues listes sont regroupées derrière une infobulle **+N autres**.

<Tabs>
  <Tab title="Règle de modification">
    1. Localiser la règle dans le tableau
    2. Cliquez sur le bouton « Modifier »
    3. Modifier les paramètres si nécessaire
    4. Cliquez sur « Mettre à jour » pour enregistrer
  </Tab>

  <Tab title="Basculer l’état">
    1. Trouver la règle dans le tableau
    2. Cliquez sur « Basculer le statut »
    3. Confirmer le changement de statut
  </Tab>

  <Tab title="Voir les détails">
    1. Cliquez sur le nom de la règle
    2. Consultez les informations complètes
    3. Fermez le modal une fois terminé
  </Tab>
</Tabs>

### Afficher les règles appliquées aux scans

Vous pouvez consulter les règles de blocage qui s’appliquent à vos scans à deux endroits :

1. Sur la page des détails du scan, vous verrez une section « Règles de blocage » affichant toutes les règles évaluées :

<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. Dans les détails d’un problème, vous pouvez voir les règles de blocage qu’il a déclenchées :

<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>

Cela facilite la compréhension des règles qui affectent vos scans et des problèmes spécifiques, vous aidant à identifier pourquoi certains changements peuvent être bloqués.

## Exemples

<AccordionGroup>
  <Accordion title="Blocage de la cryptographie non sécurisée" icon="lock">
    **Type de règle :** Vulnérabilité du code

    Créez une règle ciblant CWE-326 (puissance de chiffrement insuffisante) et CWE-327 (utilisation d’un algorithme cryptographique cassé ou risqué), avec une urgence « critique », afin d’empêcher l’utilisation d’un chiffrement faible.
  </Accordion>

  <Accordion title="Faire respecter la qualité du code" icon="code">
    **Type de règle :** Vulnérabilité du code

    Sélectionner **Qualité du code** en tant que type de problème, puis établissez une règle pour CWE-398 (Indicateur de mauvaise qualité du code) et CWE-477 (Utilisation de fonctions obsolètes) avec une urgence « Moyenne » pour maintenir les normes de code.
  </Accordion>

  <Accordion title="Blocage des vulnérabilités critiques de dépendance" icon="box">
    **Type de règle :** Vulnérabilité de dépendance

    Créez une règle avec les niveaux d’urgence « Critique » et « Élevé » pour bloquer automatiquement toute pull request qui introduit des dépendances présentant des vulnérabilités critiques ou de sévérité élevée. Vous protégez ainsi votre chaîne d’approvisionnement contre les paquets vulnérables connus.
  </Accordion>

  <Accordion title="Blocage des dépendances par plage CVSS" icon="gauge">
    **Type de règle :** Vulnérabilité de dépendance

    Créez une règle qui filtre par CVSS comme 7.0 à 10.0, pour bloquer les pull requests introduisant des dépendances vulnérables dans cette plage de score.
  </Accordion>
</AccordionGroup>

## Bonnes pratiques

<Card title="Conseils d’implémentation" icon="lightbulb">
  * Commencez par les règles essentielles et développez progressivement
  * Pour les **règles de vulnérabilité des dépendances**, commencez par la sévérité critique uniquement ou par une plage CVSS ciblée, puis élargissez les critères à mesure que votre équipe s’adapte
  * Pour **Règles de vulnérabilité de code**, concentrez-vous d’abord sur les CWE les plus impactants (par exemple, failles d’injection, problèmes d’authentification)
  * Revues régulières et mises à jour
  * Documentation claire et formation d’équipe
  * Encourager les retours et la collaboration
  * Utilisation stratégique des niveaux d’urgence
  * Considérez les tags de projet alors que la même règle devrait couvrir un groupe de projets liés
</Card>

## Dépannage

<Warning>Si une pull request est bloquée de façon inattendue, vérifiez d’abord les règles actives et leurs configurations.</Warning>

<AccordionGroup>
  <Accordion title="Questions courantes" icon="bug">
    * Comportement de blocage inattendu
    * Problèmes de ciblage par règles
    * Problèmes liés à la portée du projet
  </Accordion>

  <Accordion title="Étapes de résolution" icon="wrench">
    * Vérifier les configurations des règles
    * Vérifier le ciblage des CWE
    * Confirmer les paramètres du projet
    * Contactez le support si besoin
  </Accordion>
</AccordionGroup>
