Skip to content
SP StackPractices
intermediate Por StackPractices

Plantilla de Seguridad de Pipeline CI/CD

Una plantilla para asegurar pipelines de compilacion y despliegue contra filtraciones de credenciales, manipulacion, ataques a la cadena de suministro y despliegues no autorizados.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Descripcion General

Los pipelines CI/CD son un objetivo de alto valor para atacantes porque tienen acceso al codigo fuente, secretos de compilacion y rutas de despliegue a produccion. Un pipeline comprometido puede introducir malware, exfiltrar datos o desplegar cambios no autorizados. Esta plantilla define controles para proteger la integridad del codigo, la seguridad de los runners, los secretos y las aprobaciones de despliegue.

Cuando Usar

  • Configurar una nueva plataforma CI/CD.
  • Revisar o mejorar un pipeline existente.
  • Prepararse para una auditoria de seguridad de la cadena de suministro.
  • Despues de un compromiso del sistema de compilacion o despliegue no autorizado.
  • Integrar controles DevSecOps en los flujos de trabajo de ingenieria.

Prerequisitos

  • Un sistema de control de versiones con proteccion de ramas y registro de auditoria.
  • Una plataforma CI/CD como GitHub Actions, GitLab CI, Azure DevOps o Jenkins.
  • Una solucion de gestion de secretos para credenciales de pipeline.
  • Un proceso de revision y aprobacion de codigo antes de mergear.
  • Duenos por parte de platform engineering, seguridad y release management.

Solucion

Plantilla

1. Seguridad del Control de Codigo

ControlRequisitoVerificacion
Proteccion de ramasRevisiones requeridas antes de mergear a mainConfiguracion del repositorio
Commits firmadosRequerir commits verificados para cuentas privilegiadasConfiguracion de Git
Control de accesoAcceso de minimo privilegio a repositoriosRevision de RBAC
Registro de auditoriaTodos los pushes, merges y cambios de permisos registradosLogs de la plataforma
Dependencias fijadasLockfiles y versiones fijas para compilaciones reproduciblesArchivos del repositorio
Escaneo de secretosDeteccion automatizada de secretos en commitsPre-commit hooks + CI

2. Configuracion del Pipeline

ControlRequisitoVerificacion
Definiciones inmutables de pipelinePipelines almacenados como codigo y revisadosArchivos del repositorio
Sin secretos en codigoSecretos cargados desde vault, variables de CI u OIDCEscaneo de secretos
Validacion de entradasParametros de pipeline validados y saneadosRevision de codigo
Aislamiento de runners auto-hospedadosRunners de produccion aislados de runners de desarrolloConfiguracion de runners
Runners efimerosRunner nuevo por compilacion para reducir persistenciaConfiguracion de runners
Provenance del pipelineProvenance SLSA generado para artefactosHerramienta de attestacion

3. Gestion de Secretos

Tipo de SecretoAlmacenamientoRotacionAlcance
Credenciales cloudVault externo u OIDC90 diasPor ambiente
Tokens de registro de contenedoresVault o tokens de CI de corta duracion90 diasPor pipeline
Claves de firmaRespaldada por hardware o KMS180 diasCuentas de servicio limitadas
Claves APIVault o secret manager90 diasPermisos minimos requeridos
Contraseñas de base de datosSecretos dinamicos de Vault24 horasPor ejecucion de pipeline

4. Seguridad de la Compilacion

ControlRequisitoVerificacion
Escaneo de dependenciasTodas las dependencias escaneadas por CVEs conocidosScanner en CI
Analisis estaticoSAST ejecutado en cada pull requestJob de CI
Escaneo de imagenes de contenedoresImagen base y capas escaneadas antes de pushEscaneo de registro
Compilaciones reproduciblesMisma fuente produce mismo artefactoVerificacion de compilacion
Firma de artefactosTodos los artefactos firmados con identidad de compilacionVerificacion de firma
Generacion de SBOMBill of materials generado por compilacionSalida de CI

