Taxonomía de Aislamiento Multi-Tenant: Firecracker KVM MicroVMs, gVisor User-Space Kernel y V8 Isolates (55 min)
Taxonomía de Aislamiento Multi-Tenant: Firecracker KVM MicroVMs, gVisor User-Space Kernel y V8 Isolates
1. Por qué los Contenedores Docker Estándar (runc) No Son Seguros para Ejecutar Código Multi-Tenant Desconocido
Un contenedor Docker estándar comparte directamente el kernel Linux del host (más de $350$ llamadas al sistema syscalls). Una sola vulnerabilidad de escalada en el kernel (Dirty Pipe, io_uring) permite escapar del contenedor hacia el host. Por ello, los proveedores Cloud/Edge utilizan tres arquitecturas de aislamiento distintas con compromisos radicalmente diferentes de arranque en frío (Cold Start) y huella de memoria:
flowchart TD
subgraph "1. AWS Lambda / Fly.io: Firecracker MicroVM"
FC_HOST["Host Linux + KVM Hypervisor"] --> FC_VM["MicroVM Guest Kernel Minimalista (Arranque ~125ms, Snapshot ~15ms)"]
end
subgraph "2. Google Cloud Run (Gen1/Sandbox): gVisor (runsc)"
GV_HOST["Host Linux Kernel"] --> GV_SEN["gVisor Sentry (Kernel en User-Space escrito en Go que intercepta syscalls)"]
end
subgraph "3. Cloudflare Workers / Deno Deploy: V8 Isolates"
V8_PROC["Un Único Proceso Daemon V8/Rust en el Nodo Edge"] --> ISO1["Isolate Cliente A (Arranque < 2ms, 3MB RAM)"]
V8_PROC --> ISO2["Isolate Cliente B (Memory Cage Aislado)"]
end
2. Comparativa Arquitectónica de Runtimes Serverless y Edge
| Runtime de Aislamiento | Frontera de Seguridad | Tiempo de Cold Start (p99) | Sobrecarga de RAM Base por Instancia | Soporte de Binarios Arbitrarios |
| :--- | :--- | :--- | :--- | :--- |
| Firecracker MicroVM | Hardware Virtualization (KVM /dev/kvm) | $80\text{ ms}$–$350\text{ ms}$ ($15\text{ ms}$ con SnapStart) | $\approx 5\text{ MB}$ de overhead KVM + Guest OS | 100% (Cualquier binario Linux ELF/Docker) |
| gVisor (runsc) | Interceptación de Syscalls en User-Space (Sentry) | $150\text{ ms}$–$500\text{ ms}$ | $\approx 15\text{ MB}$–$30\text{ MB}$ | Alto (Penalización en I/O de archivos intensivo) |
| V8 Isolates / Wasmtime | Seguridad de Memoria del Lenguaje + MPK Hardware | $< 1\text{ ms}$ a $5\text{ ms}$ (Zero Cold Start percibido) | $< 3\text{ MB}$ | Solo JS/TS/WebAssembly (.wasm) |