{"id":596,"date":"2026-03-24T08:07:09","date_gmt":"2026-03-24T07:07:09","guid":{"rendered":"https:\/\/secure-pipelines.com\/?p=596"},"modified":"2026-03-25T12:34:13","modified_gmt":"2026-03-25T11:34:13","slug":"complete-guide-ci-cd-pipeline-security","status":"publish","type":"post","link":"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/complete-guide-ci-cd-pipeline-security\/","title":{"rendered":"La Gu\u00eda Completa de Seguridad de Pipelines CI\/CD"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p>Los pipelines CI\/CD son la columna vertebral de la entrega de software moderna. Automatizan el recorrido desde el commit de c\u00f3digo hasta el despliegue en producci\u00f3n, permitiendo a los equipos entregar m\u00e1s r\u00e1pido, de manera m\u00e1s confiable y con mayor confianza. Pero este poder conlleva una contrapartida cr\u00edtica: <strong>los pipelines son cada vez m\u00e1s el objetivo principal de atacantes sofisticados<\/strong>.<\/p>\n<p>Piensa en todo lo que toca un pipeline CI\/CD. Descarga c\u00f3digo fuente, resuelve dependencias, accede a secretos y credenciales, construye artefactos, los sube a registros y despliega en infraestructura de producci\u00f3n. Un solo pipeline comprometido puede dar a un atacante acceso a <em>todo<\/em> \u2014 c\u00f3digo fuente, secretos, cuentas en la nube, datos de clientes y sistemas de producci\u00f3n.<\/p>\n<p>Esta gu\u00eda proporciona una visi\u00f3n completa de la seguridad de pipelines CI\/CD: qu\u00e9 est\u00e1 en juego, d\u00f3nde est\u00e1n los riesgos y c\u00f3mo construir pipelines seguros desde el c\u00f3digo fuente hasta producci\u00f3n. Ya seas un ingeniero de seguridad que est\u00e1 fortaleciendo pipelines existentes o un equipo DevOps que construye nuevos, esta es tu referencia integral para comprender e implementar la seguridad de CI\/CD.<\/p>\n<p>Cubriremos todo el panorama \u2014 desde el modelado de amenazas y las superficies de ataque, pasando por la gesti\u00f3n de secretos, la integridad de artefactos, la aplicaci\u00f3n de pol\u00edticas y el hardening espec\u00edfico por plataforma. A lo largo del camino, enlazaremos gu\u00edas detalladas, laboratorios pr\u00e1cticos y recursos que te permitir\u00e1n profundizar en cada tema.<\/p>\n<h2>Por qu\u00e9 los Pipelines CI\/CD Son una Prioridad de Seguridad<\/h2>\n<p>Los pipelines CI\/CD ocupan una posici\u00f3n \u00fanica y peligrosa en la infraestructura moderna. Son <strong>sistemas de automatizaci\u00f3n con acceso privilegiado<\/strong> a casi todos los recursos cr\u00edticos de tu organizaci\u00f3n. Comprender por qu\u00e9 importan comienza por entender qu\u00e9 pueden alcanzar.<\/p>\n<h3>Los Pipelines Son Objetivos de Alto Valor<\/h3>\n<p>Un pipeline CI\/CD t\u00edpico tiene acceso a:<\/p>\n<ul>\n<li><strong>Repositorios de c\u00f3digo fuente<\/strong> \u2014 incluyendo repositorios privados, algoritmos propietarios y configuraciones<\/li>\n<li><strong>Secretos y credenciales<\/strong> \u2014 claves API, credenciales de proveedores cloud, contrase\u00f1as de bases de datos, claves de firma<\/li>\n<li><strong>Infraestructura cloud<\/strong> \u2014 cuentas de AWS, GCP y Azure con permisos de despliegue<\/li>\n<li><strong>Entornos de producci\u00f3n<\/strong> \u2014 acceso directo de despliegue a sistemas en vivo que sirven a clientes<\/li>\n<li><strong>Registros de artefactos<\/strong> \u2014 registros de contenedores, repositorios de paquetes, almacenamiento de binarios<\/li>\n<li><strong>Redes internas<\/strong> \u2014 los runners frecuentemente se encuentran dentro de redes privadas con amplia conectividad<\/li>\n<\/ul>\n<p>Un pipeline comprometido no solo da a los atacantes un punto de apoyo \u2014 les da <strong>las llaves del reino<\/strong>. El compromiso de un pipeline es una de las formas m\u00e1s eficientes de lograr movimiento lateral a trav\u00e9s de toda una organizaci\u00f3n.<\/p>\n<h3>Ataques Reales a Pipelines<\/h3>\n<p>Esto no es te\u00f3rico. Algunos de los incidentes de seguridad m\u00e1s significativos de los \u00faltimos a\u00f1os han sido ataques a pipelines y cadenas de suministro:<\/p>\n<ul>\n<li><strong>SolarWinds (2020)<\/strong> \u2014 Los atacantes comprometieron el sistema de compilaci\u00f3n de SolarWinds Orion, inyectando c\u00f3digo malicioso en actualizaciones de software firmadas que se distribuyeron a ~18.000 organizaciones, incluyendo agencias del gobierno de EE.UU. El ataque pas\u00f3 desapercibido durante meses porque el c\u00f3digo malicioso se insert\u00f3 durante el proceso de compilaci\u00f3n, lo que significaba que el repositorio de c\u00f3digo fuente parec\u00eda limpio.<\/li>\n<li><strong>Codecov (2021)<\/strong> \u2014 Los atacantes modificaron el script Bash Uploader de Codecov explotando un fallo en la creaci\u00f3n de im\u00e1genes Docker. Durante m\u00e1s de dos meses, el script comprometido exfiltr\u00f3 variables de entorno \u2014 incluyendo secretos de CI\/CD, tokens API y credenciales \u2014 de miles de entornos CI que usaban Codecov.<\/li>\n<li><strong>CircleCI (2023)<\/strong> \u2014 El port\u00e1til de un ingeniero fue comprometido mediante malware, lo que dio a los atacantes acceso a un token de sesi\u00f3n de producci\u00f3n de CircleCI. Desde all\u00ed, los atacantes accedieron a variables de entorno, tokens y claves de clientes almacenadas en la plataforma de CircleCI. Cada secreto almacenado en CircleCI tuvo que considerarse comprometido.<\/li>\n<li><strong>GitHub Actions (en curso)<\/strong> \u2014 M\u00faltiples incidentes que involucran acciones de terceros comprometidas, credenciales GITHUB_TOKEN robadas y ataques a la cadena de suministro a trav\u00e9s de dependencias de acciones contin\u00faan demostrando que la seguridad de pipelines es una amenaza persistente y en evoluci\u00f3n.<\/li>\n<\/ul>\n<p>El hilo com\u00fan en todos estos incidentes: <strong>los atacantes atacan el pipeline en s\u00ed, no la aplicaci\u00f3n<\/strong>. Las medidas tradicionales de seguridad de aplicaciones \u2014 WAFs, protecci\u00f3n de endpoints, monitoreo en tiempo de ejecuci\u00f3n \u2014 no ayudan cuando el vector de ataque es el sistema de compilaci\u00f3n y despliegue.<\/p>\n<h3>El Problema de la Asimetr\u00eda<\/h3>\n<p>Existe una asimetr\u00eda fundamental en la seguridad de CI\/CD. Los pipelines est\u00e1n dise\u00f1ados para ser <strong>permisivos y r\u00e1pidos<\/strong>. Necesitan amplio acceso para hacer su trabajo. La seguridad, por otro lado, requiere <strong>restricci\u00f3n y verificaci\u00f3n<\/strong>. Cerrar esta brecha \u2014 mantener la velocidad del pipeline mientras se aplican fronteras de seguridad \u2014 es el desaf\u00edo central de la seguridad de CI\/CD.<\/p>\n<h2>La Superficie de Ataque de CI\/CD<\/h2>\n<p>Antes de poder asegurar un pipeline, necesitas entender d\u00f3nde puede ser atacado. La superficie de ataque de CI\/CD es amplia, abarcando m\u00faltiples sistemas, fronteras de confianza y dominios organizacionales.<\/p>\n<h3>Mapeando la Superficie de Ataque<\/h3>\n<p>La superficie de ataque de CI\/CD incluye:<\/p>\n<ol>\n<li><strong>Repositorios de C\u00f3digo Fuente<\/strong> \u2014 Evasi\u00f3n de protecci\u00f3n de ramas, pull requests maliciosas, cuentas de desarrolladores comprometidas, cambios de c\u00f3digo no autorizados en definiciones de pipelines<\/li>\n<li><strong>Definiciones de Pipelines<\/strong> \u2014 Ejecuci\u00f3n de pipeline envenenada (PPE), donde los atacantes modifican archivos de configuraci\u00f3n CI (por ejemplo, <code>.github\/workflows\/<\/code>, <code>.gitlab-ci.yml<\/code>, <code>Jenkinsfile<\/code>) mediante pull requests o pushes a ramas<\/li>\n<li><strong>Entornos de Compilaci\u00f3n<\/strong> \u2014 Runners compartidos, cach\u00e9s de compilaci\u00f3n persistentes, herramientas de compilaci\u00f3n comprometidas, escapes de contenedores de compilaci\u00f3n<\/li>\n<li><strong>Dependencias<\/strong> \u2014 Confusi\u00f3n de dependencias, typosquatting, paquetes upstream comprometidos, dependencias transitivas maliciosas<\/li>\n<li><strong>Secretos y Credenciales<\/strong> \u2014 Acceso a secretos demasiado amplio, credenciales de larga duraci\u00f3n, secretos filtrados en logs, secretos accesibles para compilaciones de repositorios bifurcados<\/li>\n<li><strong>Artefactos<\/strong> \u2014 Artefactos de compilaci\u00f3n manipulados, im\u00e1genes sin firmar, registros comprometidos, envenenamiento de artefactos<\/li>\n<li><strong>Objetivos de Despliegue<\/strong> \u2014 Despliegue no autorizado, puertas de aprobaci\u00f3n faltantes, separaci\u00f3n insuficiente de entornos<\/li>\n<\/ol>\n<h3>Los 10 Principales Riesgos de Seguridad CI\/CD de OWASP<\/h3>\n<p>El proyecto <strong>OWASP Top 10 CI\/CD Security Risks<\/strong> proporciona un marco estructurado para comprender estas amenazas. Cataloga los riesgos m\u00e1s cr\u00edticos, incluyendo mecanismos de control de flujo insuficientes, gesti\u00f3n inadecuada de identidad y acceso, abuso de la cadena de dependencias, ejecuci\u00f3n de pipeline envenenada e higiene de credenciales insuficiente. Cada riesgo se mapea a patrones de ataque del mundo real y proporciona orientaci\u00f3n concreta para la mitigaci\u00f3n.<\/p>\n<p>Para un an\u00e1lisis profundo de por qu\u00e9 los pipelines son la superficie de ataque principal y c\u00f3mo los atacantes los explotan, consulta nuestro an\u00e1lisis detallado: <a href=\"https:\/\/secure-pipelines.com\/es\/threats-attacks\/ci-cd-pipelines-primary-attack-surface\/\">Por Qu\u00e9 los Pipelines CI\/CD Son la Superficie de Ataque Principal<\/a>.<\/p>\n<h2>Fronteras de Confianza y Modelos de Ejecuci\u00f3n<\/h2>\n<p>Uno de los aspectos m\u00e1s fundamentales \u2014 y m\u00e1s frecuentemente malinterpretados \u2014 de la seguridad de CI\/CD son las <strong>fronteras de confianza<\/strong>. Cada pipeline opera dentro de un conjunto de suposiciones de confianza, y las violaciones de esas suposiciones son donde la seguridad se quiebra.<\/p>\n<h3>Preguntas Clave para Cada Pipeline<\/h3>\n<p>Para cada ejecuci\u00f3n de pipeline, deber\u00edas poder responder:<\/p>\n<ul>\n<li><strong>\u00bfQui\u00e9n activ\u00f3 este pipeline?<\/strong> \u2014 \u00bfFue un desarrollador interno, un colaborador externo, un trabajo programado o una actualizaci\u00f3n autom\u00e1tica de dependencias?<\/li>\n<li><strong>\u00bfQu\u00e9 c\u00f3digo se est\u00e1 ejecutando?<\/strong> \u2014 \u00bfEs c\u00f3digo de una rama confiable, un pull request de un fork, una acci\u00f3n de terceros o una dependencia resuelta din\u00e1micamente?<\/li>\n<li><strong>\u00bfQu\u00e9 identidad asume el pipeline?<\/strong> \u2014 \u00bfQu\u00e9 cuentas de servicio, roles cloud o tokens de plataforma est\u00e1n disponibles durante la ejecuci\u00f3n?<\/li>\n<li><strong>\u00bfA qu\u00e9 recursos puede acceder el pipeline?<\/strong> \u2014 \u00bfQu\u00e9 secretos, infraestructura, registros y entornos son alcanzables?<\/li>\n<\/ul>\n<h3>Modelos de Confianza en CI\/CD<\/h3>\n<p>Diferentes activadores de pipeline conllevan niveles de confianza fundamentalmente diferentes:<\/p>\n<ul>\n<li><strong>Push a rama protegida<\/strong> \u2014 Alta confianza. El c\u00f3digo ha pasado revisi\u00f3n y reglas de protecci\u00f3n de ramas.<\/li>\n<li><strong>Pull request de colaborador<\/strong> \u2014 Confianza media. El autor del c\u00f3digo es conocido pero los cambios no se han fusionado.<\/li>\n<li><strong>Pull request de fork<\/strong> \u2014 Baja confianza. El c\u00f3digo proviene de un colaborador externo y podr\u00eda contener cualquier cosa.<\/li>\n<li><strong>Trabajos programados\/cron<\/strong> \u2014 Confianza variable. Depende de qu\u00e9 c\u00f3digo y dependencias se resuelven en el momento de la ejecuci\u00f3n.<\/li>\n<li><strong>Despacho manual<\/strong> \u2014 Depende de qui\u00e9n lo despach\u00f3 y qu\u00e9 par\u00e1metros se proporcionaron.<\/li>\n<\/ul>\n<p>El principio cr\u00edtico: <strong>los permisos del pipeline y el acceso a secretos deben calibrarse al nivel de confianza del activador<\/strong>. Un pull request de un fork nunca deber\u00eda tener acceso a credenciales de despliegue en producci\u00f3n.<\/p>\n<h3>Modelos de Ejecuci\u00f3n<\/h3>\n<p>Diferentes plataformas CI\/CD manejan el aislamiento de ejecuci\u00f3n de manera diferente. Comprender el modelo de ejecuci\u00f3n \u2014 ya sea que las compilaciones se ejecuten en VMs compartidas, contenedores ef\u00edmeros o servidores persistentes \u2014 impacta directamente en tu postura de seguridad. Los entornos de ejecuci\u00f3n compartidos crean riesgos de contaminaci\u00f3n entre compilaciones, robo de credenciales y envenenamiento de cach\u00e9.<\/p>\n<p>Para una exploraci\u00f3n completa de los modelos de ejecuci\u00f3n de CI\/CD y sus implicaciones de seguridad, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/ci-cd-execution-models-trust-assumptions-security-guide\/\">Modelos de Ejecuci\u00f3n de CI\/CD, Suposiciones de Confianza y Gu\u00eda de Seguridad<\/a>.<\/p>\n<h2>Gesti\u00f3n de Secretos<\/h2>\n<p>Si hay un \u00e1rea que merece la mayor atenci\u00f3n en la seguridad de CI\/CD, es la <strong>gesti\u00f3n de secretos<\/strong>. El compromiso de credenciales es consistentemente la causa #1 de incidentes de seguridad en CI\/CD. La mala higiene de secretos \u2014 credenciales codificadas directamente, acceso demasiado amplio, tokens de larga duraci\u00f3n, secretos expuestos a c\u00f3digo no confiable \u2014 est\u00e1 detr\u00e1s de casi cada brecha importante de pipeline.<\/p>\n<h3>El Problema de los Secretos en CI\/CD<\/h3>\n<p>Los pipelines necesitan secretos para funcionar. Necesitan credenciales para descargar c\u00f3digo, resolver dependencias privadas, acceder a APIs cloud, subir artefactos y desplegar en producci\u00f3n. El desaf\u00edo es proporcionar estas credenciales de manera segura:<\/p>\n<ul>\n<li><strong>Minimizar la exposici\u00f3n<\/strong> \u2014 Los secretos solo deber\u00edan estar disponibles para los pasos espec\u00edficos que los necesitan<\/li>\n<li><strong>Limitar la duraci\u00f3n<\/strong> \u2014 Las credenciales deber\u00edan ser de corta duraci\u00f3n y rotarse autom\u00e1ticamente<\/li>\n<li><strong>Restringir el alcance<\/strong> \u2014 Cada credencial deber\u00eda tener los permisos m\u00ednimos requeridos<\/li>\n<li><strong>Prevenir fugas<\/strong> \u2014 Los secretos no deben aparecer en logs, artefactos, mensajes de error o variables de entorno accesibles a c\u00f3digo no confiable<\/li>\n<\/ul>\n<h3>Enfoques de Gesti\u00f3n de Secretos<\/h3>\n<p>Existe un espectro de madurez para la gesti\u00f3n de secretos en CI\/CD:<\/p>\n<h4>Nivel 1: Secretos Nativos de la Plataforma<\/h4>\n<p>Cada plataforma CI\/CD proporciona un mecanismo integrado de gesti\u00f3n de secretos \u2014 secretos de GitHub Actions, variables de GitLab CI, almac\u00e9n de credenciales de Jenkins. Estos proporcionan cifrado b\u00e1sico en reposo y enmascaramiento en logs. Son un buen punto de partida pero tienen limitaciones: son espec\u00edficos de la plataforma, dif\u00edciles de auditar y t\u00edpicamente ofrecen un control de acceso de granularidad gruesa.<\/p>\n<h4>Nivel 2: Gestores de Secretos Externos<\/h4>\n<p>Integrar con herramientas dedicadas de gesti\u00f3n de secretos \u2014 <strong>HashiCorp Vault<\/strong>, <strong>AWS Secrets Manager<\/strong>, <strong>Azure Key Vault<\/strong>, <strong>Google Secret Manager<\/strong> \u2014 proporciona gesti\u00f3n centralizada, pol\u00edticas de acceso de granularidad fina, registro de auditor\u00eda y rotaci\u00f3n autom\u00e1tica. Vault, en particular, destaca en la generaci\u00f3n de credenciales din\u00e1micas y de corta duraci\u00f3n con alcance a ejecuciones espec\u00edficas de pipeline.<\/p>\n<h4>Nivel 3: OIDC y Federaci\u00f3n de Identidad de Carga de Trabajo<\/h4>\n<p>El est\u00e1ndar de oro para credenciales de CI\/CD es <strong>eliminar completamente los secretos de larga duraci\u00f3n<\/strong>. Usando OIDC (OpenID Connect) y federaci\u00f3n de identidad de carga de trabajo, los pipelines pueden autenticarse con proveedores cloud usando su identidad de plataforma \u2014 sin necesidad de almacenar secretos. GitHub Actions, GitLab CI y otras plataformas pueden intercambiar sus tokens OIDC por credenciales cloud de corta duraci\u00f3n con alcance a repositorios, ramas y entornos espec\u00edficos.<\/p>\n<p>Este enfoque proporciona:<\/p>\n<ul>\n<li>Sin secretos que robar \u2014 las credenciales se generan bajo demanda y expiran en minutos<\/li>\n<li>Alcance de granularidad fina \u2014 el acceso puede restringirse a repositorios, ramas y entornos de despliegue espec\u00edficos<\/li>\n<li>Auditabilidad completa \u2014 cada intercambio de credenciales se registra con contexto del pipeline<\/li>\n<\/ul>\n<h3>Mejores Pr\u00e1cticas de Gesti\u00f3n de Secretos<\/h3>\n<ul>\n<li>Nunca codifiques secretos directamente en definiciones de pipeline, c\u00f3digo fuente o Dockerfiles<\/li>\n<li>Usa secretos con alcance por entorno para separar credenciales de staging y producci\u00f3n<\/li>\n<li>Implementa escaneo de secretos en hooks pre-commit y en CI para detectar exposiciones accidentales<\/li>\n<li>Prefiere OIDC\/federaci\u00f3n de identidad de carga de trabajo sobre credenciales almacenadas siempre que sea posible<\/li>\n<li>Usa secretos din\u00e1micos (por ejemplo, credenciales de base de datos din\u00e1micas de Vault) que se generan por ejecuci\u00f3n de pipeline<\/li>\n<li>Rota todas las credenciales de larga duraci\u00f3n en un calendario regular e inmediatamente despu\u00e9s de cualquier sospecha de compromiso<\/li>\n<li>Nunca expongas secretos a compilaciones de pull requests de forks<\/li>\n<\/ul>\n<p>Para orientaci\u00f3n detallada de implementaci\u00f3n, consulta nuestras gu\u00edas en profundidad:<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault\/\">Gesti\u00f3n de Secretos en Pipelines CI\/CD: Patrones e Integraci\u00f3n con Vault<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/short-lived-credentials-workload-identity-federation-ci-cd-2\/\">Credenciales de Corta Duraci\u00f3n y Federaci\u00f3n de Identidad de Carga de Trabajo en CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Integridad de Artefactos y Seguridad de la Cadena de Suministro<\/h2>\n<p>Asegurar lo que entra <em>en<\/em> tu pipeline (c\u00f3digo, dependencias, secretos) es solo la mitad de la batalla. Tambi\u00e9n necesitas asegurar lo que <em>sale<\/em> \u2014 los artefactos que tu pipeline produce y despliega. La integridad de artefactos asegura que lo que despliegas es exactamente lo que compilaste, sin manipulaci\u00f3n en el camino.<\/p>\n<h3>El Problema de la Cadena de Suministro<\/h3>\n<p>El software moderno no consiste solo en tu c\u00f3digo. Una aplicaci\u00f3n t\u00edpica incluye cientos o miles de dependencias, im\u00e1genes base, herramientas de compilaci\u00f3n e integraciones de terceros. Cada una de estas es un eslab\u00f3n en la cadena de suministro, y cada una puede ser comprometida. Los ataques a la cadena de suministro se dirigen a estos eslabones \u2014 inyectando c\u00f3digo malicioso en dependencias, manipulando artefactos de compilaci\u00f3n o comprometiendo registros.<\/p>\n<h3>Firma de Im\u00e1genes de Contenedor con Sigstore y Cosign<\/h3>\n<p>La firma de im\u00e1genes de contenedor proporciona prueba criptogr\u00e1fica de que una imagen fue construida por un pipeline confiable y no ha sido manipulada. <strong>Sigstore<\/strong> y su herramienta <strong>Cosign<\/strong> han simplificado dram\u00e1ticamente la firma de im\u00e1genes al proporcionar firma sin claves \u2014 usando identidades OIDC (como la identidad de un pipeline CI\/CD) para firmar artefactos sin gestionar claves de firma de larga duraci\u00f3n.<\/p>\n<p>En un pipeline seguro, cada imagen de contenedor deber\u00eda ser:<\/p>\n<ol>\n<li><strong>Firmada<\/strong> en el momento de compilaci\u00f3n usando la identidad verificada del pipeline<\/li>\n<li><strong>Verificada<\/strong> en el momento de despliegue antes de ser admitida en producci\u00f3n<\/li>\n<li><strong>Rechazada<\/strong> si la firma no coincide con una identidad o pol\u00edtica confiable<\/li>\n<\/ol>\n<h3>Procedencia y Atestaciones con SLSA e in-toto<\/h3>\n<p><strong>SLSA<\/strong> (Supply-chain Levels for Software Artifacts) proporciona un marco para mejorar progresivamente la integridad de la cadena de suministro. En su n\u00facleo, SLSA define la <strong>procedencia<\/strong> \u2014 un registro verificable de c\u00f3mo, d\u00f3nde y por qui\u00e9n fue construido un artefacto.<\/p>\n<p>El framework <strong>in-toto<\/strong> complementa a SLSA proporcionando una forma de definir y verificar toda la cadena de suministro de software \u2014 desde el c\u00f3digo fuente a trav\u00e9s de la compilaci\u00f3n hasta el despliegue. Cada paso en la cadena produce atestaciones que pueden verificarse contra un dise\u00f1o predefinido.<\/p>\n<p>Conceptos clave:<\/p>\n<ul>\n<li><strong>Procedencia<\/strong> \u2014 metadatos legibles por m\u00e1quina que describen la compilaci\u00f3n: qu\u00e9 entradas se usaron, qu\u00e9 sistema de compilaci\u00f3n se ejecut\u00f3, qu\u00e9 salidas se produjeron<\/li>\n<li><strong>Atestaciones<\/strong> \u2014 declaraciones firmadas sobre un artefacto (por ejemplo, &#8220;esta imagen fue construida a partir de este commit por este pipeline&#8221;)<\/li>\n<li><strong>Verificaci\u00f3n<\/strong> \u2014 comprobaciones automatizadas en el momento del despliegue que rechazan artefactos sin procedencia v\u00e1lida<\/li>\n<\/ul>\n<h3>Lista de Materiales de Software (SBOM)<\/h3>\n<p>Un SBOM proporciona un inventario completo de todos los componentes en un artefacto de software \u2014 cada biblioteca, dependencia y versi\u00f3n de herramienta. Los SBOMs permiten:<\/p>\n<ul>\n<li><strong>Seguimiento de vulnerabilidades<\/strong> \u2014 cuando se publica un nuevo CVE, puedes identificar inmediatamente qu\u00e9 artefactos est\u00e1n afectados<\/li>\n<li><strong>Cumplimiento de licencias<\/strong> \u2014 verificaci\u00f3n automatizada de que todos los componentes cumplen los requisitos de licencia<\/li>\n<li><strong>Respuesta a incidentes<\/strong> \u2014 evaluaci\u00f3n r\u00e1pida del radio de impacto cuando se descubre un compromiso en la cadena de suministro<\/li>\n<\/ul>\n<h3>Compilaciones Reproducibles<\/h3>\n<p>Las compilaciones reproducibles aseguran que el mismo c\u00f3digo fuente e instrucciones de compilaci\u00f3n siempre producen el mismo artefacto de salida, bit a bit. Esta propiedad hace posible verificar independientemente que un artefacto liberado coincide con su c\u00f3digo fuente declarado, eliminando toda una clase de ataques al sistema de compilaci\u00f3n.<\/p>\n<p>Para orientaci\u00f3n detallada de implementaci\u00f3n sobre integridad de artefactos, consulta:<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/signing-verifying-container-images-sigstore-cosign\/\">Firma y Verificaci\u00f3n de Im\u00e1genes de Contenedor con Sigstore y Cosign<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/artifact-provenance-attestations-slsa-in-toto\/\">Procedencia de Artefactos y Atestaciones con SLSA e in-toto<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/?p=646\">Integridad de Compilaci\u00f3n y Compilaciones Reproducibles en CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Aplicaci\u00f3n de Pol\u00edticas<\/h2>\n<p>Los controles de seguridad solo son efectivos si se <strong>aplican de manera consistente y autom\u00e1tica<\/strong>. Las revisiones de seguridad manuales no escalan. Las listas de verificaci\u00f3n se olvidan. La soluci\u00f3n es <strong>Pol\u00edtica como C\u00f3digo<\/strong> \u2014 codificar tus requisitos de seguridad como pol\u00edticas legibles por m\u00e1quina que se eval\u00faan autom\u00e1ticamente en cada ejecuci\u00f3n de pipeline.<\/p>\n<h3>Pol\u00edtica como C\u00f3digo con OPA y Rego<\/h3>\n<p>El <strong>Open Policy Agent (OPA)<\/strong> y su lenguaje de pol\u00edticas <strong>Rego<\/strong> se han convertido en el est\u00e1ndar de facto para la aplicaci\u00f3n de pol\u00edticas en entornos cloud-native. En un contexto de CI\/CD, OPA te permite escribir pol\u00edticas que eval\u00faan las entradas, configuraciones y salidas del pipeline contra tus requisitos de seguridad.<\/p>\n<p>Verificaciones de pol\u00edticas comunes en CI\/CD:<\/p>\n<ul>\n<li><strong>Pol\u00edticas de im\u00e1genes de contenedor<\/strong> \u2014 sin etiquetas <code>latest<\/code>, las im\u00e1genes deben provenir de registros aprobados, sin ejecuci\u00f3n como root<\/li>\n<li><strong>Pol\u00edticas de despliegue en Kubernetes<\/strong> \u2014 l\u00edmites de recursos requeridos, sin contenedores privilegiados, las pol\u00edticas de red deben existir<\/li>\n<li><strong>Pol\u00edticas de Infraestructura como C\u00f3digo<\/strong> \u2014 sin buckets S3 p\u00fablicos, cifrado habilitado, grupos de seguridad con alcance apropiado<\/li>\n<li><strong>Pol\u00edticas de pipeline<\/strong> \u2014 aprobaci\u00f3n requerida antes del despliegue en producci\u00f3n, todas las pruebas deben pasar, resultados de escaneo de vulnerabilidades dentro de los umbrales<\/li>\n<\/ul>\n<h3>Conftest para Evaluaci\u00f3n de Pol\u00edticas en CI\/CD<\/h3>\n<p><strong>Conftest<\/strong> es una utilidad que facilita la ejecuci\u00f3n de pol\u00edticas OPA\/Rego contra datos de configuraci\u00f3n estructurados en pipelines CI\/CD. Soporta YAML, JSON, HCL, Dockerfile y muchos otros formatos, lo que lo hace lo suficientemente vers\u00e1til para validar manifiestos de Kubernetes, planes de Terraform, Dockerfiles y configuraciones de pipeline.<\/p>\n<p>Una etapa t\u00edpica de aplicaci\u00f3n de pol\u00edticas en un pipeline:<\/p>\n<ol>\n<li>Descargar pol\u00edticas de un repositorio de pol\u00edticas central (versionado y revisado)<\/li>\n<li>Ejecutar Conftest contra los archivos de configuraci\u00f3n relevantes<\/li>\n<li>Hacer fallar el pipeline si se viola alguna pol\u00edtica obligatoria<\/li>\n<li>Generar un informe de evaluaci\u00f3n de pol\u00edticas como artefacto del pipeline<\/li>\n<\/ol>\n<h3>Puertas de Seguridad<\/h3>\n<p>M\u00e1s all\u00e1 de las pol\u00edticas de configuraci\u00f3n, la seguridad efectiva de CI\/CD requiere <strong>puertas de seguridad automatizadas<\/strong> \u2014 puntos de control en el pipeline donde se deben cumplir criterios de seguridad antes de proceder. Estas incluyen:<\/p>\n<ul>\n<li><strong>Puertas de an\u00e1lisis est\u00e1tico<\/strong> \u2014 el c\u00f3digo debe pasar el escaneo SAST sin hallazgos cr\u00edticos<\/li>\n<li><strong>Puertas de dependencias<\/strong> \u2014 sin CVEs cr\u00edticos o altos conocidos en dependencias<\/li>\n<li><strong>Puertas de escaneo de im\u00e1genes<\/strong> \u2014 las im\u00e1genes de contenedor deben pasar el escaneo de vulnerabilidades<\/li>\n<li><strong>Puertas de cumplimiento<\/strong> \u2014 las configuraciones de infraestructura deben cumplir los est\u00e1ndares de cumplimiento<\/li>\n<li><strong>Puertas de aprobaci\u00f3n<\/strong> \u2014 los despliegues en producci\u00f3n requieren aprobaci\u00f3n humana expl\u00edcita<\/li>\n<\/ul>\n<p>Para orientaci\u00f3n integral sobre la implementaci\u00f3n de la aplicaci\u00f3n de pol\u00edticas en tus pipelines, consulta: <a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/policy-as-code-ci-cd-opa-rego-security-gates\/\">Pol\u00edtica como C\u00f3digo en CI\/CD: OPA, Rego y Puertas de Seguridad<\/a>.<\/p>\n<h2>Mejores Pr\u00e1cticas de Hardening de Pipelines<\/h2>\n<p>M\u00e1s all\u00e1 de los dominios espec\u00edficos cubiertos anteriormente, existen pr\u00e1cticas fundamentales de hardening que se aplican en todas las plataformas y arquitecturas CI\/CD. Estas pr\u00e1cticas reducen tu superficie de ataque, limitan el radio de impacto y hacen que tus pipelines sean resilientes al compromiso.<\/p>\n<h3>Permisos M\u00ednimos (M\u00ednimo Privilegio)<\/h3>\n<p>Cada componente en tu pipeline deber\u00eda operar con los <strong>permisos m\u00ednimos requeridos<\/strong> para realizar su funci\u00f3n:<\/p>\n<ul>\n<li><strong>Tokens de plataforma<\/strong> \u2014 El <code>GITHUB_TOKEN<\/code> de GitHub deber\u00eda tener alcance de solo lectura por defecto, con permisos de escritura otorgados solo a pasos espec\u00edficos que los necesiten<\/li>\n<li><strong>Credenciales cloud<\/strong> \u2014 Los roles IAM deber\u00edan tener alcance a recursos y acciones espec\u00edficas, no pol\u00edticas amplias como <code>AdministratorAccess<\/code><\/li>\n<li><strong>Acceso a registros<\/strong> \u2014 El acceso de push deber\u00eda restringirse a pipelines de despliegue, no a cada compilaci\u00f3n CI<\/li>\n<li><strong>Acceso a repositorios<\/strong> \u2014 Las cuentas de servicio del pipeline solo deber\u00edan tener acceso a los repositorios que necesitan<\/li>\n<\/ul>\n<h3>Entornos de Compilaci\u00f3n Ef\u00edmeros<\/h3>\n<p>Los entornos de compilaci\u00f3n deber\u00edan ser <strong>ef\u00edmeros<\/strong> \u2014 creados frescos para cada ejecuci\u00f3n de pipeline y destruidos despu\u00e9s. Los servidores de compilaci\u00f3n persistentes acumulan estado, credenciales en cach\u00e9 y potenciales compromisos con el tiempo. Los runners ef\u00edmeros aseguran:<\/p>\n<ul>\n<li>Sin contaminaci\u00f3n entre compilaciones \u2014 cada compilaci\u00f3n comienza limpia<\/li>\n<li>Sin credenciales persistentes \u2014 nada sobrevive m\u00e1s all\u00e1 de la compilaci\u00f3n<\/li>\n<li>Superficie de ataque reducida \u2014 sin servicios de larga ejecuci\u00f3n que atacar<\/li>\n<li>Entornos consistentes \u2014 sin deriva de configuraci\u00f3n<\/li>\n<\/ul>\n<h3>Fijaci\u00f3n de Acciones y Plugins<\/h3>\n<p>Las acciones, plugins y componentes reutilizables de terceros deber\u00edan estar <strong>fijados a versiones espec\u00edficas e inmutables<\/strong> \u2014 preferiblemente por SHA de commit, no por etiqueta mutable. Fijar por etiqueta (por ejemplo, <code>v1<\/code>) es vulnerable al secuestro de etiquetas, donde un atacante sube c\u00f3digo malicioso y mueve la etiqueta para apuntar a \u00e9l.<\/p>\n<pre><code># Mal: Etiqueta mutable, vulnerable al secuestro\n- uses: actions\/checkout@v4\n\n# Bien: Fijado a SHA de commit inmutable\n- uses: actions\/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1<\/code><\/pre>\n<h3>Protecci\u00f3n de Ramas y Controles de Fusi\u00f3n<\/h3>\n<p>Las reglas de protecci\u00f3n de ramas son tu primera l\u00ednea de defensa contra cambios de c\u00f3digo no autorizados:<\/p>\n<ul>\n<li>Requerir revisiones de pull request antes de fusionar a ramas protegidas<\/li>\n<li>Requerir comprobaciones de estado (CI debe pasar) antes de fusionar<\/li>\n<li>Requerir commits firmados para autor\u00eda verificada<\/li>\n<li>Restringir qui\u00e9n puede hacer push a ramas protegidas<\/li>\n<li>Prevenir force pushes que podr\u00edan reescribir el historial<\/li>\n<li>Requerir historial lineal para mantener la auditabilidad<\/li>\n<\/ul>\n<h3>Controles de Despliegue<\/h3>\n<p>Los despliegues en producci\u00f3n deber\u00edan tener salvaguardas adicionales:<\/p>\n<ul>\n<li><strong>Reglas de protecci\u00f3n de entorno<\/strong> \u2014 requerir aprobaci\u00f3n manual para despliegues en producci\u00f3n<\/li>\n<li><strong>Congelamiento de despliegues<\/strong> \u2014 capacidad de detener despliegues durante incidentes o congelamiento de cambios<\/li>\n<li><strong>Despliegues canary y progresivos<\/strong> \u2014 limitar el radio de impacto desplegando cambios gradualmente<\/li>\n<li><strong>Capacidades de rollback<\/strong> \u2014 rollback automatizado cuando fallan las comprobaciones de salud del despliegue<\/li>\n<\/ul>\n<h3>Separaci\u00f3n de Responsabilidades<\/h3>\n<p>Ninguna persona o sistema individual deber\u00eda controlar todo el pipeline desde el commit de c\u00f3digo hasta el despliegue en producci\u00f3n. Implementa la separaci\u00f3n de responsabilidades mediante:<\/p>\n<ul>\n<li>Requerir revisi\u00f3n de c\u00f3digo de alguien que no sea el autor<\/li>\n<li>Separar los permisos de CI (compilaci\u00f3n\/pruebas) de los permisos de CD (despliegue)<\/li>\n<li>Usar credenciales separadas para diferentes etapas del pipeline<\/li>\n<li>Requerir aprobaci\u00f3n multipartita para cambios sensibles<\/li>\n<\/ul>\n<p>Para orientaci\u00f3n detallada sobre hardening de tus pipelines, consulta:<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/?p=642\">Separaci\u00f3n de Responsabilidades y M\u00ednimo Privilegio en Pipelines CI\/CD<\/a><\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/?p=647\">Patrones Defensivos y Mitigaciones para Ataques a Pipelines CI\/CD<\/a><\/li>\n<\/ul>\n<h2>Gu\u00eda Espec\u00edfica por Plataforma<\/h2>\n<p>Si bien los principios de seguridad de CI\/CD son universales, cada plataforma tiene su propio modelo de seguridad, caracter\u00edsticas y trampas. Aqu\u00ed hay una breve descripci\u00f3n general de las principales plataformas con enlaces a gu\u00edas detalladas.<\/p>\n<h3>GitHub Actions<\/h3>\n<p>GitHub Actions es la plataforma CI\/CD m\u00e1s ampliamente adoptada para proyectos de c\u00f3digo abierto y muchos proyectos comerciales. Las consideraciones de seguridad clave incluyen:<\/p>\n<ul>\n<li><strong>Permisos de GITHUB_TOKEN<\/strong> \u2014 establece <code>permissions<\/code> a nivel de workflow con valores predeterminados de solo lectura, otorgando escritura solo donde sea necesario<\/li>\n<li><strong>Manejo de forks<\/strong> \u2014 <code>pull_request_target<\/code> es extremadamente peligroso si se usa incorrectamente; prefiere <code>pull_request<\/code> para c\u00f3digo no confiable<\/li>\n<li><strong>Fijaci\u00f3n de acciones<\/strong> \u2014 fija todas las acciones de terceros por SHA de commit<\/li>\n<li><strong>Protecci\u00f3n de entorno<\/strong> \u2014 usa entornos con revisores requeridos y pol\u00edticas de rama de despliegue<\/li>\n<li><strong>OIDC<\/strong> \u2014 usa el proveedor OIDC de GitHub para autenticaci\u00f3n sin claves con AWS, GCP y Azure<\/li>\n<li><strong>Workflows reutilizables<\/strong> \u2014 centraliza patrones de seguridad en workflows reutilizables mantenidos por el equipo de seguridad<\/li>\n<\/ul>\n<h3>GitLab CI<\/h3>\n<p>GitLab CI proporciona integraci\u00f3n profunda con la plataforma DevSecOps m\u00e1s amplia de GitLab. Las consideraciones de seguridad clave incluyen:<\/p>\n<ul>\n<li><strong>Variables protegidas<\/strong> \u2014 marca las variables sensibles como protegidas y enmascaradas; restringe a ramas\/etiquetas protegidas<\/li>\n<li><strong>Runners protegidos<\/strong> \u2014 usa runners protegidos para despliegues en producci\u00f3n, runners compartidos para compilaciones CI<\/li>\n<li><strong>Pipelines de merge request<\/strong> \u2014 usa <code>rules: - if: $CI_PIPELINE_SOURCE == \"merge_request_event\"<\/code> para controlar qu\u00e9 se ejecuta en contribuciones externas<\/li>\n<li><strong>OIDC\/tokens de ID<\/strong> \u2014 GitLab soporta tokens OIDC mediante la palabra clave <code>id_tokens<\/code> para autenticaci\u00f3n cloud sin claves<\/li>\n<li><strong>Frameworks de cumplimiento<\/strong> \u2014 usa las caracter\u00edsticas de pipeline de cumplimiento de GitLab para aplicar trabajos requeridos<\/li>\n<\/ul>\n<h3>Tekton<\/h3>\n<p>Tekton es un framework CI\/CD nativo de Kubernetes que proporciona propiedades de seguridad \u00fanicas a trav\u00e9s de su arquitectura:<\/p>\n<ul>\n<li><strong>Aislamiento nativo de Kubernetes<\/strong> \u2014 cada TaskRun se ejecuta en su propio Pod, proporcionando aislamiento a nivel de contenedor por defecto<\/li>\n<li><strong>Alcance de cuentas de servicio<\/strong> \u2014 usa cuentas de servicio de Kubernetes dedicadas para cada pipeline con permisos RBAC m\u00ednimos<\/li>\n<li><strong>Tekton Chains<\/strong> \u2014 firma autom\u00e1tica de artefactos y generaci\u00f3n de procedencia, proporcionando cumplimiento SLSA de forma nativa<\/li>\n<li><strong>Bundles OCI<\/strong> \u2014 distribuye definiciones de pipeline como artefactos OCI para versionado y verificaci\u00f3n de integridad<\/li>\n<li><strong>Control de admisi\u00f3n<\/strong> \u2014 integra con controladores de admisi\u00f3n de Kubernetes (por ejemplo, Kyverno, Gatekeeper) para aplicaci\u00f3n de pol\u00edticas<\/li>\n<\/ul>\n<p>Consulta las hojas de referencia y laboratorios espec\u00edficos por plataforma en nuestro sitio para orientaci\u00f3n detallada y pr\u00e1ctica para cada plataforma.<\/p>\n<h2>Hoja de Ruta de Implementaci\u00f3n<\/h2>\n<p>Implementar la seguridad de CI\/CD no sucede de la noche a la ma\u00f1ana. Aqu\u00ed hay un enfoque por fases que te lleva desde la visibilidad b\u00e1sica hasta la aplicaci\u00f3n integral.<\/p>\n<h3>Fase 1: Visibilidad (Semanas 1-4)<\/h3>\n<p>No puedes asegurar lo que no puedes ver. Comienza con un inventario y evaluaci\u00f3n completos:<\/p>\n<ul>\n<li><strong>Audita todos los pipelines<\/strong> \u2014 inventar\u00eda cada pipeline CI\/CD en tu organizaci\u00f3n, incluyendo sistemas CI paralelos que los equipos puedan haber configurado independientemente<\/li>\n<li><strong>Mapea el uso de secretos<\/strong> \u2014 identifica cada secreto, credencial y token usado en los pipelines. Documenta su alcance, duraci\u00f3n y calendario de rotaci\u00f3n<\/li>\n<li><strong>Escanea en busca de exposiciones<\/strong> \u2014 ejecuta herramientas de escaneo de secretos contra repositorios, definiciones de pipeline y logs de compilaci\u00f3n para encontrar credenciales filtradas<\/li>\n<li><strong>Eval\u00faa los permisos<\/strong> \u2014 revisa todas las cuentas de servicio, roles IAM y tokens de plataforma en busca de permisos excesivos<\/li>\n<li><strong>Documenta las fronteras de confianza<\/strong> \u2014 mapea qu\u00e9 pipelines pueden acceder a qu\u00e9 entornos, secretos y recursos<\/li>\n<\/ul>\n<h3>Fase 2: Fundamentos (Semanas 5-12)<\/h3>\n<p>Implementa controles de seguridad fundamentales que reducen el mayor riesgo con la menor complejidad:<\/p>\n<ul>\n<li><strong>Implementa m\u00ednimo privilegio<\/strong> \u2014 reduce todas las credenciales a los permisos m\u00ednimos requeridos. Establece <code>GITHUB_TOKEN<\/code> como solo lectura por defecto. Limita las credenciales cloud a recursos espec\u00edficos<\/li>\n<li><strong>Fija todas las dependencias<\/strong> \u2014 fija acciones de terceros por SHA de commit, bloquea versiones de dependencias, fija im\u00e1genes base por digest<\/li>\n<li><strong>Asegura la gesti\u00f3n de secretos<\/strong> \u2014 migra a OIDC\/federaci\u00f3n de identidad de carga de trabajo donde sea posible. Implementa gestores de secretos externos para todo lo dem\u00e1s. Rota todas las credenciales<\/li>\n<li><strong>Habilita protecci\u00f3n de ramas<\/strong> \u2014 requiere revisi\u00f3n de c\u00f3digo, comprobaciones de estado y commits firmados en todas las ramas protegidas<\/li>\n<li><strong>Despliega runners ef\u00edmeros<\/strong> \u2014 reemplaza servidores de compilaci\u00f3n persistentes con runners ef\u00edmeros y de entorno limpio<\/li>\n<\/ul>\n<h3>Fase 3: Integridad (Semanas 13-20)<\/h3>\n<p>Construye confianza en que los artefactos son aut\u00e9nticos y no han sido manipulados:<\/p>\n<ul>\n<li><strong>Implementa firma de artefactos<\/strong> \u2014 firma todas las im\u00e1genes de contenedor y artefactos de compilaci\u00f3n usando Cosign con firma sin claves<\/li>\n<li><strong>Genera procedencia<\/strong> \u2014 produce procedencia SLSA para todos los artefactos de compilaci\u00f3n, vincul\u00e1ndolos a su fuente, sistema de compilaci\u00f3n y par\u00e1metros<\/li>\n<li><strong>Crea SBOMs<\/strong> \u2014 genera SBOMs para todos los artefactos, permitiendo respuesta r\u00e1pida a vulnerabilidades<\/li>\n<li><strong>Aplica verificaci\u00f3n de firmas<\/strong> \u2014 configura controladores de admisi\u00f3n (Kyverno, Gatekeeper, Sigstore policy-controller) para rechazar im\u00e1genes sin firmar o no verificadas<\/li>\n<li><strong>Establece compilaciones reproducibles<\/strong> \u2014 trabaja hacia compilaciones reproducibles para artefactos cr\u00edticos<\/li>\n<\/ul>\n<h3>Fase 4: Aplicaci\u00f3n (Semanas 21-30)<\/h3>\n<p>Automatiza la aplicaci\u00f3n de seguridad para que sea consistente, escalable y no dependa del cumplimiento individual:<\/p>\n<ul>\n<li><strong>Implementa Pol\u00edtica como C\u00f3digo<\/strong> \u2014 define pol\u00edticas de seguridad en OPA\/Rego y apl\u00edcalas con Conftest en cada pipeline<\/li>\n<li><strong>Despliega controladores de admisi\u00f3n<\/strong> \u2014 aplica pol\u00edticas en tiempo de ejecuci\u00f3n en Kubernetes que validen im\u00e1genes, configuraciones y despliegues<\/li>\n<li><strong>Automatiza comprobaciones de cumplimiento<\/strong> \u2014 integra validaci\u00f3n de cumplimiento en pipelines con recopilaci\u00f3n automatizada de evidencia<\/li>\n<li><strong>Implementa puertas de seguridad<\/strong> \u2014 agrega puntos de control de seguridad obligatorios que bloquean la progresi\u00f3n a trav\u00e9s del pipeline cuando no se cumplen los criterios<\/li>\n<li><strong>Monitoreo continuo<\/strong> \u2014 configura alertas para violaciones de pol\u00edticas, comportamiento an\u00f3malo del pipeline y cambios no autorizados<\/li>\n<\/ul>\n<h2>Laboratorios Pr\u00e1cticos<\/h2>\n<p>La teor\u00eda es esencial, pero la pr\u00e1ctica es donde se desarrollan las habilidades de seguridad. Proporcionamos laboratorios pr\u00e1cticos que te permiten implementar cada concepto cubierto en esta gu\u00eda en un entorno CI\/CD real:<\/p>\n<ul>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-hardening-github-actions-workflows-permissions-pinning-secrets\/\">Laboratorio de Seguridad de GitHub Actions<\/a> \u2014 Ejercicios pr\u00e1cticos para asegurar workflows de GitHub Actions, incluyendo permisos de tokens, fijaci\u00f3n de acciones y configuraci\u00f3n OIDC<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-securing-gitlab-ci-pipelines-protected-variables-runners-environments-2\/\">Laboratorio de Seguridad de GitLab CI<\/a> \u2014 Ejercicios pr\u00e1cticos para hardening de pipelines de GitLab CI, variables protegidas y seguridad de merge requests<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-secure-build-pipeline-tekton-tekton-chains-2\/\">Laboratorio de Seguridad de Tekton<\/a> \u2014 Seguridad de pipeline nativa de Kubernetes con Tekton, incluyendo Chains para firma y procedencia<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/secrets-management-ci-cd-pipelines-patterns-vault\/\">Laboratorio de Integraci\u00f3n de Vault con CI\/CD<\/a> \u2014 Integra HashiCorp Vault con pipelines CI\/CD para secretos din\u00e1micos y gesti\u00f3n de credenciales<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-signing-verifying-container-images-cosign-github-actions\/\">Laboratorio de Firma de Im\u00e1genes de Contenedor con Cosign<\/a> \u2014 Firma, verifica y aplica firmas de im\u00e1genes de contenedor usando Sigstore Cosign<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-enforcing-kubernetes-policies-opa-conftest-ci-cd-2\/\">Laboratorio de Aplicaci\u00f3n de Pol\u00edticas OPA<\/a> \u2014 Escribe y aplica pol\u00edticas OPA\/Rego en pipelines CI\/CD usando Conftest<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/lab-generating-verifying-slsa-provenance-container-images-2\/\">Laboratorio de Procedencia SLSA<\/a> \u2014 Genera y verifica procedencia SLSA para artefactos de compilaci\u00f3n<\/li>\n<li><a href=\"https:\/\/secure-pipelines.com\/es\/threats-attacks\/ci-cd-threat-modeling-trust-boundaries-attack-paths-2\/\">Laboratorio de Modelado de Amenazas de Pipeline<\/a> \u2014 Modela amenazas de un pipeline CI\/CD para identificar riesgos y priorizar mitigaciones<\/li>\n<\/ul>\n<h2>Herramientas y Recursos<\/h2>\n<p>El ecosistema de seguridad de CI\/CD incluye un conjunto creciente de herramientas especializadas. Aqu\u00ed est\u00e1n las categor\u00edas esenciales y las herramientas clave:<\/p>\n<h3>Escaneo y Gesti\u00f3n de Secretos<\/h3>\n<ul>\n<li><strong>GitLeaks \/ TruffleHog<\/strong> \u2014 escanea repositorios e historial de commits en busca de secretos expuestos<\/li>\n<li><strong>HashiCorp Vault<\/strong> \u2014 secretos din\u00e1micos, gesti\u00f3n de credenciales y cifrado como servicio<\/li>\n<li><strong>AWS Secrets Manager \/ GCP Secret Manager \/ Azure Key Vault<\/strong> \u2014 gesti\u00f3n de secretos nativa de la nube<\/li>\n<\/ul>\n<h3>Integridad de Artefactos<\/h3>\n<ul>\n<li><strong>Sigstore (Cosign, Fulcio, Rekor)<\/strong> \u2014 firma sin claves, autoridad de certificaci\u00f3n y log de transparencia<\/li>\n<li><strong>in-toto<\/strong> \u2014 framework de integridad de cadena de suministro<\/li>\n<li><strong>SLSA framework<\/strong> \u2014 niveles de seguridad de cadena de suministro y procedencia<\/li>\n<li><strong>Syft \/ Trivy<\/strong> \u2014 generaci\u00f3n de SBOM y escaneo de vulnerabilidades<\/li>\n<\/ul>\n<h3>Aplicaci\u00f3n de Pol\u00edticas<\/h3>\n<ul>\n<li><strong>OPA \/ Conftest<\/strong> \u2014 motor de pol\u00edticas de prop\u00f3sito general para validaci\u00f3n de configuraci\u00f3n<\/li>\n<li><strong>Kyverno<\/strong> \u2014 motor de pol\u00edticas nativo de Kubernetes<\/li>\n<li><strong>Gatekeeper<\/strong> \u2014 integraci\u00f3n de OPA para control de admisi\u00f3n de Kubernetes<\/li>\n<\/ul>\n<h3>Escaneo de Seguridad de Pipelines<\/h3>\n<ul>\n<li><strong>Checkov<\/strong> \u2014 escaneo de infraestructura como c\u00f3digo (Terraform, CloudFormation, Kubernetes)<\/li>\n<li><strong>StepSecurity Harden-Runner<\/strong> \u2014 seguridad en tiempo de ejecuci\u00f3n para GitHub Actions<\/li>\n<li><strong>Snyk<\/strong> \u2014 escaneo de seguridad amigable para desarrolladores para c\u00f3digo, dependencias y contenedores<\/li>\n<\/ul>\n<p>Para comparaciones detalladas de herramientas y recomendaciones, visita nuestra <a href=\"https:\/\/secure-pipelines.com\/es\/resources\/\">p\u00e1gina de Recursos<\/a>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La seguridad de pipelines CI\/CD no es una sola herramienta, una sola pr\u00e1ctica ni un esfuerzo \u00fanico. Es una <strong>disciplina integral<\/strong> que abarca todo el ciclo de vida de entrega de software \u2014 desde el commit del desarrollador a trav\u00e9s de la compilaci\u00f3n, pruebas, empaquetado y despliegue en producci\u00f3n.<\/p>\n<p>Las conclusiones clave de esta gu\u00eda:<\/p>\n<ol>\n<li><strong>Los pipelines son objetivos de alto valor<\/strong> \u2014 tienen acceso privilegiado a todo. Tr\u00e1talos con el mismo rigor de seguridad que los sistemas de producci\u00f3n.<\/li>\n<li><strong>Comprende tus fronteras de confianza<\/strong> \u2014 sabe qui\u00e9n activa tus pipelines, qu\u00e9 c\u00f3digo se ejecuta y qu\u00e9 recursos son accesibles en cada etapa.<\/li>\n<li><strong>Los secretos son tu mayor riesgo<\/strong> \u2014 elimina las credenciales de larga duraci\u00f3n siempre que sea posible. Usa OIDC, identidad de carga de trabajo y secretos din\u00e1micos.<\/li>\n<li><strong>Verifica la integridad de los artefactos<\/strong> \u2014 firma todo, genera procedencia, crea SBOMs y aplica verificaci\u00f3n en el despliegue.<\/li>\n<li><strong>Automatiza la aplicaci\u00f3n<\/strong> \u2014 codifica los requisitos de seguridad como Pol\u00edtica como C\u00f3digo. Los procesos manuales no escalan y no sobreviven la presi\u00f3n de los plazos.<\/li>\n<li><strong>Fortalece progresivamente<\/strong> \u2014 usa la hoja de ruta por fases para mejorar sistem\u00e1ticamente tu postura de seguridad sin interrumpir la velocidad de entrega.<\/li>\n<\/ol>\n<p>La superficie de ataque es amplia, pero las soluciones est\u00e1n madurando r\u00e1pidamente. El ecosistema Sigstore, el framework SLSA, OPA\/Conftest, la federaci\u00f3n OIDC y los controladores de admisi\u00f3n de Kubernetes proporcionan un conjunto de herramientas robusto para construir pipelines genuinamente seguros.<\/p>\n<p>Comienza donde est\u00e1s. Audita tu estado actual, implementa los fundamentos y agrega progresivamente controles de integridad y aplicaci\u00f3n. Cada paso que das cierra una brecha que los atacantes podr\u00edan explotar.<\/p>\n<p>Explora las gu\u00edas detalladas, laboratorios pr\u00e1cticos y recursos enlazados a lo largo de esta publicaci\u00f3n para profundizar en cada tema. Los pipelines seguros no se construyen en un d\u00eda \u2014 pero con el conocimiento y las herramientas adecuadas, est\u00e1n absolutamente al alcance.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Los pipelines CI\/CD son la columna vertebral de la entrega de software moderna. Automatizan el recorrido desde el commit de c\u00f3digo hasta el despliegue en producci\u00f3n, permitiendo a los equipos entregar m\u00e1s r\u00e1pido, de manera m\u00e1s confiable y con mayor confianza. Pero este poder conlleva una contrapartida cr\u00edtica: los pipelines son cada vez m\u00e1s &#8230; <a title=\"La Gu\u00eda Completa de Seguridad de Pipelines CI\/CD\" class=\"read-more\" href=\"https:\/\/secure-pipelines.com\/es\/ci-cd-security\/complete-guide-ci-cd-pipeline-security\/\" aria-label=\"Leer m\u00e1s sobre La Gu\u00eda Completa de Seguridad de Pipelines CI\/CD\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[55],"tags":[],"post_folder":[],"class_list":["post-596","post","type-post","status-publish","format-standard","hentry","category-ci-cd-security"],"_links":{"self":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/comments?post=596"}],"version-history":[{"count":6,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/596\/revisions"}],"predecessor-version":[{"id":864,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/posts\/596\/revisions\/864"}],"wp:attachment":[{"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/media?parent=596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/categories?post=596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/tags?post=596"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/secure-pipelines.com\/es\/wp-json\/wp\/v2\/post_folder?post=596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}