5. Seguridad del Despliegue

ControlRequisitoVerificacion
Puertas de despliegueAprobacion manual o automatizada antes de produccionReglas de pipeline
Separacion de ambientesCredenciales de produccion no disponibles en desarrolloAlcance de secretos
Plan de rollbackDisparador de rollback automatico ante fallaDefinicion de pipeline
Despliegues inmutablesArtefactos desplegados por referencia, no recompiladosLogs de despliegue
Deteccion de driftCambios no autorizados en produccion detectadosHerramienta de monitoreo
Pista de auditoriaQuien desplego que, cuando y por queLogs de despliegue

6. Respuesta a Incidentes

EscenarioRespuestaDueno
Secreto filtradoRotar secreto, revocar tokens, auditar usoEquipo de seguridad
Commit maliciosoRevertir, investigar, revocar credencialesEquipo de plataforma
Runner comprometidoTerminar runner, reconstruir, revisar logsEquipo de plataforma
Despliegue no autorizadoRollback, congelar pipeline, auditarRelease manager
Artefacto manipuladoBloquear despliegue, trazar provenanceEquipo de seguridad

Explicacion

La seguridad del pipeline es un subconjunto de la seguridad de la cadena de suministro. Al proteger la fuente, el proceso de compilacion y la ruta de despliegue, la organizacion reduce el riesgo de que codigo malicioso llegue a produccion. La plantilla mapea cada control a un metodo de verificacion, haciendola adecuada para auditorias y mejora continua.

Variantes

  • Checklist de seguridad de GitHub Actions: Se enfoca en fijar actions, permisos de workflows y workflows reutilizables.
  • Plantilla de seguridad de GitLab CI: Incluye alcance de tokens de jobs de CI/CD, runners protegidos y pipelines de cumplimiento.
  • Plantilla de endurecimiento de Jenkins: Cubre gestion de plugins, aislamiento de agentes y sandboxing de Groovy.
  • Pipeline nativa de contenedores: Enfatiza firma de imagenes, escaneo de registro y admission de Kubernetes.
  • Pipeline de alta cumplimiento: Agrega SLSA Nivel 3, doble aprobacion y SBOMs firmados para entornos regulados.

Mejores Practicas

  • Almacena las definiciones de pipeline como codigo y revisalas como codigo de aplicacion.
  • Utiliza credenciales de corta duracion y OIDC en lugar de secretos de larga duracion.
  • Escanea dependencias antes de mergear y antes de desplegar.
  • Firma artefactos y verifica firmas antes del despliegue.
  • Separa los ambientes de compilacion y produccion fisica o logicamente.
  • Requiere aprobacion humana para despliegues en produccion.
  • Genera y conserva SBOMs para cada release.
  • Monitorea la actividad del pipeline en busca de comportamiento inusual.

Errores Comunes

  • Almacenar secretos en variables de entorno o archivos de pipeline.
  • Usar actions de terceros sin fijarlas o revisarlas.
  • Permitir que cualquier rama despliegue a produccion.
  • Ejecutar cargas de trabajo de produccion y desarrollo en el mismo runner.
  • Omitir escaneos de seguridad para despliegues de hotfix.
  • No rotar credenciales de pipeline despues de un compromiso.
  • Confiar en artefactos sin verificar su firma.

FAQs

Cual es el riesgo mas grande en CI/CD?

El riesgo de alto impacto mas comun es el robo de credenciales de un runner o archivo de pipeline, lo que permite a un atacante acceder a produccion o manipular compilaciones.

Como balanceamos seguridad con despliegues rapidos?

Automatiza los controles de seguridad, utiliza escaneres rapidos y requiere aprobacion solo para produccion. El escaneo shift-left da retroalimentacion rapida sin bloquear el pipeline.

Que es la provenance SLSA?

SLSA es un framework para la seguridad de la cadena de suministro. La provenance registra como se construyo un artefacto, incluyendo repositorio fuente, comando de compilacion y dependencias, facilitando la deteccion de manipulaciones.