Tema 17

17. Seguridad en pipelines CI/CD: permisos, runners, artefactos, aprobaciones y entornos

Un pipeline CI/CD puede compilar código, acceder a secretos, publicar imágenes, modificar infraestructura y desplegar en producción. Por eso debe protegerse como una ruta privilegiada, no como una simple automatización técnica.

Objetivo Proteger pipelines como rutas críticas hacia producción
Enfoque Permisos, runners, secretos, artefactos y aprobaciones
Resultado Reducir abuso de automatizaciones y despliegues no autorizados

17.1 Introducción

Los pipelines CI/CD automatizan build, pruebas, publicación y despliegue. Esa automatización acelera la entrega, pero también concentra permisos sensibles. Un pipeline comprometido puede modificar código, robar secretos, publicar artefactos maliciosos o desplegar cambios en producción.

La seguridad del pipeline debe tratar el flujo de entrega como una cadena de confianza: repositorio, configuración del pipeline, runners, secretos, artefactos, aprobaciones, entornos y registros.

El objetivo es que solo código autorizado, construido por procesos confiables y validado por controles definidos pueda avanzar hacia ambientes críticos.

17.2 Amenazas en CI/CD

Un pipeline puede ser atacado desde varias rutas: código malicioso, configuración alterada, credenciales filtradas, runners inseguros o artefactos reemplazados.

Amenaza Impacto Control inicial
Modificación del workflow Ejecutar pasos maliciosos o saltar controles Protección de ramas y revisión obligatoria
Robo de secretos Acceso a cloud, registries o producción Secretos protegidos, OIDC y scopes mínimos
Runner comprometido Manipulación de builds o exfiltración de credenciales Runners efímeros, aislamiento y limpieza
Artefacto alterado Despliegue de binario o imagen no confiable Firmas, digest y promoción controlada
Despliegue no autorizado Cambio directo en producción Aprobaciones, ambientes protegidos y separación de roles

17.3 Permisos mínimos del pipeline

Un pipeline debe tener solo los permisos necesarios para cada etapa. No es aceptable usar un token administrativo único para build, test, publicación y producción.

Buenas prácticas:

  • Separar permisos por etapa: lectura, build, publicación, despliegue e infraestructura.
  • Usar roles distintos por ambiente.
  • Evitar permisos de escritura si solo se requiere lectura.
  • Limitar qué ramas o tags pueden acceder a secretos productivos.
  • Usar credenciales temporales en lugar de tokens permanentes.
  • Auditar uso de permisos sensibles.
Un pipeline con permisos globales convierte cualquier cambio de workflow o script en una posible escalada hacia producción.

17.4 Runners

Un runner ejecuta los jobs del pipeline. Puede ser hospedado por el proveedor de CI/CD, autogestionado, compartido o dedicado. Su seguridad es crítica porque procesa código potencialmente no confiable.

Tipo de runner Ventaja Riesgo
Hospedado Menos mantenimiento operativo Menor control sobre red y entorno
Autogestionado Mayor control de red, herramientas y acceso Responsabilidad de hardening, parches y aislamiento
Compartido Optimiza costos Riesgo de contaminación entre proyectos
Efímero Reduce persistencia entre jobs Requiere automatización madura

17.5 Hardening de runners

Los runners deben ejecutarse con aislamiento y limpieza. Un runner persistente que ejecuta múltiples proyectos puede conservar credenciales, caches o artefactos de trabajos anteriores.

Controles recomendados:

  • Usar runners efímeros para jobs sensibles.
  • Separar runners por nivel de confianza y ambiente.
  • No ejecutar pull requests no confiables con secretos productivos.
  • Limpiar workspace, caches y credenciales después de cada job.
  • Aplicar parches y hardening del host del runner.
  • Restringir acceso de red desde runners hacia sistemas internos.
  • Registrar comandos, artefactos y eventos relevantes.

17.6 Secretos en pipelines

Los secretos de CI/CD suelen tener acceso a registries, cloud, repositorios, firmas y despliegues. Deben estar protegidos por entorno, rama, aprobación y mínimo privilegio.

Buenas prácticas:

  • Separar secretos por ambiente.
  • Usar variables protegidas para ramas o tags autorizados.
  • Evitar imprimir secretos en logs.
  • Rotar secretos ante cambios de equipo o sospecha de exposición.
  • Usar masking, pero no confiar solo en masking.
  • Reemplazar secretos estáticos por federación OIDC cuando sea posible.

17.7 OIDC y credenciales temporales

OIDC permite que un pipeline obtenga credenciales temporales desde un proveedor cloud sin almacenar access keys permanentes. El proveedor valida identidad del workflow, repositorio, rama, audiencia y condiciones.

Ventajas:

  • Elimina secretos cloud estáticos del sistema CI/CD.
  • Permite credenciales de corta duración.
  • Asocia permisos a repositorio, rama, tag o entorno.
  • Mejora auditoría de quién asumió un rol y por qué workflow.
  • Facilita revocación mediante políticas de confianza.
OIDC reduce exposición de claves permanentes, pero debe configurarse con condiciones estrictas. Una confianza demasiado amplia vuelve a crear el mismo problema con otro mecanismo.

17.8 Artefactos

