Saltar al contenido principal

Día 46 - Seguridad con Dockerfile y Dependencias

🛡️ Seguridad con Dockerfile y Dependencias

Es momento de revisar cómo construimos nuestras imágenes.
Porque un Dockerfile mal hecho puede ser la puerta de entrada a muchos problemas:

  • Imágenes enormes
  • Software vulnerable
  • Permisos excesivos
  • Dependencias innecesarias

Hoy vas a aprender a mejorar tu Dockerfile y a reducir los riesgos. 🚀


🔎 Problemas comunes en Dockerfiles

❌ Malas prácticas✅ Buenas prácticas
Usar latestFijar versiones específicas (python:3.12-slim)
Ejecutar como rootUsar USER appuser
Muchas capas innecesariasUnificar comandos con &&
No eliminar caché o dependencias de buildBorrar archivos temporales
Copiar todo indiscriminadamenteCopiar solo lo necesario (COPY requirements.txt)
No definir HEALTHCHECKAgregar chequeos de salud

🧪 Caso real: Mejorando el Dockerfile del voting-app

🧼 Dockerfile inseguro (ejemplo inicial)

FROM python:3.12

WORKDIR /app

COPY . .

RUN pip install -r requirements.txt

CMD ["python", "app.py"]

🔐 Dockerfile mejorado

FROM python:3.12-slim

WORKDIR /app

# Copiar solo lo necesario primero para aprovechar cacheo
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Copiar solo después el resto del código
COPY . .

# Crear y usar usuario no root
RUN useradd -m appuser
USER appuser

EXPOSE 5000

CMD ["python", "app.py"]

📌 Extra: Agregá un HEALTHCHECK

HEALTHCHECK --interval=30s --timeout=10s --start-period=5s \
CMD curl -f http://localhost:5000/ || exit 1

🐍 Revisión de dependencias

Si usás Python:

# Ver vulnerabilidades conocidas en requirements.txt
trivy fs --scanners vuln,secret --severity HIGH,CRITICAL .

Si usás Node.js:

npm audit fix

📝 Tarea del Día

  1. ✅ Analizá el Dockerfile de tu voting-app
  2. ✅ Aplicá al menos 4 mejoras de seguridad (basado en la tabla de arriba)
  3. ✅ Agregá un HEALTHCHECK al contenedor
  4. ✅ Subí el nuevo Dockerfile a tu repo y generá una nueva imagen
  5. ✅ Escaneá nuevamente con Trivy para verificar mejoras
  6. 📸 Compartí un "ANTES y DESPUÉS" de tu Dockerfile usando el hashtag #DockerHardeningConRoxs

🧠 ¿Qué logramos hoy?

  • Reducimos la superficie de ataque
  • Mejoramos la performance al achicar la imagen
  • Prevenimos problemas antes de que aparezcan

📚 Recursos Útiles


🏆 ¡Lo hiciste genial!

Hoy hiciste algo que muchos Devs olvidan: revisar y reforzar la base de tus contenedores. Y eso... 🔥 ¡te convierte en alguien que construye con conciencia!

Mañana nos metemos de lleno en troubleshooting de contenedores.

💥 ¡Nos vemos en el Día 47!