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

# Reglas de bloqueo

> Las reglas de bloqueo ayudan a hacer cumplir los estándares de seguridad y calidad al evitar que el código no conforme se fusione.

## Resumen

### Qué hace

Las reglas de bloqueo permiten definir las condiciones que impiden fusionar una pull request. De este modo, la base de código cumple los estándares de seguridad y calidad de la organización y se evita la incorporación de cambios que puedan resultar arriesgados o no conformes.

Puedes crear dos tipos de reglas de bloqueo:

* **Reglas de vulnerabilidades de código**: Bloquean PR en función de las vulnerabilidades, los hallazgos de calidad del código o ambos
* **Reglas de vulnerabilidades de dependencias**: Bloquean PR en función de las dependencias vulnerables detectadas mediante el escaneo de SCA

### Para quién es

Las reglas de bloqueo están diseñadas principalmente para:

* Equipos de desarrollo
* Gestores de proyecto
* Profesionales de la seguridad

Esta función resulta especialmente útil para las organizaciones con requisitos normativos estrictos o que desarrollan aplicaciones críticas en las que la calidad y la seguridad son esenciales.

## Características y beneficios principales

<AccordionGroup>
  <Accordion title="Hacer cumplir los estándares de codificación" icon="shield-check">
    Define reglas basadas en categorías CWE para bloquear las pull requests que introduzcan determinados tipos de vulnerabilidades o problemas de calidad.
  </Accordion>

  <Accordion title="Personalizar niveles de urgencia" icon="signal">
    Asigna niveles de urgencia (por ejemplo, crítico, alto, medio, bajo) a diferentes tipos de problemas, permitiéndote priorizar y gestionarlos en consecuencia.
  </Accordion>

  <Accordion title="Filtrar dependencias por CVSS" icon="gauge">
    En las reglas de vulnerabilidades de dependencias, define un intervalo inclusivo de puntuaciones CVSS para bloquear las dependencias vulnerables que se encuentren dentro de él.
  </Accordion>

  <Accordion title="Reglas con alcance de proyectos y etiquetas" icon="folder-tree">
    Aplica reglas de bloqueo a proyectos específicos, etiquetas de proyecto o a toda tu organización, dándote un control detallado sobre qué proyectos están sujetos a qué reglas.
  </Accordion>

  <Accordion title="Gestión de reglas" icon="gear">
    Crea, edita y elimina fácilmente las reglas de bloqueo a través de una interfaz fácil de usar, asegurando que tus normas se mantengan actualizadas con tus requisitos cambiantes.
  </Accordion>

  <Accordion title="Activar o desactivar reglas" icon="toggle-on">
    Cambia el estado de las reglas para activarlas o desactivarlas temporalmente sin perder su configuración.
  </Accordion>
</AccordionGroup>

## Tipos de reglas

Las reglas de bloqueo admiten dos tipos:

<CardGroup cols={2}>
  <Card title="Vulnerabilidad en el código" icon="code">
    Bloquea las pull requests basadas en **vulnerabilidades de seguridad**, **hallazgos de calidad de código** o ambos.

    Configuración:

    * Selecciona un tipo de hallazgo: Todos, Vulnerabilidades o Calidad del código
    * Selecciona categorías CWE concretas
    * Establece niveles de urgencia o gravedad

    Utilízalo para evitar problemas como la inyección SQL, XSS, criptografía insegura y otras vulnerabilidades a nivel de código.
  </Card>

  <Card title="Vulnerabilidad de dependencia" icon="box">
    Bloquea pull requests en función de las **dependencias vulnerables** detectadas mediante el análisis de composición de software (SCA).

    Configuración:

    * Establece niveles de urgencia o gravedad (crítico, alto, medio o bajo)
    * O bien establece un intervalo inclusivo de puntuaciones CVSS entre 0,0 y 10,0

    Utiliza esto para evitar la introducción de paquetes con vulnerabilidades de seguridad conocidas, asegurando que tu cadena de suministro siga siendo segura.
  </Card>
</CardGroup>

## Cómo funciona con GitHub

<Info>
  **Requisito previo**: Debes haber instalado y configurado la [aplicación de GitHub de Corgea](github) con los permisos necesarios en el repositorio.
</Info>