Los artefactos son resultados del pipeline: binarios, paquetes, imágenes, SBOM, reportes, manifiestos o bundles de despliegue. Deben protegerse contra modificación y pérdida de trazabilidad.

Controles recomendados:

  • Firmar artefactos críticos.
  • Publicar en repositorios o registries controlados.
  • Registrar digest, versión, commit y pipeline de origen.
  • Separar artefactos temporales de artefactos promovidos.
  • Aplicar retención y protección contra borrado accidental.
  • Evitar que jobs no confiables consuman artefactos sensibles sin validación.

17.9 Aprobaciones y separación de funciones

Las aprobaciones agregan control humano donde el riesgo lo justifica. Deben usarse especialmente para producción, cambios de infraestructura crítica y excepciones de seguridad.

Una aprobación útil debe indicar:

  • Qué versión o digest se desplegará.
  • Qué ambiente será afectado.
  • Qué pruebas y controles pasaron.
  • Qué riesgos o excepciones existen.
  • Quién aprobó y cuándo.
  • Cómo revertir el cambio.

17.10 Entornos protegidos

Los entornos deben tener reglas distintas según criticidad. Desarrollo puede permitir más flexibilidad; producción requiere controles estrictos.

Entorno Control típico Riesgo si se omite
Desarrollo Secretos limitados y datos no sensibles Exposición por experimentación
Staging Controles similares a producción sin datos reales innecesarios Validaciones poco representativas
Producción Aprobaciones, roles específicos y auditoría fuerte Despliegues no autorizados o irreversibles
Sandbox Cuotas, aislamiento y limpieza automática Costos, exposición o persistencia de recursos inseguros

17.11 Protección de configuración del pipeline

Los archivos que definen pipelines son código privilegiado. Cambiar un workflow puede modificar controles, exfiltrar secretos o alterar artefactos.

Controles recomendados:

  • Revisión obligatoria de cambios en workflows.
  • Protección de ramas que ejecutan despliegues.
  • CODEOWNERS o revisores específicos para CI/CD.
  • Bloqueo de ejecución de workflows modificados por contribuidores no confiables.
  • Plantillas centralizadas para patrones comunes.
  • Auditoría de cambios en variables, secretos y permisos del proyecto.

17.12 Caches y dependencias

Los caches aceleran builds, pero también pueden contaminar resultados si no se aíslan correctamente. Un cache manipulado puede introducir dependencias o artefactos no esperados.

Buenas prácticas:

  • Separar caches por proyecto, rama o nivel de confianza.
  • No compartir caches entre pull requests no confiables y builds productivos.
  • Invalidar caches cuando cambian lockfiles o versiones críticas.
  • Verificar integridad de dependencias descargadas.
  • No almacenar secretos dentro de caches.

17.13 Logs y trazabilidad

Los logs del pipeline deben permitir investigar qué ocurrió sin exponer secretos. Deben conservar evidencia de ejecución, aprobación, artefactos y decisiones de seguridad.

Registrar:

  • Quién disparó el pipeline.
  • Commit, rama, tag y repositorio.
  • Runner utilizado.
  • Artefactos generados y digest.
  • Resultados de escaneo y gates.
  • Aprobaciones y despliegues.
  • Errores, reintentos y cambios manuales.

17.14 Errores frecuentes

  • Usar un token administrativo único para todo el pipeline.
  • Ejecutar código no confiable con acceso a secretos.
  • Usar runners persistentes sin limpieza adecuada.
  • No revisar cambios en archivos de workflow.
  • Publicar artefactos sin firma ni trazabilidad.
  • Permitir despliegues productivos desde ramas no protegidas.
  • Compartir caches entre contextos de distinta confianza.
  • Conservar logs con secretos impresos por comandos o herramientas.
El pipeline es parte de la superficie de producción. Si puede desplegar, firmar o modificar infraestructura, debe tener controles equivalentes a otros sistemas críticos.

17.15 Lista de verificación

  • ¿Los workflows están protegidos por revisión obligatoria?
  • ¿Los permisos del pipeline están separados por etapa y ambiente?
  • ¿Los runners sensibles son efímeros o están fuertemente aislados?
  • ¿Los pull requests no confiables se ejecutan sin secretos productivos?
  • ¿Se usan credenciales temporales u OIDC para cloud?
  • ¿Los artefactos críticos se firman y se vinculan al commit?
  • ¿Producción requiere aprobación y ambiente protegido?
  • ¿Los logs permiten auditoría sin exponer secretos?

17.16 Qué debes recordar de este tema

  • Un pipeline CI/CD es una ruta privilegiada hacia artefactos, infraestructura y producción.
  • Los permisos deben separarse por etapa, rama, ambiente y rol.
  • Los runners deben aislarse y limpiarse para evitar contaminación entre jobs.
  • OIDC y credenciales temporales reducen riesgo frente a secretos permanentes.
  • Artefactos, aprobaciones y logs deben sostener trazabilidad completa.

17.17 Conclusión

La seguridad de CI/CD protege el camino por el que el software llega a producción. Runners, permisos, secretos, artefactos, entornos y aprobaciones deben diseñarse como controles críticos de la cadena de suministro.

En el próximo tema estudiaremos seguridad de la cadena de suministro: SCA, SBOM, SLSA, firmas y dependencias confiables.