0Pricing
Docker & DevOps Fundamentals · Lección

Buenas prácticas de seguridad para Dockerfiles

Implemente medidas de seguridad en sus Dockerfiles para minimizar las vulnerabilidades y reducir la superficie de ataque.

Buenas prácticas de seguridad para Dockerfiles es una lección gratuita de Docker & DevOps Fundamentals en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Docker & DevOps Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

¡Proteja sus Dockerfiles!

¡Le damos la bienvenida a las prácticas recomendadas de seguridad para Dockerfile! Una aplicación segura comienza con una base segura.

Su Dockerfile no es solo un script de compilación; es el plano de seguridad de su aplicación. Las malas prácticas en este punto pueden provocar vulnerabilidades importantes.

En esta lección, exploraremos estrategias clave para reforzar sus imágenes de Docker y minimizar las posibles superficies de ataque.

Buenas prácticas de seguridad para Dockerfiles — ilustración 1

Comience con imágenes base fiables

La instrucción FROM es su primera línea de defensa. Elija siempre imágenes base oficiales y bien mantenidas de fuentes fiables, como Docker Hub.

  • Imágenes oficiales: están verificadas y se actualizan periódicamente.
  • Etiquetas específicas: evite latest. Utilice etiquetas de versión específicas (por ejemplo, alpine:3.18) para obtener previsibilidad y estabilidad.
  • Imágenes mínimas: opte por versiones 'slim' o 'alpine'. Contienen menos paquetes, lo que significa que presentan menos vulnerabilidades potenciales.

Elegir una imagen base segura

Observe cómo seleccionar una imagen base mínima y específica puede mejorar la seguridad. Esto reduce el número de paquetes y herramientas que podrían aprovecharse para realizar ataques.

FROM alpine:3.18
# This is better than:
# FROM ubuntu:latest
# FROM python:latest

# Alpine is a minimal Linux distribution,
# making the image smaller and more secure.

Minimice el tamaño de la imagen

Cada archivo, paquete o dependencia que añade a su imagen aumenta su 'superficie de ataque'. Cuanto menos software haya, menos vulnerabilidades potenciales existirán.

Instale únicamente lo imprescindible para que se ejecute su aplicación. Elimine las herramientas de compilación y los archivos temporales cuando ya no los necesite.

Limpie después de la instalación

Al instalar paquetes, limpie siempre las cachés del gestor de paquetes y elimine los archivos innecesarios. Esto reduce el tamaño final de la imagen y elimina posibles filtraciones de información.

En imágenes basadas en Debian (como Ubuntu), utilice apt-get clean y elimine /var/lib/apt/lists/* en la misma instrucción RUN.

FROM debian:stable-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends \ 
    curl \ 
    git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# All in one RUN command to leverage Docker's caching and reduce layers.

¡No se ejecute como root!

De forma predeterminada, los procesos dentro de un contenedor de Docker se ejecutan con el usuario root. ¡Esto supone un riesgo importante para la seguridad!

Si un atacante obtiene el control de su contenedor, tendría privilegios de root, lo que podría permitirle escapar del contenedor o poner en riesgo el sistema host.

Cree siempre un usuario específico sin privilegios de root y cambie a él mediante la instrucción USER.

Configure un usuario sin privilegios de root

Así puede crear un usuario nuevo e indicar a Docker que ejecute los comandos posteriores con ese usuario. Esto limita considerablemente los posibles daños si el contenedor se ve comprometido.

FROM alpine:3.18

# Create a non-root user and group
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# Switch to the non-root user
USER appuser

CMD ["echo", "Hello from non-root user!"]

¡No incluya secretos en Dockerfile!

No incluya nunca información confidencial, como claves de API, contraseñas de bases de datos o claves privadas, directamente en su Dockerfile ni la confirme en su imagen.

Cualquiera que tenga acceso a la imagen puede extraer fácilmente estos secretos, incluso si los elimina en una capa posterior.

En su lugar, utilice métodos seguros, como Docker Secrets, variables de entorno (para datos no confidenciales) o Secrets de Kubernetes durante la ejecución.

Prefiera COPY frente a ADD

Las instrucciones COPY y ADD copian archivos en su imagen, pero, por lo general, se prefiere COPY por motivos de seguridad y claridad.

  • COPY: solo copia archivos o directorios locales. Es una opción sencilla y predecible.
  • ADD: también puede obtener archivos de URL y extraer automáticamente archivos comprimidos (tar, gzip). Esta funcionalidad adicional introduce posibles riesgos de seguridad, como descargar contenido que no sea de confianza o extraer archivos maliciosos.

Utilice COPY, a menos que necesite específicamente las funciones avanzadas de ADD y comprenda sus riesgos.

¡Comprobación de seguridad!

¿Cuál de las siguientes prácticas para Dockerfile es un paso crucial para reducir la superficie de ataque y minimizar las posibles vulnerabilidades?

Su recorrido hacia un Dockerfile seguro

¡Buen trabajo! Ha aprendido prácticas recomendadas esenciales de seguridad para Dockerfile que constituyen la base de una contenerización segura:

  • Comience con imágenes base fiables y mínimas: utilice imágenes oficiales, específicas y ligeras.
  • Minimice el tamaño de la imagen: instale solo lo necesario y limpie después de las instalaciones.
  • Ejecute con un usuario sin privilegios de root: limite los privilegios para reducir el impacto de posibles intrusiones.
  • Evite los secretos: no incluya nunca datos confidenciales directamente en su Dockerfile.
  • Prefiera `COPY` frente a `ADD`: opte por la instrucción COPY, más predecible y segura.

Al aplicar estas prácticas, mejorará considerablemente la postura de seguridad de sus aplicaciones contenerizadas.

Preguntas frecuentes

¿La lección «Buenas prácticas de seguridad para Dockerfiles» es gratis?

Sí — el texto completo de «Buenas prácticas de seguridad para Dockerfiles» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Docker & DevOps Fundamentals, actualiza a CoddyKit PRO. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «Buenas prácticas de seguridad para Dockerfiles»?

Implemente medidas de seguridad en sus Dockerfiles para minimizar las vulnerabilidades y reducir la superficie de ataque. Practicas Docker & DevOps Fundamentals con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Docker & DevOps Fundamentals?

No se requiere experiencia previa. Docker & DevOps Fundamentals en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Buenas prácticas de seguridad para Dockerfiles»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Docker & DevOps Fundamentals?

Sí. Cada lección de Docker & DevOps Fundamentals incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Compilaciones multietapa para mejorar la eficiencia
  2. Aprovechamiento de la caché de compilación
  3. Buenas prácticas de seguridad para Dockerfiles
  4. Minimización del tamaño de imágenes con bases Slim y Distroless
← Volver a Docker & DevOps Fundamentals