<Steps>
  <Step title="Envío de pull requests">
    El desarrollador envía una pull request con cambios en el código
  </Step>

  <Step title="Análisis automatizado">
    El sistema analiza los cambios según las reglas de bloqueo activas
  </Step>

  <Step title="Validación de reglas">
    Si se detectan infracciones, la pull request se bloquea automáticamente

    <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="Notificación al desarrollador">
    El desarrollador recibe información detallada sobre las infracciones de las reglas

    <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="Resolución">
    El desarrollador debe corregir las infracciones y marcarlas como Corregidas, o como Falsos Positivos o Riesgo Aceptado antes de permitir la fusión
  </Step>
</Steps>

## Cómo funciona con Azure DevOps

<Info>
  **Requisito previo**: Asegúrate de que la [integración de Azure DevOps](azure_devops) con Corgea esté configurada y de que tengas los permisos necesarios.
</Info>

<Steps>
  <Step title="Envío de pull requests">
    Un desarrollador envía una pull request con cambios de código en Azure DevOps.
  </Step>

  <Step title="Análisis automatizado">
    El sistema evalúa los cambios según las reglas de bloqueo activas configuradas en Corgea.
  </Step>

  <Step title="Validación de reglas">
    Si se detectan infracciones, la pull request se bloquea automáticamente.

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

    El desarrollador no puede fusionar la PR hasta que se resuelva.

    <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="Notificación al desarrollador">
    El desarrollador recibe un enlace a la página del escaneo de Corgea con información detallada sobre los hallazgos que han provocado el fallo.

    <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="Resolución">
    El desarrollador debe resolver las infracciones corrijéndolas o marcándolas como Falsos Positivos o Riesgo Aceptado antes de que la fusión pueda continuar.
  </Step>
</Steps>

## Guía de uso

### Creación de una nueva regla de bloqueo

<Steps>
  <Step title="Iniciar la creación">
    Haz clic en el botón "Añadir regla de bloqueo"
  </Step>

  <Step title="Elegir tipo de regla">
    Selecciona el tipo de regla:

    * **Vulnerabilidad de código**: Bloquea pull requests según los hallazgos de SAST
    * **Vulnerabilidad de dependencia**: Bloquea pull requests según los hallazgos de 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="Información básica">
    Introduce el nombre y la descripción de la regla
  </Step>

  <Step title="Configurar ajustes">
    Para las reglas de **Vulnerabilidad del código**, elige un **Tipo de hallazgo** para aplicarlas a **Todos** los hallazgos, solo a las **Vulnerabilidades** o solo a los hallazgos de **Calidad del código**. **Todos** es el valor predeterminado y conserva el comportamiento de las reglas existentes. Después, selecciona niveles de urgencia (crítico, alto, medio o bajo), categorías CWE o ambas opciones. Debes definir al menos una para que la regla sea válida.

    Para las reglas de **Vulnerabilidad de Dependencia**: Elige si filtrar por gravedad o por puntuación CVSS. Selecciona los niveles de urgencia (Crítico, Alto, Medio o Bajo), o introduce una puntuación CVSS mínima y máxima de 0,0 a 10,0 para bloquear dependencias vulnerables dentro de ese rango inclusivo.
  </Step>

  <Step title="Definir el ámbito">
    Selecciona proyectos, etiquetas de proyecto o ambas opciones. La regla se aplica a los proyectos seleccionados directamente o que tengan alguna de las etiquetas seleccionadas. Si no eliges ningún proyecto ni etiqueta, se aplica a todos los proyectos.
  </Step>

  <Step title="Guardar">
    Revisa y haz clic en "Crear"
  </Step>
</Steps>

### Gestión de las reglas existentes

Usa la búsqueda para encontrar reglas por nombre o configuración, o usa el filtro de etiquetas de proyecto para mostrar las reglas que se aplican a proyectos con una etiqueta específica. En la tabla de reglas, la columna Proyectos muestra proyectos seleccionados y etiquetas de proyecto como chips; las reglas sin proyecto ni alcance de etiqueta muestran **Todos los proyectos**, y las listas de alcance más largas se agrupan detrás de una descripción sugerida **+N más**.

