GitHub Actions + Security Scanning: Cómo Integrar Trivy y Checkov en tu Pipeline
Source: Dev.to
🛡️ La Solución: Integrar Security Scanning en GitHub Actions
Después de esa experiencia, me propuse crear un pipeline que nunca más permitiera que vulnerabilidades llegaran a producción. Así nació este proyecto que hoy comparto contigo.
🔍 El Problema que Resolvemos
# Así era nuestro workflow ANTES:
- name: Build Docker Image
run: docker build -t mi-app .
- name: Push to Registry
run: docker push mi-app:latest
# ¡Sin validaciones de seguridad!
Resultado: vulnerabilidades, secretos expuestos, configuraciones inseguras… todo llegando a producción.
🚀 La Arquitectura de Nuestro Pipeline Seguro
Nuestro nuevo pipeline tiene 4 fases críticas:
1️⃣ Construcción con Etiquetas Inteligentes
# Tags únicos por commit + ambiente
IMAGE_TAG_SHA: "sha-${GITHUB_SHA::7}"
IMAGE_TAG_ENV: "${{ inputs.target_env }}-latest"
2️⃣ Escaneo de Vulnerabilidades con Trivy
- name: Security Scan con Trivy
run: |
docker run --rm \
-v $(pwd):/src \
aquasec/trivy:latest \
image --severity CRITICAL,HIGH \
mi-imagen:${TAG}
Trivy nos ayuda a encontrar:
- Vulnerabilidades en paquetes del sistema
- Dependencias con CVEs conocidos
- Secretos expuestos accidentalmente
- Configuraciones inseguras
3️⃣ Validación de Dockerfile con Checkov
- name: IaC Security con Checkov
run: |
docker run --rm \
bridgecrew/checkov \
--file Dockerfile \
--framework dockerfile
Checkov revisa que nuestro Dockerfile siga mejores prácticas:
- ¿Usuario root? ❌
- ¿Paquetes sin actualizar? ❌
- ¿Secretos hardcodeados? ❌
4️⃣ Bloqueo Automático en Fallos
La magia está aquí: si hay vulnerabilidades CRÍTICAS o ALTAS, el pipeline SE DETIENE.
if [ "$VULNERABILIDADES" -gt 0 ]; then
echo "❌ WORKFLOW BLOQUEADO"
echo "Hay $VULNERABILIDADES problemas de seguridad"
exit 1
fi
📊 Dashboard de Seguridad en Tiempo Real
Todo aparece automáticamente en GitHub Actions Summary:
🐳 Reporte de Escaneo - Trivy
══════════════════════════════
📊 Resumen General
──────────────────
| Tipo | Severidad | Cantidad |
|--------------------|-----------|----------|
| Vulnerabilidades | 🔴 CRÍTICA| 2 |
| Vulnerabilidades | 🟠 ALTA | 9 |
| Total | | 11 |
🏗️ Checkov Security Scan
══════════════════════════
✅ Todos los checks pasaron (22 passed, 0 failed)
🎯 El Resultado: Confianza Automatizada
Antes
- “Ojalá no haya vulnerabilidades”
- Auditorías manuales cada 3 meses
- Incidentes de seguridad recurrentes
Después
- ✅ Cada commit validado automáticamente
- ✅ Cada imagen escaneada antes de publicar
- ✅ Cada despliegue con reporte de seguridad
- ✅ Cero vulnerabilidades en producción desde la implementación
Imágenes de ejemplo
💡 Lecciones Aprendidas
-
Seguridad ≠ Lentitud
Muchos piensan que agregar security scanning hará lento el pipeline. ¡Falso! Nuestros escaneos agregan solo 2‑3 minutos. -
Fail Fast es Mejor que Fail in Production
Preferimos que falle el pipeline (y notifique al desarrollador) a que falle en producción (y afecte a usuarios). -
Los Reportes Son Tu Mejor Aliado
Un reporte claro y automático hace que los equipos entiendan y arreglen los problemas, no solo los “parcheen”.
🚀 Implementa en 3 Pasos Sencillos
Paso 1: Clona y explora
git clone https://github.com/francotel/docker-image-security-scan
cd docker-image-security-scan
Paso 2: Examina el workflow
Abre el archivo .github/workflows/ci.yml (o el nombre que corresponda) y revisa cada una de las etapas descritas arriba.
Paso 3: Ajusta y despliega
- Modifica los tags y variables según tu proyecto.
- Añade tus credenciales de registro Docker como secrets en GitHub.
- Commitea y abre un Pull Request; observa el pipeline en acción.
Archivo de ejemplo
github/workflows/publish-nginx-image.yml – ¡Todo está listo para usar!
Paso 3: Adapta a tu caso
Modifica nombres de imágenes, registros y políticas según tu stack.
¡Listo! Ahora tu pipeline valida la seguridad de cada imagen Docker antes de que llegue a producción. 🎉
📈 Impacto Inmediato
- Detección: de trimestral a en cada commit
- Cobertura: de muestras a 100 % de imágenes
- Confianza: de “espero” a “sé que está validado”
🤝 ¿Cómo Contribuir?
El proyecto está activo en github.com/francotel/docker-image-security-scan.
¿Ideas para mejorar?
- Notificaciones en Slack/Teams
- Dashboard histórico
- Escaneo automático de imágenes base
- Policy as Code personalizado
🎯 ¡Hazlo Hoy!
Ventajas clave
- ✅ Gratuito (open source)
- ✅ Simple (un archivo YAML)
- ✅ Efectivo (bloquea problemas reales)
Acción inmediata
- ⭐ Dale estrella al repo
- 🐑 Haz fork y adapta
- 💬 Comenta en issues
¿Listo para seguridad automatizada? 👉 github.com/francotel/docker-image-security-scan
#DevSecOps #GitHubActions #DockerSecurity
¡No te lo pierdas! Sígueme en LinkedIn para estar al tanto de todas las actualizaciones y futuros artículos:
☕ Apóyame con un café
Si este contenido te ha sido útil y quieres apoyarme para seguir creando más, considera invitarme un café. ¡Tu apoyo hace la diferencia! 🥰
¡Gracias por leer y hasta la próxima! 👋




