Seguridad de contenedores en tiempo de ejecución
Implemente prácticas recomendadas para proteger los contenedores en tiempo de ejecución, incluidos los privilegios de usuario y los límites de recursos.
Seguridad de contenedores en tiempo de ejecución es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 2 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 DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
Fundamentos de la seguridad en tiempo de ejecución
¡Le damos la bienvenida a la seguridad de contenedores en tiempo de ejecución! Crear imágenes seguras es fundamental, pero ¿qué sucede una vez que el contenedor está en ejecución?
Esta lección se centra en las prácticas recomendadas para proteger sus aplicaciones mientras están activas y limitar los posibles daños causados por vulnerabilidades o ataques.

Principio de mínimo privilegio
Un concepto fundamental de seguridad es el principio de mínimo privilegio. Consiste en otorgar a una entidad (como un contenedor o un usuario) únicamente los permisos absolutamente necesarios para realizar su función, y ninguno más.
Aplicarlo reduce la superficie de ataque y limita el impacto en caso de que un contenedor se vea comprometido.
Evitar la ejecución como root
De forma predeterminada, los procesos dentro de un contenedor de Docker se ejecutan como el usuario root, que tiene privilegios administrativos completos dentro del contenedor.
- Riesgo: Si un atacante obtiene el control de un contenedor con privilegios de root, podría aprovechar vulnerabilidades en el daemon de Docker o en el kernel para obtener acceso root en el sistema host.
- Práctica recomendada: Ejecute siempre los procesos del contenedor como un usuario que no sea root.
Ejecutar como usuario no root
Puede especificar un usuario (por nombre o UID) para el proceso del contenedor mediante la marca --user con docker run. En este caso, ejecutamos el comando id en un contenedor Alpine como el usuario 1000.
Si el usuario 1000 no existe, Docker utilizará igualmente ese UID.
docker run --rm -it --user 1000 alpine idComprender las capacidades de Linux
Los sistemas Linux tradicionales tienen un usuario root con privilegios de «todo o nada». Las capacidades de Linux dividen los potentes privilegios de root en unidades más pequeñas y diferenciadas.
Esto permite que un proceso tenga únicamente los poderes específicos similares a los de root que necesita (por ejemplo, asociarse a puertos bajos o acceder directamente a la red), sin disponer de todos los privilegios de root.
Eliminar capacidades innecesarias
De forma predeterminada, los contenedores de Docker se ejecutan con un conjunto amplio de capacidades. Puede eliminar las capacidades innecesarias mediante --cap-drop para restringir aún más las acciones que puede realizar un contenedor.
En este caso, eliminamos la capacidad NET_RAW. El comando ping, que requiere NET_RAW, fallará, lo que demuestra la restricción.
docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"Controlar los recursos del contenedor
Los contenedores comparten el kernel y los recursos del host. El uso incontrolado de recursos por parte de un contenedor puede provocar una denegación de servicio (DoS) a otros contenedores o incluso al propio host.
- Límites de CPU: Evitan que un contenedor monopolice los ciclos de CPU.
- Límites de memoria: Impiden que un contenedor consuma toda la RAM disponible y provoque inestabilidad en el sistema.
Implementar límites de recursos
Puede establecer límites de CPU y memoria directamente con docker run. Este ejemplo limita la memoria a 128 MB y el uso de CPU a 0.5 (la mitad de un núcleo de CPU).
Esto garantiza que el contenedor se comporte correctamente y no prive de recursos a otros procesos.
docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"Sistemas de archivos de solo lectura
Muchas aplicaciones no necesitan escribir en su sistema de archivos raíz después del inicio. Al convertir el sistema de archivos en uno de solo lectura, obtiene importantes ventajas de seguridad:
- Evita la manipulación: Un atacante no puede modificar archivos existentes ni escribir archivos maliciosos nuevos.
- Limita la persistencia: Cualquier cambio realizado es efímero y se pierde al reiniciar el contenedor.
- Impone la inmutabilidad: Promueve un diseño en el que los contenedores son desechables y la configuración es externa.
Desplegar contenedores de solo lectura
Utilice la marca --read-only al ejecutar un contenedor. Cualquier intento de escribir en el sistema de archivos del contenedor (fuera de los volúmenes montados explícitamente) fallará.
Pruebe a crear un archivo en este contenedor de solo lectura:
docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"Comprobación de seguridad en tiempo de ejecución
¿Cuáles de las siguientes son buenas prácticas para proteger los contenedores en tiempo de ejecución?
Repaso de la seguridad en tiempo de ejecución
¡Buen trabajo! Ha aprendido a mejorar la seguridad de los contenedores mientras están en ejecución:
- Mínimo privilegio: Otorgar únicamente los permisos necesarios.
- Usuarios no root: Evitar ejecutar procesos como
root. - Capacidades: Eliminar las capacidades de Linux innecesarias.
- Límites de recursos: Controlar el uso de CPU y memoria.
- Solo lectura: Hacer que los sistemas de archivos sean inmutables para impedir escrituras.
Estas prácticas reducen significativamente la superficie de ataque y el impacto de posibles vulneraciones. ¡Siga practicando!
Preguntas frecuentes
¿La lección «Seguridad de contenedores en tiempo de ejecución» es gratis?
Sí — el texto completo de «Seguridad de contenedores en tiempo de ejecución» 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Seguridad de contenedores en tiempo de ejecución»?
Implemente prácticas recomendadas para proteger los contenedores en tiempo de ejecución, incluidos los privilegios de usuario y los límites de recursos. Practicas DevOps Bootcamp 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 DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp 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 2 de 4.
¿Cuánto tiempo toma la lección «Seguridad de contenedores en tiempo de ejecución»?
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 DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp 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
- Análisis de seguridad de imágenes de contenedor
- Seguridad de contenedores en tiempo de ejecución
- Gestión de Secrets y RBAC
- Políticas de red y mínimo privilegio