<Tabs>
  <Tab title="Editar una regla">
    1. Localiza la regla en la tabla
    2. Haz clic en "Editar"
    3. Modifica la configuración según sea necesario
    4. Haz clic en "Actualizar" para guardar
  </Tab>

  <Tab title="Alternar estado">
    1. Busca la regla en la tabla
    2. Haz clic en "Alternar estado"
    3. Confirma el cambio de estado
  </Tab>

  <Tab title="Ver detalles">
    1. Haz clic en el nombre de la regla
    2. Revisa toda la información
    3. Cierra el cuadro de diálogo cuando termines
  </Tab>
</Tabs>

### Consultar las reglas aplicadas a los escaneos

Puedes ver las reglas de bloqueo que se aplican a tus escaneos en dos lugares:

1. En la página de detalles del escaneo, verás una sección de "Reglas de bloqueo" que muestra todas las reglas evaluadas:

<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. En cada hallazgo, puedes consultar las reglas de bloqueo activadas desde la vista de detalles:

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

Esto permite saber qué reglas afectan a cada escaneo y hallazgo, y por qué se han bloqueado determinados cambios.

## Ejemplos

<AccordionGroup>
  <Accordion title="Bloqueo de criptografía insegura" icon="lock">
    **Tipo de regla:** Vulnerabilidad del código

    Crea una regla para CWE-326 (solidez de cifrado inadecuada) y CWE-327 (uso de algoritmos criptográficos rotos o de riesgo), con urgencia "Crítica", para impedir el uso de cifrado débil.
  </Accordion>

  <Accordion title="Aplicación de la calidad del código" icon="code">
    **Tipo de regla:** Vulnerabilidad del código

    Selecciona **Calidad del código** como tipo de hallazgo. Después, crea una regla para CWE-398 (indicador de código de baja calidad) y CWE-477 (uso de funciones obsoletas), con urgencia "Media", para mantener los estándares del código.
  </Accordion>

  <Accordion title="Bloqueo de vulnerabilidades críticas de dependencias" icon="box">
    **Tipo de regla:** Vulnerabilidad de dependencia

    Crea una regla con los niveles de urgencia "Crítico" y "Alto" seleccionados para bloquear automáticamente cualquier pull request que introduzca dependencias con vulnerabilidades críticas o de alta gravedad. Esto garantiza que tu cadena de suministro siga siendo segura y evita que los paquetes vulnerables conocidos entren en tu base de código.
  </Accordion>

  <Accordion title="Bloquear dependencias por intervalo CVSS" icon="gauge">
    **Tipo de regla:** Vulnerabilidad de dependencia

    Crea una regla que filtre por puntuación CVSS, como de 7.0 a 10.0, para bloquear las pull requests que introducen dependencias vulnerables dentro de ese rango de puntuación.
  </Accordion>
</AccordionGroup>

## Mejores prácticas

<Card title="Consejos de implementación" icon="lightbulb">
  * Empieza con las reglas esenciales y ve ampliando poco a poco
  * Para **reglas de vulnerabilidad de dependencia**, comienza solo con gravedad crítica o un rango CVSS enfocado, y luego amplía a medida que tu equipo se ajuste
  * Para **reglas de vulnerabilidad de código**, céntrate primero en los CWEs más impactantes (por ejemplo, fallos de inyección, problemas de autenticación)
  * Revisión y actualizaciones periódicas
  * Documentación clara y formación del equipo
  * Fomenta los comentarios y la colaboración
  * Uso estratégico de los niveles de urgencia
  * Considera las etiquetas de proyecto cuando la misma regla debería cubrir un grupo de proyectos relacionados
</Card>

## Resolución de problemas

<Warning>Si una pull request se bloquea inesperadamente, verifica primero las reglas activas y sus configuraciones.</Warning>

<AccordionGroup>
  <Accordion title="Problemas habituales" icon="bug">
    * Comportamiento inesperado de bloqueo
    * Problemas de segmentación de reglas
    * Problemas en el alcance del proyecto
  </Accordion>

  <Accordion title="Pasos de resolución" icon="wrench">
    * Configuraciones de reglas de comprobación
    * Verificar la orientación de CWE
    * Confirmar la configuración del proyecto
    * Contactar con el soporte si es necesario
  </Accordion>
</AccordionGroup>
