← Volver al inicio

Contenedores (Docker): La Caja de Cristal

Objetivo del Módulo

Entender por qué la Nube moderna abandonó las Máquinas Virtuales pesadas y abrazó las "Burbujas" ultraligeras, y cómo esto afecta la seguridad y el aislamiento.

En la Fase 3 (Linux), aprendiste que las empresas instalan sus bases de datos en Servidores. Para no comprar 10 computadoras físicas, la industria inventó las Máquinas Virtuales (Virtualización): Meter 10 servidores fantasma adentro de un solo servidor físico. El problema es que las Máquinas Virtuales son excesivamente pesadas y lentas. La solución a este problema de ingeniería se llama Contenedores (Docker).


1. Máquina Virtual vs Contenedor

  • La Analogía de la Máquina Virtual (El Edificio Entero): Imagina que quieres rentar un espacio para que viva un empleado de tu empresa (La Aplicación). Si usas Virtualización (VMware, VirtualBox), es como construirle un edificio entero de 10 pisos con sus propios cimientos, sistema eléctrico y de plomería (El Sistema Operativo Invitado - Guest OS), solo para que el empleado viva en el primer piso. Es seguro, pero desperdicias 9 pisos vacíos y millones de dólares en materiales.
  • La Analogía del Contenedor (La Caja de Cristal): En lugar de construir un edificio entero para cada empleado, construyes un solo edificio masivo (El Servidor Físico / Host OS). Adentro del edificio, metes a cada empleado en una "Caja de Cristal" insonorizada (El Contenedor).
    • Todos los contenedores comparten los cimientos y la plomería del mismo edificio (Comparten el Kernel de Linux).
    • El empleado en la Caja A no puede ver ni tocar al empleado en la Caja B (Aislamiento), pero ambos pesan casi cero porque no tienen que cargar con sus propios cimientos.
    • En lugar de arrancar en 5 minutos, un contenedor arranca en 300 milisegundos.

2. La Seguridad del Aislamiento (Namespaces y Cgroups)

La magia técnica que hace que el empleado en la Caja A no pueda ver a la Caja B se reduce a dos características del Kernel de Linux:

  1. Namespaces (La Pared de Cristal Insonorizada): Limita lo que el contenedor puede ver. El Contenedor A cree que es el único que existe en el mundo. No puede ver las carpetas del Contenedor B ni sus procesos.
  2. Cgroups (Control Groups - La Ración de Comida): Limita lo que el contenedor puede usar. Si el Contenedor A (Una página web) recibe 1 millón de visitas de golpe, Cgroups evita que se robe el 100% de la memoria RAM del servidor. Solo le da su pequeña rebanada del pastel, evitando que ahogue al Contenedor B.

El Riesgo: Escapar del Contenedor (Container Breakout)

Aquí está el talón de Aquiles de Docker. Como todos los contenedores comparten el mismo "suelo" (El Kernel de Linux del servidor anfitrión), si un hacker logra hackear la aplicación adentro de la Caja de Cristal, y encuentra un Zero-Day en el motor de Docker, puede "romper el cristal" (Container Escape). Si rompe el cristal, cae directamente al suelo del servidor físico (Root access al Host). Desde ahí, tiene el poder absoluto para destruir y borrar todas las otras 500 cajas de cristal del edificio.


3. Criterio de Dominio (Autoevaluación)

Revisa si puedes asegurar las burbujas de la Nube:

  1. El equipo de desarrollo quiere desplegar 100 pequeños microservicios diferentes en un solo servidor físico. Explica, usando la diferencia de arquitectura entre Máquinas Virtuales (VMs) y Contenedores (Docker), por qué usar Contenedores ahorrará una cantidad masiva de Memoria RAM (Pista: Piensa en el Sistema Operativo Invitado).
  2. Un atacante logra ejecutar código remoto malicioso (RCE) dentro del contenedor web de tu empresa. Sin embargo, el atacante se da cuenta de que no puede ver los archivos de contraseñas de la Base de Datos que está corriendo en otro contenedor en la misma máquina física. ¿Qué característica del Kernel de Linux (Namespaces o Cgroups) es responsable de este aislamiento de visión?
  3. Define qué es un ataque de "Container Escape" (Fuga de Contenedor) y explica por qué las consecuencias de este ataque son infinitamente más letales que si el atacante simplemente se quedara atrapado adentro de su contenedor original.
  4. Con base en la filosofía de "Zero Trust" (Fase 23), ¿Por qué otorgarle permisos de "Usuario Root" (Modo Dios en Linux) al usuario que se ejecuta adentro de un Contenedor de Docker es considerado una de las peores y más peligrosas prácticas de seguridad de la industria?