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 latest | Fijar versiones específicas (python:3.12-slim ) |
Ejecutar como root | Usar USER appuser |
Muchas capas innecesarias | Unificar comandos con && |
No eliminar caché o dependencias de build | Borrar archivos temporales |
Copiar todo indiscriminadamente | Copiar solo lo necesario (COPY requirements.txt ) |
No definir HEALTHCHECK | Agregar 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
- ✅ Analizá el Dockerfile de tu
voting-app
- ✅ Aplicá al menos 4 mejoras de seguridad (basado en la tabla de arriba)
- ✅ Agregá un
HEALTHCHECK
al contenedor - ✅ Subí el nuevo Dockerfile a tu repo y generá una nueva imagen
- ✅ Escaneá nuevamente con Trivy para verificar mejoras
- 📸 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!