Las reglas de bloqueo son barreras de control que definen qué hallazgos deben hacer fallar una comprobación de pull request o un pipeline de CI. Así se garantiza que la base de código cumpla los estándares de seguridad y calidad de la organización.Puedes crear tres 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
Reglas de License Compliance: Bloquean dependencias con licencias SPDX concretas o familias de licencias
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.
Define reglas basadas en categorías CWE para bloquear las pull requests que introduzcan determinados tipos de vulnerabilidades o problemas de calidad.
Personalizar niveles de urgencia
Asigna niveles de urgencia (por ejemplo, crítico, alto, medio, bajo) a diferentes tipos de problemas, permitiéndote priorizar y gestionarlos en consecuencia.
Filtrar dependencias por CVSS
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.
Filtrar dependencias por alcanzabilidad
En las reglas de Dependency Vulnerability que se aplican a CI, limita el bloqueo a las dependencias cuyo código vulnerable es realmente alcanzable desde tu aplicación, de modo que los paquetes sin usar o no alcanzables no hagan fallar tu pipeline.
Aplicar la política de licencias
Bloquea dependencias por identificadores SPDX concretos o por las familias de licencias Copyleft, Permissive y Commercial.
Reglas con alcance de proyectos y etiquetas
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.
Gestión de reglas
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.
Activar o desactivar reglas
Cambia el estado de las reglas para activarlas o desactivarlas temporalmente sin perder su configuración.
Las reglas de bloqueo admiten tres tipos distintos para una cobertura de seguridad completa:
Code Vulnerability
Bloquea las pull requests basadas en vulnerabilidades de seguridad, hallazgos de calidad de código o ambos.Configuración:
Selecciona un tipo de hallazgo: All, Vulnerabilities o Code Quality
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.
Dependency Vulnerability
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 (Critical, High, Medium, Low)
O bien establece un intervalo inclusivo de puntuaciones CVSS entre 0,0 y 10,0
Opcionalmente, limita por alcanzabilidad (solo reglas de CI)
Utiliza esto para evitar la introducción de paquetes con vulnerabilidades de seguridad conocidas, asegurando que tu cadena de suministro siga siendo segura.
License Compliance
Bloquea pull requests o pipelines de CI cuando una dependencia usa una licencia denegada.Configuración:
Selecciona una o más familias de licencias: Copyleft, Permissive o Commercial
Introduce identificadores SPDX concretos, como AGPL-3.0
Úsalo para aplicar la política de licencias open source y comerciales de tu organización.
Requisito previo: Asegúrate de que la integración de Azure DevOps con Corgea esté configurada y de que tengas los permisos necesarios.
1
Envío de pull requests
Un desarrollador envía una pull request con cambios de código en Azure DevOps.
2
Análisis automatizado
El sistema evalúa los cambios según las reglas de bloqueo activas configuradas en Corgea.
3
Validación de reglas
Si se detectan infracciones, la pull request se bloquea automáticamente.
El desarrollador no puede fusionar la PR hasta que se resuelva.
4
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.
5
Resolución
El desarrollador debe resolver las infracciones corrigiéndolas o marcándolas como False Positive o Accepted Risk antes de que la fusión pueda continuar.
Code Vulnerability: Bloquea pull requests según los hallazgos de SAST
Dependency Vulnerability: Bloquea pull requests según los hallazgos de SCA
License Compliance: Bloquea dependencias según licencias SPDX denegadas o familias de licencias
3
Información básica
Introduce el nombre y la descripción de la regla y elige Applies To:
Pull Requests aplica automáticamente la regla en las comprobaciones de pull request.
CI aplica la regla solo cuando un pipeline la nombra con corgea scan --block-on <slug>. Las reglas de CI no bloquean pull requests.
Las reglas nuevas usan Pull Requests por defecto. Corgea genera el slug a partir del nombre de la regla y lo muestra en la lista de reglas.Las reglas de pull request solo publican comentarios sobre hallazgos que requieren una acción. Corgea omite los comentarios de hallazgos confirmados como no alcanzables, hallazgos retenidos por ser falsos positivos o resultados de lenguajes no compatibles, y hallazgos en rutas ignoradas por el proyecto. Estos hallazgos siguen disponibles en Corgea para revisarlos, pero no bloquean la pull request.
4
Configurar ajustes
Para las reglas de Code Vulnerability, elige un Issue Type para aplicarlas a All los hallazgos, solo a Vulnerabilities o solo a los hallazgos de Code Quality. All es el valor predeterminado y conserva el comportamiento de las reglas existentes. Después, selecciona niveles de urgencia (Critical, High, Medium o Low), categorías CWE o ambas opciones. Debes definir al menos una para que la regla sea válida.Para las reglas de Dependency Vulnerability: Elige si filtrar por gravedad o por puntuación CVSS. Selecciona los niveles de urgencia (Critical, High, Medium o Low), 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. Si la regla se aplica a CI, también puedes seleccionar uno o más estados de Alcanzabilidad para limitarla aún más; consulta Filtrado por alcanzabilidad.Para las reglas de License Compliance: Selecciona al menos una familia de licencias denegada (Copyleft, Permissive o Commercial) o introduce uno o más identificadores SPDX. Una dependencia se bloquea cuando alguna licencia notificada coincide con una familia seleccionada o con un ID concreto.
5
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.
Usa la búsqueda para encontrar reglas por nombre o configuración, o filtra la lista por etiqueta de proyecto o por el destino de Applies To. La tabla de reglas muestra el slug de cada regla en la columna ID y presenta el alcance del proyecto, el tipo de regla y el destino Pull Requests o CI en Triggers On. Selecciona un slug para copiarlo y usarlo en un comando de CI. Las reglas sin alcance de proyecto o etiqueta se aplican a todos los proyectos, y las listas de alcance más largas se agrupan detrás de un tooltip +N more.
Crea una regla activa con Applies To establecido en CI y pasa su slug al comando de escaneo. Nombra las reglas según la condición que las dispara — por ejemplo criticals, no no-criticals — para que --block-on se lea como una afirmación directa. --block-on requiere Corgea CLI 1.10.0 o posterior.
corgea scan --block-on criticals
Para aplicar varias reglas de CI, proporciona sus slugs como una lista separada por comas. El comando falla cuando un hallazgo incumple cualquiera de las reglas nombradas. Un slug desconocido, una regla inactiva o una regla que se aplica a pull requests se tratan como error de configuración y no se omiten. --block-on solo es compatible con el escáner BLAST y no se puede combinar con --fail ni --fail-on.
En la mayoría de los proyectos, casi ninguna dependencia vulnerable se ejecuta realmente desde tu código. El filtrado por alcanzabilidad permite que una regla de Dependency Vulnerability bloquee solo los hallazgos que importan, de modo que una CVE crítica en un paquete que nunca invocas no haga fallar tu pipeline.
Solo disponible para reglas de CI La alcanzabilidad se analiza en los escaneos que inicias tú mismo con corgea scan, no en los que se activan automáticamente al abrir una pull request. Configura Applies To como CI para usar este filtro; la opción está oculta en las reglas de Pull Request. Después, referencia la regla desde tu pipeline con corgea scan --block-on <slug>.
Requisito previo La alcanzabilidad requiere que AI-Native SCA esté habilitado en tu organización. Sin esa opción no se analiza ninguna dependencia, por lo que una regla que use este filtro nunca bloqueará nada. El editor de reglas te avisa cuando la opción está desactivada.
Selecciona uno o más de los siguientes estados:
Estado
Significado
Reachable
La función vulnerable es alcanzable desde el código de tu aplicación.
Not Reachable
La dependencia se usa, pero la función vulnerable no es alcanzable.
Unused Dependency
La dependencia está declarada pero no se usa en ninguna parte del código.
Unknown
La dependencia se analizó, pero no se pudo determinar la alcanzabilidad.
El filtro de alcanzabilidad se combina con el filtro de gravedad, CVSS o Malicious en lugar de sustituirlo, por lo que un hallazgo debe coincidir con ambos. Una regla configurada con gravedad Critical y Reachable bloquea únicamente las vulnerabilidades críticas que además son alcanzables. Dejar la alcanzabilidad vacía mantiene el comportamiento actual de la regla, que bloquea con independencia de la alcanzabilidad.
El análisis de alcanzabilidad se ejecuta después de que finalice el escaneo en sí, por lo que corgea scan sigue consultando hasta que termina en lugar de devolver un resultado de inmediato. El análisis finaliza una vez analizadas todas las dependencias directas, lo que normalmente tarda unos minutos y como máximo 30.Este filtro falla de forma permisiva. Si el análisis no puede completarse —se agota la ventana de 30 minutos, el análisis falla o AI-Native SCA está desactivado—, la regla no informa de ninguna violación en lugar de hacer fallar tu build. Un pipeline solo se bloquea por una alcanzabilidad que Corgea determinó realmente, nunca por un análisis ausente.
corgea scan falla de forma restrictiva al agotarse su propio plazo. Corgea CLI 1.13.0 y versiones posteriores permiten 35 minutos, holgadamente por encima de la ventana de análisis de 30 minutos. En una CLI anterior el plazo es de 15 minutos, que puede agotarse mientras Corgea sigue analizando y hacer fallar el pipeline. Actualiza la CLI o amplía el plazo con CORGEA_BLOCKING_RULES_TIMEOUT_SECONDS:
Tipo de regla: Code VulnerabilityCrea una regla para CWE-326 (Inadequate Encryption Strength) y CWE-327 (Use of a Broken or Risky Cryptographic Algorithm), con urgencia “Critical”, para impedir el uso de cifrado débil.
Aplicación de la calidad del código
Tipo de regla: Code VulnerabilitySelecciona Code Quality como tipo de hallazgo. Después, crea una regla para CWE-398 (Indicator of Poor Code Quality) y CWE-477 (Use of Obsolete Functions), con urgencia “Medium”, para mantener los estándares del código.
Bloqueo de vulnerabilidades críticas de dependencias
Tipo de regla: Dependency VulnerabilityCrea una regla con los niveles de urgencia “Critical” y “High” 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.
Bloquear dependencias por intervalo CVSS
Tipo de regla: Dependency VulnerabilityCrea 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.
Bloquear solo vulnerabilidades críticas alcanzables
Tipo de regla: Dependency Vulnerability — Se aplica a: CISelecciona los niveles de urgencia «Critical» y «High» y, a continuación, selecciona Reachable en Alcanzabilidad. La regla hace fallar un pipeline solo cuando una vulnerabilidad crítica o alta es alcanzable desde el código de tu aplicación, de modo que los paquetes sin usar o no alcanzables no interrumpan a los desarrolladores. Es una buena primera regla de alcanzabilidad, porque limita una regla de gravedad existente en lugar de ampliar lo que bloquea.
Bloquear dependencias sin usar
Tipo de regla: Dependency Vulnerability — Se aplica a: CISelecciona Unused Dependency en Alcanzabilidad por sí sola, sin filtro de gravedad ni de CVSS. La regla hace fallar un pipeline que introduce paquetes vulnerables que nada usa en el código, animando a los desarrolladores a eliminar la dependencia en lugar de actualizarla.
Bloquear dependencias Copyleft
Tipo de regla: License ComplianceSelecciona la familia Copyleft para bloquear dependencias cuyas licencias notificadas pertenecen a esa familia. Añade identificadores SPDX concretos cuando tu política necesite una lista de denegación más estrecha.
Empieza con las reglas esenciales y ve ampliando poco a poco
Para reglas de Dependency Vulnerability, comienza solo con gravedad Critical o un rango CVSS enfocado, y luego amplía a medida que tu equipo se ajuste
En las reglas de CI, añade un filtro de alcanzabilidad Reachable a una regla de gravedad existente para reducir el ruido sin debilitar la cobertura de las vulnerabilidades realmente explotables
Para reglas de Code Vulnerability, 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
Si una pull request se bloquea inesperadamente, verifica primero las reglas activas y sus configuraciones.
Problemas habituales
Comportamiento inesperado de bloqueo
Problemas de segmentación de reglas
Problemas en el alcance del proyecto
Pasos de resolución
Comprobar las configuraciones de las reglas
Verificar la orientación de CWE
Confirmar la configuración del proyecto
Contactar con el soporte si es necesario
¿Esta página le ayudó?
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"Corgea Documentation","colors":{"primary":"#F56C26","light":"#F56C26","dark":"#F56C26"},"logo":{"light":"https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/logo/logo.png?fit=max\u0026auto=format\u0026n=mpJUc1GyXtnVYEyT\u0026q=85\u0026s=f66a9484335ac4db5d5d92e12fd87af6","dark":"https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/logo/logo.png?fit=max\u0026auto=format\u0026n=mpJUc1GyXtnVYEyT\u0026q=85\u0026s=f66a9484335ac4db5d5d92e12fd87af6"},"favicon":"https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/logo/logo.png?fit=max\u0026auto=format\u0026n=mpJUc1GyXtnVYEyT\u0026q=85\u0026s=f66a9484335ac4db5d5d92e12fd87af6","background":{"color":{"light":"#fffdfd","dark":"#131313"}},"navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Support"}],"primary":{"type":"button","label":"Go to Corgea","href":"https://www.corgea.app"}},"footer":{"socials":{"twitter":"https://x.com/CorgeaInc","github":"https://github.com/Corgea","linkedin":"https://www.linkedin.com/company/corgea"}},"integrations":{"ga4":{"measurementId":"G-GGF9NXG1LJ"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Support"}],"primary":{"type":"button","label":"Go to Corgea","href":"https://www.corgea.app"}},"href":"introduction"},{"language":"de","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Support"}],"primary":{"type":"button","label":"Zu Corgea","href":"https://www.corgea.app"}},"href":"de/introduction"},{"language":"fr","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Assistance"}],"primary":{"type":"button","label":"Accéder à Corgea","href":"https://www.corgea.app"}},"href":"fr/introduction"},{"language":"es","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Soporte"}],"primary":{"type":"button","label":"Ir a Corgea","href":"https://www.corgea.app"}},"href":"es/introduction"},{"language":"ja","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"サポート"}],"primary":{"type":"button","label":"Corgeaを開く","href":"https://www.corgea.app"}},"href":"ja/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"corgea","hasAudioNarration":false,"actualSubdomain":"corgea","customDomains":["docs.corgea.app"],"gitSource":{"type":"github","owner":"corgea","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad8ec06f9199d9b39f39adc","collectionId":"781347d1-16c1-40fd-9849-07bbf0b0f333","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad8ec06f9199d9b39f39adc"},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ad8ec06f9199d9b39f39adc","clientVersion":"0.0.3926","searchFilterCounts":[{"language":"en","tag":"API Reference","count":77},{"language":"de","tag":"API-Referenz","count":77},{"language":"es","tag":"Referencia de la API","count":77},{"language":"fr","tag":"Référence API","count":77},{"language":"ja","tag":"APIリファレンス","count":75},{"language":"en","tag":"Documentation","count":57},{"language":"de","tag":"Dokumentation","count":55},{"language":"es","tag":"Documentación","count":55},{"language":"fr","tag":"Documentation","count":55},{"language":"ja","tag":"ドキュメント","count":55},{"language":"en","tag":"Core Features","count":30},{"language":"de","tag":"Kernfunktionen","count":30},{"language":"es","tag":"Funciones principales","count":30},{"language":"fr","tag":"Fonctionnalités principales","count":30},{"language":"ja","tag":"主な機能","count":30},{"language":"en","tag":"Integrations","count":15},{"language":"en","tag":"Issues","count":15},{"language":"de","tag":"Integrationen","count":15},{"language":"de","tag":"Issues","count":15},{"language":"es","tag":"Integraciones","count":15},{"language":"es","tag":"Hallazgos","count":15},{"language":"fr","tag":"Intégrations","count":15},{"language":"fr","tag":"Problèmes","count":15},{"language":"ja","tag":"インテグレーション","count":15},{"language":"ja","tag":"問題","count":15},{"language":"en","tag":"Security Scanning","count":10},{"language":"de","tag":"Sicherheitsscans","count":10},{"language":"es","tag":"Análisis de seguridad","count":10},{"language":"fr","tag":"Analyse de sécurité","count":10},{"language":"ja","tag":"セキュリティスキャン","count":10},{"language":"en","tag":"Authentication","count":8},{"language":"en","tag":"Teams","count":8},{"language":"de","tag":"Authentifizierung","count":8},{"language":"de","tag":"Teams","count":8},{"language":"es","tag":"Autenticación","count":8},{"language":"es","tag":"Equipos","count":8},{"language":"fr","tag":"Authentification","count":8},{"language":"fr","tag":"Équipes","count":8},{"language":"ja","tag":"認証","count":8},{"language":"ja","tag":"チーム","count":8},{"language":"en","tag":"Issue Management","count":7},{"language":"en","tag":"Notifications","count":7},{"language":"de","tag":"Issue-Management","count":7},{"language":"de","tag":"Benachrichtigungen","count":7},{"language":"es","tag":"Gestión de hallazgos","count":7},{"language":"es","tag":"Notificaciones","count":7},{"language":"fr","tag":"Gestion des résultats","count":7},{"language":"fr","tag":"Notifications","count":7},{"language":"ja","tag":"検出結果の管理","count":7},{"language":"ja","tag":"通知","count":7}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"es/blocking_rules","slug":"/es/blocking_rules","pageMetadata":{"title":"Reglas de bloqueo","description":"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.","href":"/es/blocking_rules"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,Info,OptimizedImage,Step,Steps,Tab,Table,Tabs,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`resumen`,children:`Resumen`}),`\n`,_jsx(Heading,{level:`3`,id:`qué-hace`,children:`Qué hace`}),`\n`,_jsx(_components.p,{children:`Las reglas de bloqueo son barreras de control que definen qué hallazgos deben hacer fallar una comprobación de pull request o un pipeline de CI. Así se garantiza que la base de código cumpla los estándares de seguridad y calidad de la organización.`}),`\n`,_jsx(_components.p,{children:`Puedes crear tres tipos de reglas de bloqueo:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reglas de vulnerabilidades de código`}),`: Bloquean PR en función de las vulnerabilidades, los hallazgos de calidad del código o ambos`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reglas de vulnerabilidades de dependencias`}),`: Bloquean PR en función de las dependencias vulnerables detectadas mediante el escaneo de SCA`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Reglas de License Compliance`}),`: Bloquean dependencias con licencias SPDX concretas o familias de licencias`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`para-quién-es`,children:`Para quién es`}),`\n`,_jsx(_components.p,{children:`Las reglas de bloqueo están diseñadas principalmente para:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Equipos de desarrollo`}),`\n`,_jsx(_components.li,{children:`Gestores de proyecto`}),`\n`,_jsx(_components.li,{children:`Profesionales de la seguridad`}),`\n`]}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`2`,id:`características-y-beneficios-principales`,children:`Características y beneficios principales`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Hacer cumplir los estándares de codificación`,icon:`shield-check`,id:`hacer-cumplir-los-estandares-de-codificacion`,children:_jsx(_components.p,{children:`Define reglas basadas en categorías CWE para bloquear las pull requests que introduzcan determinados tipos de vulnerabilidades o problemas de calidad.`})}),_jsx(Accordion,{title:`Personalizar niveles de urgencia`,icon:`signal`,id:`personalizar-niveles-de-urgencia`,children:_jsx(_components.p,{children:`Asigna niveles de urgencia (por ejemplo, crítico, alto, medio, bajo) a diferentes tipos de problemas, permitiéndote priorizar y gestionarlos en consecuencia.`})}),_jsx(Accordion,{title:`Filtrar dependencias por CVSS`,icon:`gauge`,id:`filtrar-dependencias-por-cvss`,children:_jsx(_components.p,{children:`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.`})}),_jsx(Accordion,{title:`Filtrar dependencias por alcanzabilidad`,icon:`diagram-project`,id:`filtrar-dependencias-por-alcanzabilidad`,children:_jsx(_components.p,{children:`En las reglas de Dependency Vulnerability que se aplican a CI, limita el bloqueo a las dependencias cuyo código vulnerable es realmente alcanzable desde tu aplicación, de modo que los paquetes sin usar o no alcanzables no hagan fallar tu pipeline.`})}),_jsx(Accordion,{title:`Aplicar la política de licencias`,icon:`file-contract`,id:`aplicar-la-politica-de-licencias`,children:_jsx(_components.p,{children:`Bloquea dependencias por identificadores SPDX concretos o por las familias de licencias Copyleft, Permissive y Commercial.`})}),_jsx(Accordion,{title:`Reglas con alcance de proyectos y etiquetas`,icon:`folder-tree`,id:`reglas-con-alcance-de-proyectos-y-etiquetas`,children:_jsx(_components.p,{children:`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.`})}),_jsx(Accordion,{title:`Gestión de reglas`,icon:`gear`,id:`gestion-de-reglas`,children:_jsx(_components.p,{children:`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.`})}),_jsx(Accordion,{title:`Activar o desactivar reglas`,icon:`toggle-on`,id:`activar-o-desactivar-reglas`,children:_jsx(_components.p,{children:`Cambia el estado de las reglas para activarlas o desactivarlas temporalmente sin perder su configuración.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`rule-types`,children:`Tipos de reglas`}),`\n`,_jsx(_components.p,{children:`Las reglas de bloqueo admiten tres tipos distintos para una cobertura de seguridad completa:`}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsxs(Card,{title:`Code Vulnerability`,icon:`code`,children:[_jsxs(_components.p,{children:[`Bloquea las pull requests basadas en `,_jsx(_components.strong,{children:`vulnerabilidades de seguridad`}),`, `,_jsx(_components.strong,{children:`hallazgos de calidad de código`}),` o ambos.`]}),_jsx(_components.p,{children:`Configuración:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Selecciona un tipo de hallazgo: All, Vulnerabilities o Code Quality`}),`\n`,_jsx(_components.li,{children:`Selecciona categorías CWE concretas`}),`\n`,_jsx(_components.li,{children:`Establece niveles de urgencia o gravedad`}),`\n`]}),_jsx(_components.p,{children:`Utilízalo para evitar problemas como la inyección SQL, XSS, criptografía insegura y otras vulnerabilidades a nivel de código.`})]}),_jsxs(Card,{title:`Dependency Vulnerability`,icon:`box`,children:[_jsxs(_components.p,{children:[`Bloquea pull requests en función de las `,_jsx(_components.strong,{children:`dependencias vulnerables`}),` detectadas mediante el análisis de composición de software (SCA).`]}),_jsx(_components.p,{children:`Configuración:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Establece niveles de urgencia o gravedad (Critical, High, Medium, Low)`}),`\n`,_jsx(_components.li,{children:`O bien establece un intervalo inclusivo de puntuaciones CVSS entre 0,0 y 10,0`}),`\n`,_jsxs(_components.li,{children:[`Opcionalmente, limita por `,_jsx(_components.a,{href:`#reachability`,children:`alcanzabilidad`}),` (solo reglas de CI)`]}),`\n`]}),_jsx(_components.p,{children:`Utiliza esto para evitar la introducción de paquetes con vulnerabilidades de seguridad conocidas, asegurando que tu cadena de suministro siga siendo segura.`})]}),_jsxs(Card,{title:`License Compliance`,icon:`file-contract`,children:[_jsx(_components.p,{children:`Bloquea pull requests o pipelines de CI cuando una dependencia usa una licencia denegada.`}),_jsx(_components.p,{children:`Configuración:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Selecciona una o más familias de licencias: Copyleft, Permissive o Commercial`}),`\n`,_jsxs(_components.li,{children:[`Introduce identificadores SPDX concretos, como `,_jsx(_components.code,{children:`AGPL-3.0`})]}),`\n`]}),_jsx(_components.p,{children:`Úsalo para aplicar la política de licencias open source y comerciales de tu organización.`})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`cómo-funciona-con-github`,children:`Cómo funciona con GitHub`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Requisito previo`}),`: Debes haber instalado y configurado la `,_jsx(_components.a,{href:`github`,children:`aplicación de GitHub de Corgea`}),` con los permisos necesarios en el repositorio.`]})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Envío de pull requests`,children:_jsx(_components.p,{children:`El desarrollador envía una pull request con cambios en el código`})}),_jsx(Step,{title:`Análisis automatizado`,children:_jsx(_components.p,{children:`El sistema analiza los cambios según las reglas de bloqueo activas`})}),_jsxs(Step,{title:`Validación de reglas`,children:[_jsx(_components.p,{children:`Si se detectan infracciones, la pull request se bloquea automáticamente`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=39013c8f8163f96d432b0f9bd4abbc05`,style:{borderRadius:`0.5rem`},\"data-og-width\":`2776`,width:`2776`,\"data-og-height\":`1034`,height:`1034`,\"data-path\":`images/blocking_rules_pr_blocked.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=a30829a8397256d24bf99e7714ff7e30 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=b52725944e1ae30ce07dba74e8a78478 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=e2e907951bbab46eafb1b64a6100d529 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=c14190cd9d640387e7fe0acef6794298 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=20a90628f1983af3321598d13d2379ce 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_blocked.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=e01f67509e07a92988339aeb7db7a652 2500w`})})]}),_jsxs(Step,{title:`Notificación al desarrollador`,children:[_jsx(_components.p,{children:`El desarrollador recibe información detallada sobre las infracciones de las reglas`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=4ac0e073341d12a425db9a4412e55b3e`,style:{borderRadius:`0.5rem`},\"data-og-width\":`3078`,width:`3078`,\"data-og-height\":`1834`,height:`1834`,\"data-path\":`images/blocking_rules_pr_details.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=993461300634968ea1133e1f1075f318 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=c26d7fbd66d8381ae4718b7ea7937556 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=8e23098e502c5bb6e23db507851b14d4 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=7fc794132c8af8c5aaaa5ba8568c32af 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=8614207f8ae7e8191e35f398b06b5d1f 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_pr_details.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=d53184a432c41abbf6718019d4b3315d 2500w`})})]}),_jsx(Step,{title:`Resolución`,children:_jsx(_components.p,{children:`El desarrollador debe corregir las infracciones y marcarlas como Fixed, o como False Positive o Accepted Risk antes de permitir la fusión`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`cómo-funciona-con-azure-devops`,children:`Cómo funciona con Azure DevOps`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Requisito previo`}),`: Asegúrate de que la `,_jsx(_components.a,{href:`azure_devops`,children:`integración de Azure DevOps`}),` con Corgea esté configurada y de que tengas los permisos necesarios.`]})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Envío de pull requests`,children:_jsx(_components.p,{children:`Un desarrollador envía una pull request con cambios de código en Azure DevOps.`})}),_jsx(Step,{title:`Análisis automatizado`,children:_jsx(_components.p,{children:`El sistema evalúa los cambios según las reglas de bloqueo activas configuradas en Corgea.`})}),_jsxs(Step,{title:`Validación de reglas`,children:[_jsx(_components.p,{children:`Si se detectan infracciones, la pull request se bloquea automáticamente.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=a85aa91d3cea8d9572197b863bafa4e4`,style:{borderRadius:`0.5rem`},\"data-og-width\":`966`,width:`966`,\"data-og-height\":`512`,height:`512`,\"data-path\":`images/azure_blocking_rules_pr_blocked.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=86916f9d80e1170fdac3a7a6581c11ed 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=1d9df77a9d453847fbbcde2404cb914c 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=0e07c663b2bd7279f941c7236fe8db5c 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=b195bcc896967e0a3af72fe6adf9bf08 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=d73a3cc8f4f2a5bcf17b500f2d33cada 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_blocking_rules_pr_blocked.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=b9b50b6d863396db4f51426e7c52e230 2500w`})}),_jsx(_components.p,{children:`El desarrollador no puede fusionar la PR hasta que se resuelva.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=1ecb01eb911476a19b0265a3b56dad72`,style:{borderRadius:`0.5rem`},\"data-og-width\":`2900`,width:`2900`,\"data-og-height\":`2630`,height:`2630`,\"data-path\":`images/azure-devops_merging_blocked.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=37a83ad08ba63540b6a96ded9fc2cded 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=f5abe6837c47c9a5301c45170b1cc4b2 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=af879f69a82cef36b02f696fd2567b2f 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=deff84406516ed9ad2994dbbc1008e3d 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=02811d94253b0fee59bffa0895e5ad6f 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure-devops_merging_blocked.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=3c2dfcc3cf1ee386008c1e32f8363064 2500w`})})]}),_jsxs(Step,{title:`Notificación al desarrollador`,children:[_jsx(_components.p,{children:`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.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=e5e94b8c2fec2b7abab7eb76a37533b1`,style:{borderRadius:`0.5rem`},\"data-og-width\":`2696`,width:`2696`,\"data-og-height\":`1556`,height:`1556`,\"data-path\":`images/azure_see_details_of_issues.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=b9e1574b516fa076e8dd9ea53b4ea330 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=02f81fbacf31ed9895533fc0769d1fbb 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=69bfc4d27b08d73c5b5390623f2a3199 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=da218b53310d9dc4bf4455e13c0b6a1f 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=694c295b80955a6b8023dfd6e153b8ab 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/azure_see_details_of_issues.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=c979dea0fc5967810d2feed2fe0c42ac 2500w`})})]}),_jsx(Step,{title:`Resolución`,children:_jsx(_components.p,{children:`El desarrollador debe resolver las infracciones corrigiéndolas o marcándolas como False Positive o Accepted Risk antes de que la fusión pueda continuar.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`guía-de-uso`,children:`Guía de uso`}),`\n`,_jsx(Heading,{level:`3`,id:`creación-de-una-nueva-regla-de-bloqueo`,children:`Creación de una nueva regla de bloqueo`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Iniciar la creación`,children:_jsx(_components.p,{children:`Haz clic en el botón “Add Blocking Rule”`})}),_jsxs(Step,{title:`Elegir tipo de regla`,children:[_jsx(_components.p,{children:`Selecciona el tipo de regla:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Code Vulnerability`}),`: Bloquea pull requests según los hallazgos de SAST`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Dependency Vulnerability`}),`: Bloquea pull requests según los hallazgos de SCA`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`License Compliance`}),`: Bloquea dependencias según licencias SPDX denegadas o familias de licencias`]}),`\n`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=8dcdba40b68a4f557b9af9b596629262`,style:{borderRadius:`0.5rem`},alt:`Add Blocking Rule modal with Applies To, rule types, and Issue Type`,\"data-og-width\":`459`,width:`459`,\"data-og-height\":`969`,height:`969`,\"data-path\":`images/blocking_rule_create.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=280\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=054d84d66c6f48f696d828c0efa94f28 280w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=560\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=c57934927acb0f211632bc15c5699d98 560w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=840\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=036c71d17df171e600be8149e3bae414 840w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=1100\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=155c38b31ee5862832c67fc3d14ca15e 1100w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=1650\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=e3aa6754cb1e3e51ed3aeb2676f6a962 1650w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create.png?w=2500\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=e9fdb9669593a43cb545adfd04f0e8dd 2500w`})})]}),_jsxs(Step,{title:`Información básica`,children:[_jsxs(_components.p,{children:[`Introduce el nombre y la descripción de la regla y elige `,_jsx(_components.strong,{children:`Applies To`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pull Requests`}),` aplica automáticamente la regla en las comprobaciones de pull request.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`CI`}),` aplica la regla solo cuando un pipeline la nombra con `,_jsx(_components.code,{children:`corgea scan --block-on \u003cslug>`}),`. Las reglas de CI no bloquean pull requests.`]}),`\n`]}),_jsxs(_components.p,{children:[`Las reglas nuevas usan `,_jsx(_components.strong,{children:`Pull Requests`}),` por defecto. Corgea genera el slug a partir del nombre de la regla y lo muestra en la lista de reglas.`]}),_jsx(_components.p,{children:`Las reglas de pull request solo publican comentarios sobre hallazgos que requieren una acción. Corgea omite los comentarios de hallazgos confirmados como no alcanzables, hallazgos retenidos por ser falsos positivos o resultados de lenguajes no compatibles, y hallazgos en rutas ignoradas por el proyecto. Estos hallazgos siguen disponibles en Corgea para revisarlos, pero no bloquean la pull request.`}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=218cc233de7f4711f466cb92303eaf8c`,style:{borderRadius:`0.5rem`},alt:`Add Blocking Rule modal with CI selected and License Compliance configured`,\"data-og-width\":`469`,width:`469`,\"data-og-height\":`946`,height:`946`,\"data-path\":`images/blocking_rule_create_ci_license.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=280\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=bda2ae30611144e535eb3041ddf93fa7 280w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=560\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=0f5871ab6a6a37ba21752de25ee2bbf8 560w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=840\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=51fc5c2770cf781282b6bf209fae4f15 840w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=1100\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=4d3b6e80aceaf0eef8a619d78a543603 1100w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=1650\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=38a3cba1b960dff2533d5822af289b37 1650w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rule_create_ci_license.png?w=2500\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=dd1d7c2fbf0c19a69c5e131f4a9495cb 2500w`})})]}),_jsxs(Step,{title:`Configurar ajustes`,children:[_jsxs(_components.p,{children:[`Para las reglas de `,_jsx(_components.strong,{children:`Code Vulnerability`}),`, elige un `,_jsx(_components.strong,{children:`Issue Type`}),` para aplicarlas a `,_jsx(_components.strong,{children:`All`}),` los hallazgos, solo a `,_jsx(_components.strong,{children:`Vulnerabilities`}),` o solo a los hallazgos de `,_jsx(_components.strong,{children:`Code Quality`}),`. `,_jsx(_components.strong,{children:`All`}),` es el valor predeterminado y conserva el comportamiento de las reglas existentes. Después, selecciona niveles de urgencia (Critical, High, Medium o Low), categorías CWE o ambas opciones. Debes definir al menos una para que la regla sea válida.`]}),_jsxs(_components.p,{children:[`Para las reglas de `,_jsx(_components.strong,{children:`Dependency Vulnerability`}),`: Elige si filtrar por gravedad o por puntuación CVSS. Selecciona los niveles de urgencia (Critical, High, Medium o Low), 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. Si la regla se aplica a CI, también puedes seleccionar uno o más estados de `,_jsx(_components.strong,{children:`Alcanzabilidad`}),` para limitarla aún más; consulta `,_jsx(_components.a,{href:`#reachability`,children:`Filtrado por alcanzabilidad`}),`.`]}),_jsxs(_components.p,{children:[`Para las reglas de `,_jsx(_components.strong,{children:`License Compliance`}),`: Selecciona al menos una familia de licencias denegada (Copyleft, Permissive o Commercial) o introduce uno o más identificadores SPDX. Una dependencia se bloquea cuando alguna licencia notificada coincide con una familia seleccionada o con un ID concreto.`]})]}),_jsx(Step,{title:`Definir el ámbito`,children:_jsx(_components.p,{children:`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.`})}),_jsx(Step,{title:`Guardar`,children:_jsx(_components.p,{children:`Revisa y haz clic en “Create”`})})]}),`\n`,_jsx(Heading,{level:`3`,id:`gestión-de-las-reglas-existentes`,children:`Gestión de las reglas existentes`}),`\n`,_jsxs(_components.p,{children:[`Usa la búsqueda para encontrar reglas por nombre o configuración, o filtra la lista por etiqueta de proyecto o por el destino de `,_jsx(_components.strong,{children:`Applies To`}),`. La tabla de reglas muestra el slug de cada regla en la columna `,_jsx(_components.strong,{children:`ID`}),` y presenta el alcance del proyecto, el tipo de regla y el destino `,_jsx(_components.strong,{children:`Pull Requests`}),` o `,_jsx(_components.strong,{children:`CI`}),` en `,_jsx(_components.strong,{children:`Triggers On`}),`. Selecciona un slug para copiarlo y usarlo en un comando de CI. Las reglas sin alcance de proyecto o etiqueta se aplican a todos los proyectos, y las listas de alcance más largas se agrupan detrás de un tooltip `,_jsx(_components.strong,{children:`+N more`}),`.`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=fde00215e97e017b81af0100480d9ad4`,style:{borderRadius:`0.5rem`},alt:`Blocking rules list showing slug, Triggers On chips, and CI badge`,\"data-og-width\":`1684`,width:`1684`,\"data-og-height\":`426`,height:`426`,\"data-path\":`images/blocking_rules_list.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=280\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=8c06df3c337c81f67933b5088b7e87ed 280w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=560\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=f8399245a6b352a83855e28215cb09ec 560w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=840\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=89883a75f698e720951a0d7b1b6f32d5 840w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=1100\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=7b06e9d7bb0079ffbeee0130091bca60 1100w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=1650\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=5b1eab64e860f6e34670f47dc121c539 1650w, https://mintcdn.com/corgea/vl87stO-uNzXPjoi/images/blocking_rules_list.png?w=2500\u0026fit=max\u0026auto=format\u0026n=vl87stO-uNzXPjoi\u0026q=85\u0026s=33c8434de4ae15c1aa2de026712993ea 2500w`})}),`\n`,_jsx(Heading,{level:`3`,id:`aplicar-reglas-en-ci`,children:`Aplicar reglas en CI`}),`\n`,_jsxs(_components.p,{children:[`Crea una regla activa con `,_jsx(_components.strong,{children:`Applies To`}),` establecido en `,_jsx(_components.strong,{children:`CI`}),` y pasa su slug al comando de escaneo. Nombra las reglas según la condición que las dispara — por ejemplo `,_jsx(_components.code,{children:`criticals`}),`, no `,_jsx(_components.code,{children:`no-criticals`}),` — para que `,_jsx(_components.code,{children:`--block-on`}),` se lea como una afirmación directa. `,_jsx(_components.code,{children:`--block-on`}),` requiere Corgea CLI 1.10.0 o posterior.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`corgea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scan`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --block-on`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` criticals`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Para aplicar varias reglas de CI, proporciona sus slugs como una lista separada por comas. El comando falla cuando un hallazgo incumple cualquiera de las reglas nombradas. Un slug desconocido, una regla inactiva o una regla que se aplica a pull requests se tratan como error de configuración y no se omiten. `,_jsx(_components.code,{children:`--block-on`}),` solo es compatible con el escáner BLAST y no se puede combinar con `,_jsx(_components.code,{children:`--fail`}),` ni `,_jsx(_components.code,{children:`--fail-on`}),`.`]}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`Editar una regla`,id:`editar-una-regla`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Localiza la regla en la tabla`}),`\n`,_jsx(_components.li,{children:`Haz clic en “Edit”`}),`\n`,_jsx(_components.li,{children:`Modifica la configuración según sea necesario`}),`\n`,_jsx(_components.li,{children:`Haz clic en “Update” para guardar`}),`\n`]})}),_jsx(Tab,{title:`Alternar estado`,id:`alternar-estado`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Busca la regla en la tabla`}),`\n`,_jsx(_components.li,{children:`Haz clic en “Toggle Status”`}),`\n`,_jsx(_components.li,{children:`Confirma el cambio de estado`}),`\n`]})}),_jsx(Tab,{title:`Ver detalles`,id:`ver-detalles`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Haz clic en el nombre de la regla`}),`\n`,_jsx(_components.li,{children:`Revisa toda la información`}),`\n`,_jsx(_components.li,{children:`Cierra el cuadro de diálogo cuando termines`}),`\n`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`consultar-las-reglas-aplicadas-a-los-escaneos`,children:`Consultar las reglas aplicadas a los escaneos`}),`\n`,_jsx(_components.p,{children:`Puedes ver las reglas de bloqueo que se aplican a tus escaneos en dos lugares:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`En la página de detalles del escaneo, verás una sección de “Blocking Rules” que muestra todas las reglas evaluadas:`}),`\n`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=a132f7927273e0eaf8bdb84065bbcbf4`,style:{borderRadius:`0.5rem`},\"data-og-width\":`1518`,width:`1518`,\"data-og-height\":`1082`,height:`1082`,\"data-path\":`images/blocking_rules_scan_details.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=2506f62e23926618d77b374cc6ce8af3 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=91aea5d0567b8909be5664ec94af61b5 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=c67566733fb8742f636ab401414ba9f7 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=1358301c8bdac7c1c0983a9276800f55 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=a6034b5277cd2545bae8dcdb914c793e 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rules_scan_details.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=4d1abeac5e45021533d8dbf10b0dd78b 2500w`})}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`En cada hallazgo, puedes consultar las reglas de bloqueo activadas desde la vista de detalles:`}),`\n`]}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=433dd74d99f714b953608a1e59ac973a`,style:{borderRadius:`0.5rem`},\"data-og-width\":`3072`,width:`3072`,\"data-og-height\":`1124`,height:`1124`,\"data-path\":`images/blocking_rule_issue_details.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=280\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=f018e1e8b4c4d92354a127e5716a8370 280w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=560\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=bda0c51d92e6a2caa2f3873e8eac83c3 560w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=840\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=e87b4d6f3d1cf506d64b64640d19c675 840w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=1100\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=7bd96c3f0fe932b1f8570a9c31539b93 1100w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=1650\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=f0d374fd9773f3a7e3c9def6a3ac77d1 1650w, https://mintcdn.com/corgea/uxLuQR4653lM43Tj/images/blocking_rule_issue_details.png?w=2500\u0026fit=max\u0026auto=format\u0026n=uxLuQR4653lM43Tj\u0026q=85\u0026s=3a59b8689328a1a8865b890a194cec4d 2500w`})}),`\n`,_jsx(_components.p,{children:`Esto permite saber qué reglas afectan a cada escaneo y hallazgo, y por qué se han bloqueado determinados cambios.`}),`\n`,_jsx(Heading,{level:`2`,id:`reachability`,children:`Filtrado por alcanzabilidad`}),`\n`,_jsxs(_components.p,{children:[`En la mayoría de los proyectos, casi ninguna dependencia vulnerable se ejecuta realmente desde tu código. El filtrado por alcanzabilidad permite que una regla de `,_jsx(_components.strong,{children:`Dependency Vulnerability`}),` bloquee solo los hallazgos que importan, de modo que una CVE crítica en un paquete que nunca invocas no haga fallar tu pipeline.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Solo disponible para reglas de CI`}),` La alcanzabilidad se analiza en los escaneos que inicias tú mismo con `,_jsx(_components.code,{children:`corgea scan`}),`, no en los que se activan automáticamente al abrir una pull request. Configura `,_jsx(_components.strong,{children:`Applies To`}),` como `,_jsx(_components.strong,{children:`CI`}),` para usar este filtro; la opción está oculta en las reglas de Pull Request. Después, referencia la regla desde tu pipeline con `,_jsx(_components.code,{children:`corgea scan --block-on \u003cslug>`}),`.`]})}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Requisito previo`}),` La alcanzabilidad requiere que `,_jsx(_components.strong,{children:`AI-Native SCA`}),` esté habilitado en tu organización. Sin esa opción no se analiza ninguna dependencia, por lo que una regla que use este filtro nunca bloqueará nada. El editor de reglas te avisa cuando la opción está desactivada.`]})}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=571c043010e6323e09fc1523cfd8a5b3`,style:{borderRadius:`0.5rem`},alt:`Add Blocking Rule modal with CI and Dependency Vulnerability selected and Reachable checked under Reachability`,\"data-og-width\":`447`,width:`447`,\"data-og-height\":`884`,height:`884`,\"data-path\":`images/blocking_rule_create_ci_reachability.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=280\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=66a4ca8c20b9f1f1a54ed3a6814668b6 280w, https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=560\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=3a8b9ca58464b216ff030c6f0c47ae23 560w, https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=840\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=6cceeed7d4097b5ea18b37b3e5c3b15f 840w, https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=1100\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=e37a3d1e43b62043d3390608dfa36c44 1100w, https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=1650\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=d794c1e1d1a29b9ff2edcea67add2c28 1650w, https://mintcdn.com/corgea/gpJCGMHYx471xVvQ/images/blocking_rule_create_ci_reachability.png?w=2500\u0026fit=max\u0026auto=format\u0026n=gpJCGMHYx471xVvQ\u0026q=85\u0026s=c680e20859aaba7e1ccca3e8b8d632f5 2500w`})}),`\n`,_jsx(_components.p,{children:`Selecciona uno o más de los siguientes estados:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Estado`}),_jsx(_components.th,{children:`Significado`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Reachable`})}),_jsx(_components.td,{children:`La función vulnerable es alcanzable desde el código de tu aplicación.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Not Reachable`})}),_jsx(_components.td,{children:`La dependencia se usa, pero la función vulnerable no es alcanzable.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Unused Dependency`})}),_jsx(_components.td,{children:`La dependencia está declarada pero no se usa en ninguna parte del código.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Unknown`})}),_jsx(_components.td,{children:`La dependencia se analizó, pero no se pudo determinar la alcanzabilidad.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`El filtro de alcanzabilidad se `,_jsx(_components.strong,{children:`combina con`}),` el filtro de gravedad, CVSS o Malicious en lugar de sustituirlo, por lo que un hallazgo debe coincidir con ambos. Una regla configurada con gravedad Critical y Reachable bloquea únicamente las vulnerabilidades críticas que además son alcanzables. Dejar la alcanzabilidad vacía mantiene el comportamiento actual de la regla, que bloquea con independencia de la alcanzabilidad.`]}),`\n`,_jsx(Heading,{level:`3`,id:`espera-del-análisis`,children:`Espera del análisis`}),`\n`,_jsxs(_components.p,{children:[`El análisis de alcanzabilidad se ejecuta después de que finalice el escaneo en sí, por lo que `,_jsx(_components.code,{children:`corgea scan`}),` sigue consultando hasta que termina en lugar de devolver un resultado de inmediato. El análisis finaliza una vez analizadas todas las dependencias directas, lo que normalmente tarda unos minutos y como máximo 30.`]}),`\n`,_jsxs(_components.p,{children:[`Este filtro `,_jsx(_components.strong,{children:`falla de forma permisiva`}),`. Si el análisis no puede completarse —se agota la ventana de 30 minutos, el análisis falla o AI-Native SCA está desactivado—, la regla no informa de ninguna violación en lugar de hacer fallar tu build. Un pipeline solo se bloquea por una alcanzabilidad que Corgea determinó realmente, nunca por un análisis ausente.`]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`corgea scan`}),` falla de forma restrictiva al agotarse su propio plazo. Corgea CLI 1.13.0 y versiones posteriores permiten 35 minutos, holgadamente por encima de la ventana de análisis de 30 minutos. En una CLI anterior el plazo es de 15 minutos, que puede agotarse mientras Corgea sigue analizando y hacer fallar el pipeline. Actualiza la CLI o amplía el plazo con `,_jsx(_components.code,{children:`CORGEA_BLOCKING_RULES_TIMEOUT_SECONDS`}),`:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`CORGEA_BLOCKING_RULES_TIMEOUT_SECONDS`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`2100`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` corgea`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` scan`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --block-on`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` reachable-criticals`})]}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`ejemplos`,children:`Ejemplos`}),`\n`,_jsxs(AccordionGroup,{children:[_jsxs(Accordion,{title:`Bloqueo de criptografía insegura`,icon:`lock`,id:`bloqueo-de-criptografia-insegura`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Code Vulnerability`]}),_jsx(_components.p,{children:`Crea una regla para CWE-326 (Inadequate Encryption Strength) y CWE-327 (Use of a Broken or Risky Cryptographic Algorithm), con urgencia “Critical”, para impedir el uso de cifrado débil.`})]}),_jsxs(Accordion,{title:`Aplicación de la calidad del código`,icon:`code`,id:`aplicacion-de-la-calidad-del-codigo`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Code Vulnerability`]}),_jsxs(_components.p,{children:[`Selecciona `,_jsx(_components.strong,{children:`Code Quality`}),` como tipo de hallazgo. Después, crea una regla para CWE-398 (Indicator of Poor Code Quality) y CWE-477 (Use of Obsolete Functions), con urgencia “Medium”, para mantener los estándares del código.`]})]}),_jsxs(Accordion,{title:`Bloqueo de vulnerabilidades críticas de dependencias`,icon:`box`,id:`bloqueo-de-vulnerabilidades-criticas-de-dependencias`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Dependency Vulnerability`]}),_jsx(_components.p,{children:`Crea una regla con los niveles de urgencia “Critical” y “High” 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.`})]}),_jsxs(Accordion,{title:`Bloquear dependencias por intervalo CVSS`,icon:`gauge`,id:`bloquear-dependencias-por-intervalo-cvss`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Dependency Vulnerability`]}),_jsx(_components.p,{children:`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.`})]}),_jsxs(Accordion,{title:`Bloquear solo vulnerabilidades críticas alcanzables`,icon:`diagram-project`,id:`bloquear-solo-vulnerabilidades-criticas-alcanzables`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Dependency Vulnerability — `,_jsx(_components.strong,{children:`Se aplica a:`}),` CI`]}),_jsxs(_components.p,{children:[`Selecciona los niveles de urgencia «Critical» y «High» y, a continuación, selecciona `,_jsx(_components.strong,{children:`Reachable`}),` en Alcanzabilidad. La regla hace fallar un pipeline solo cuando una vulnerabilidad crítica o alta es alcanzable desde el código de tu aplicación, de modo que los paquetes sin usar o no alcanzables no interrumpan a los desarrolladores. Es una buena primera regla de alcanzabilidad, porque limita una regla de gravedad existente en lugar de ampliar lo que bloquea.`]})]}),_jsxs(Accordion,{title:`Bloquear dependencias sin usar`,icon:`broom`,id:`bloquear-dependencias-sin-usar`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` Dependency Vulnerability — `,_jsx(_components.strong,{children:`Se aplica a:`}),` CI`]}),_jsxs(_components.p,{children:[`Selecciona `,_jsx(_components.strong,{children:`Unused Dependency`}),` en Alcanzabilidad por sí sola, sin filtro de gravedad ni de CVSS. La regla hace fallar un pipeline que introduce paquetes vulnerables que nada usa en el código, animando a los desarrolladores a eliminar la dependencia en lugar de actualizarla.`]})]}),_jsxs(Accordion,{title:`Bloquear dependencias Copyleft`,icon:`file-contract`,id:`bloquear-dependencias-copyleft`,children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Tipo de regla:`}),` License Compliance`]}),_jsxs(_components.p,{children:[`Selecciona la familia `,_jsx(_components.strong,{children:`Copyleft`}),` para bloquear dependencias cuyas licencias notificadas pertenecen a esa familia. Añade identificadores SPDX concretos cuando tu política necesite una lista de denegación más estrecha.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`mejores-prácticas`,children:`Mejores prácticas`}),`\n`,_jsx(Card,{title:`Consejos de implementación`,icon:`lightbulb`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Empieza con las reglas esenciales y ve ampliando poco a poco`}),`\n`,_jsxs(_components.li,{children:[`Para `,_jsx(_components.strong,{children:`reglas de Dependency Vulnerability`}),`, comienza solo con gravedad Critical o un rango CVSS enfocado, y luego amplía a medida que tu equipo se ajuste`]}),`\n`,_jsxs(_components.li,{children:[`En las `,_jsx(_components.strong,{children:`reglas de CI`}),`, añade un filtro de alcanzabilidad `,_jsx(_components.strong,{children:`Reachable`}),` a una regla de gravedad existente para reducir el ruido sin debilitar la cobertura de las vulnerabilidades realmente explotables`]}),`\n`,_jsxs(_components.li,{children:[`Para `,_jsx(_components.strong,{children:`reglas de Code Vulnerability`}),`, céntrate primero en los CWEs más impactantes (por ejemplo, fallos de inyección, problemas de autenticación)`]}),`\n`,_jsx(_components.li,{children:`Revisión y actualizaciones periódicas`}),`\n`,_jsx(_components.li,{children:`Documentación clara y formación del equipo`}),`\n`,_jsx(_components.li,{children:`Fomenta los comentarios y la colaboración`}),`\n`,_jsx(_components.li,{children:`Uso estratégico de los niveles de urgencia`}),`\n`,_jsx(_components.li,{children:`Considera las etiquetas de proyecto cuando la misma regla debería cubrir un grupo de proyectos relacionados`}),`\n`]})}),`\n`,_jsx(Heading,{level:`2`,id:`resolución-de-problemas`,children:`Resolución de problemas`}),`\n`,_jsx(Warning,{children:`Si una pull request se bloquea inesperadamente, verifica primero las reglas activas y sus configuraciones.`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Problemas habituales`,icon:`bug`,id:`problemas-habituales`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Comportamiento inesperado de bloqueo`}),`\n`,_jsx(_components.li,{children:`Problemas de segmentación de reglas`}),`\n`,_jsx(_components.li,{children:`Problemas en el alcance del proyecto`}),`\n`]})}),_jsx(Accordion,{title:`Pasos de resolución`,icon:`wrench`,id:`pasos-de-resolucion`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Comprobar las configuraciones de las reglas`}),`\n`,_jsx(_components.li,{children:`Verificar la orientación de CWE`}),`\n`,_jsx(_components.li,{children:`Confirmar la configuración del proyecto`}),`\n`,_jsx(_components.li,{children:`Contactar con el soporte si es necesario`}),`\n`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Reglas de bloqueo","description":"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.","href":"/es/blocking_rules"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Resumen","slug":"resumen","depth":2,"children":[{"title":"Qué hace","slug":"qué-hace","depth":3,"children":[]},{"title":"Para quién es","slug":"para-quién-es","depth":3,"children":[]}]},{"title":"Características y beneficios principales","slug":"características-y-beneficios-principales","depth":2,"children":[]},{"title":"Tipos de reglas","slug":"rule-types","depth":2,"children":[]},{"title":"Cómo funciona con GitHub","slug":"cómo-funciona-con-github","depth":2,"children":[]},{"title":"Cómo funciona con Azure DevOps","slug":"cómo-funciona-con-azure-devops","depth":2,"children":[]},{"title":"Guía de uso","slug":"guía-de-uso","depth":2,"children":[{"title":"Creación de una nueva regla de bloqueo","slug":"creación-de-una-nueva-regla-de-bloqueo","depth":3,"children":[]},{"title":"Gestión de las reglas existentes","slug":"gestión-de-las-reglas-existentes","depth":3,"children":[]},{"title":"Aplicar reglas en CI","slug":"aplicar-reglas-en-ci","depth":3,"children":[]},{"title":"Consultar las reglas aplicadas a los escaneos","slug":"consultar-las-reglas-aplicadas-a-los-escaneos","depth":3,"children":[]}]},{"title":"Filtrado por alcanzabilidad","slug":"reachability","depth":2,"children":[{"title":"Espera del análisis","slug":"espera-del-análisis","depth":3,"children":[]}]},{"title":"Ejemplos","slug":"ejemplos","depth":2,"children":[]},{"title":"Mejores prácticas","slug":"mejores-prácticas","depth":2,"children":[]},{"title":"Resolución de problemas","slug":"resolución-de-problemas","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"corgea","siteName":"Corgea Documentation","title":"Reglas de bloqueo - Corgea Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/blocking_rules","matchLevel":1},"de":{"href":"/de/blocking_rules","matchLevel":1},"fr":{"href":"/fr/blocking_rules","matchLevel":1},"es":{"href":"/es/blocking_rules","matchLevel":0},"ja":{"href":"/ja/blocking_rules","matchLevel":1}}},"lastModified":"2026-09-07T17:47:46.776Z","originalFileLocation":"es/blocking_rules.mdx","locale":"es"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Corgea Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Reglas de bloqueo - Corgea Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Corgea Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.corgea.app/es/blocking_rules\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://corgea.mintlify.app/_mintlify/api/og/v2?division=Gesti%C3%B3n+de+pol%C3%ADticas\u0026amp;title=Reglas+de+bloqueo\u0026amp;description=Las+reglas+de+bloqueo+aplican+est%C3%A1ndares+de+seguridad+y+calidad+en+pull+requests+o+pipelines+de+CI.\u0026amp;theme=2deb6b7fd8ec87b21784abb2\u0026amp;signature=661e496d7fa9db8f87393e347d0aec7327ba7684adbf2e746d0f914c3e22e4b0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Reglas de bloqueo - Corgea Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://corgea.mintlify.app/_mintlify/api/og/v2?division=Gesti%C3%B3n+de+pol%C3%ADticas\u0026amp;title=Reglas+de+bloqueo\u0026amp;description=Las+reglas+de+bloqueo+aplican+est%C3%A1ndares+de+seguridad+y+calidad+en+pull+requests+o+pipelines+de+CI.\u0026amp;theme=2deb6b7fd8ec87b21784abb2\u0026amp;signature=661e496d7fa9db8f87393e347d0aec7327ba7684adbf2e746d0f914c3e22e4b0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/corgea/S1IZmkPVVuf-3VMn/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Corgea Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F56C26\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.corgea.app/es/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/es/blocking_rules.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.corgea.app/es/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.corgea.app/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.corgea.app/de/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.corgea.app/fr/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.corgea.app/ja/blocking_rules\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.corgea.app/blocking_rules\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.corgea.app/#organization\",\"name\":\"Corgea Documentation\",\"url\":\"https://docs.corgea.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/corgea/mpJUc1GyXtnVYEyT/logo/logo.png?fit=max\u0026auto=format\u0026n=mpJUc1GyXtnVYEyT\u0026q=85\u0026s=f66a9484335ac4db5d5d92e12fd87af6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.corgea.app#website\",\"name\":\"Corgea Documentation\",\"url\":\"https://docs.corgea.app\",\"publisher\":{\"@id\":\"https://docs.corgea.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.corgea.app/es/blocking_rules#webpage\",\"url\":\"https://docs.corgea.app/es/blocking_rules\",\"name\":\"Reglas de bloqueo\",\"description\":\"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\",\"dateModified\":\"2026-09-07T17:47:46.776Z\",\"isPartOf\":{\"@id\":\"https://docs.corgea.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.corgea.app/es/blocking_rules#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.corgea.app/es/blocking_rules#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Funciones principales\",\"item\":\"https://docs.corgea.app/es/agent\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gestión de políticas\",\"item\":\"https://docs.corgea.app/es/policies\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Reglas de bloqueo\",\"item\":\"https://docs.corgea.app/es/blocking_rules\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.corgea.app/es/blocking_rules#article\",\"headline\":\"Reglas de bloqueo\",\"name\":\"Reglas de bloqueo\",\"description\":\"Las reglas de bloqueo aplican estándares de seguridad y calidad en pull requests o pipelines de CI.\",\"url\":\"https://docs.corgea.app/es/blocking_rules\",\"mainEntityOfPage\":{\"@id\":\"https://docs.corgea.app/es/blocking_rules#webpage\"},\"dateModified\":\"2026-09-07T17:47:46.776Z\",\"publisher\":{\"@id\":\"https://docs.corgea.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.corgea.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Corgea Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Corgea Documentation","nav":{"global":null,"languages":[{"language":"en","default":true,"navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Support"}],"primary":{"type":"button","label":"Go to Corgea","href":"https://www.corgea.app"}},"pages":[{"title":"en","href":"/blocking_rules"}]},{"language":"de","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Support"}],"primary":{"type":"button","label":"Zu Corgea","href":"https://www.corgea.app"}},"pages":[{"title":"de","href":"/de/blocking_rules"}]},{"language":"fr","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Assistance"}],"primary":{"type":"button","label":"Accéder à Corgea","href":"https://www.corgea.app"}},"pages":[{"title":"fr","href":"/fr/blocking_rules"}]},{"language":"es","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"Soporte"}],"primary":{"type":"button","label":"Ir a Corgea","href":"https://www.corgea.app"}},"anchors":[{"anchor":"Documentación","icon":"book-open","groups":[{"group":"Primeros pasos","pages":[{"title":"Documentación de Corgea","sidebarTitle":"Introducción","mode":"wide","href":"/es/introduction"},{"title":"Inicio rápido","href":"/es/quickstart"},{"title":"Configuración","href":"/es/settings"}]},{"group":"Funciones principales","pages":[{"title":"Corgea Agent","href":"/es/agent"},{"title":"Revisiones de diseño de seguridad","href":"/es/security-review"},{"title":"Calidad del código","href":"/es/code-quality-scanner"},{"title":"Pentesting","href":"/es/pentesting"},{"group":"Análisis de seguridad","pages":[{"title":"SAST nativo de IA","href":"/es/blast"},{"title":"Escaneo de secretos","href":"/es/secret-scanning"},{"title":"Escaneo de dependencias (SCA)","href":"/es/sca"},{"title":"Escaneo de imágenes de contenedor","href":"/es/container-scanning"},{"title":"Detección de paquetes maliciosos","href":"/es/malware-scanning"},{"title":"Escaneo PII/PHI","href":"/es/pii"},{"title":"Escaneo de infraestructura como código (IaC)","href":"/es/iac"},{"title":"Subir escaneos","href":"/es/upload-report"},{"title":"Escaneos programados","href":"/es/scheduled-scans"},{"title":"Huellas digitales de los hallazgos","href":"/es/fingerprint"}]},{"group":"Gestión de hallazgos","pages":[{"title":"Vulnerabilities Workbench","href":"/es/vulnerabilities"},{"title":"Aplicar correcciones","href":"/es/fixes"},{"title":"Detección de falsos positivos","href":"/es/false_positive"},{"title":"Asignación de hallazgos y gestión de estados","href":"/es/issue_assignment"},{"title":"Justificaciones de triaje","href":"/es/triage_justifications"},{"title":"Exportación de hallazgos","href":"/es/issue_export"},{"title":"Gestión de proyectos","href":"/es/project"}]},{"group":"Gestión de políticas","pages":[{"title":"PolicyIQ","href":"/es/policies"},{"title":"Gestión de SLA","description":"Configura y gestiona acuerdos de nivel de servicio (SLA) para los hallazgos de seguridad","href":"/es/sla_management"},{"title":"Reglas de bloqueo","href":"/es/blocking_rules"}]},{"group":"Usuarios y grupos","pages":[{"title":"Gestión de usuarios","description":"Gestiona tus usuarios en Corgea","href":"/es/user_management"},{"title":"Roles","href":"/es/permission_groups"},{"title":"Equipos","href":"/es/teams"},{"title":"Gestión de acceso al contenido","href":"/es/content-access-management"},{"title":"Notificaciones","href":"/es/notifications"}]},{"title":"Informes","href":"/es/reporting"}]},{"group":"Integraciones","pages":[{"group":"IDE","pages":[{"title":"Visual Studio Code y Cursor","sidebarTitle":"VS Code y Cursor","href":"/es/vsc_extension"},{"title":"Visual Studio 2022","href":"/es/vs2022_extension"},{"title":"IDEs de JetBrains","href":"/es/jetbrains_extension"}]},{"group":"Control de versiones","pages":[{"title":"GitHub","href":"/es/github"},{"title":"GitLab","href":"/es/gitlab"},{"title":"Azure DevOps","href":"/es/azure_devops"},{"title":"Bitbucket","href":"/es/bitbucket"},{"title":"Harness","href":"/es/harness"}]},{"group":"Gestión de automatizaciones","pages":[{"title":"JIRA","href":"/es/jira"},{"title":"Linear","href":"/es/linear"},{"title":"Slack","href":"/es/slack"},{"title":"Zapier","href":"/es/zapier"},{"title":"Webhooks","href":"/es/webhooks"}]},{"title":"Registros de paquetes privados","href":"/es/private-package-registries"},{"title":"Integraciones con agentes","href":"/es/agentic_integrations"}]},{"group":"Herramientas y utilidades","pages":[{"group":"CLI","pages":[{"title":"CLI","href":"/es/cli"},{"title":"Escaneo de dependencias (CLI)","href":"/es/cli/deps"}]},{"title":"Model Context Protocol (MCP)","href":"/es/modelcontextprotocol"}]},{"group":"Versiones","pages":[{"title":"Registro de cambios","href":"/es/changelog"}]},{"group":"Confianza y cumplimiento","pages":[{"title":"Seguridad","href":"/es/security"}]},{"group":"Autenticación","pages":[{"title":"SSO","href":"/es/sso"},{"title":"Autorización JWT","href":"/es/jwt-token"}]}]},{"anchor":"Estado del servicio","icon":"check","href":"https://status.corgea.app/"},{"anchor":"Blog","icon":"newspaper","href":"https://corgea.com/blog"},{"anchor":"Referencia de la API","icon":"square-terminal","pages":[{"title":"Referencia de la API","href":"/es/api-reference/introduction"}]}]},{"language":"ja","navbar":{"links":[{"href":"mailto:help@corgea.com","label":"サポート"}],"primary":{"type":"button","label":"Corgeaを開く","href":"https://www.corgea.app"}},"pages":[{"title":"ja","href":"/ja/blocking_rules"}]}]},"title":"Reglas de bloqueo - Corgea Documentation","buildId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","deploymentId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DpBmNN95.js","DynamicMarkdown-BY_qDhTn.js","zoom-image-lightbox-D4WcYaf4.js","PlusIcon-CwhPVjTe.js","lightbox-handle-r17bVUz3.js"]}