Qué es el OWASP Docker Top 10 y cómo usarlo
En Docker: fundamentos y seguridad usted aprendió a construir imágenes, levantar servicios con Compose y endurecer un contenedor. Este curso ordena esa base con una lista de referencia para cualquier revisión: el OWASP Docker Top 10. Antes de D01, vea qué es, de dónde sale y qué vocabulario usará.
Qué es OWASP y qué es esta lista
OWASP (Open Worldwide Application Security Project) es una fundación sin fines de lucro que publica guías, herramientas y listas de riesgos de uso libre. La más conocida es el OWASP Top 10 de aplicaciones web, pero existen otras para móviles, API, Kubernetes o CI/CD.
El OWASP Docker Top 10 no es una lista de vulnerabilidades concretas. Es una lista de diez áreas de control que, si se descuidan, dejan expuesto un entorno de contenedores. Cada punto se identifica con un código de D01 a D10:
| Código | Nombre oficial (en inglés) | Idea central |
|---|---|---|
| D01 | Secure User Mapping | No correr procesos como root |
| D02 | Patch Management Strategy | Actualizar host, motor e imágenes |
| D03 | Network Segmentation and Firewalling | Separar redes y filtrar tráfico |
| D04 | Secure Defaults and Hardening | Endurecer host y daemon, no exponer servicios |
| D05 | Maintain Security Contexts | No mezclar cargas de distinta confianza |
| D06 | Protect Secrets | Sacar los secretos de imágenes y variables |
| D07 | Resource Protection | Limitar memoria, CPU y procesos |
| D08 | Container Image Integrity and Origin | Usar imágenes confiables y verificadas |
| D09 | Follow Immutable Paradigm | Contenedores de solo lectura que se reemplazan |
| D10 | Logging | Registrar y centralizar eventos |
Breve historia y contexto
| Año | Hito |
|---|---|
| 1979 | Unix agrega chroot, la primera forma de encerrar un proceso en una parte del disco |
| 2001 | Nace OWASP como comunidad abierta de seguridad de aplicaciones |
| 2002 a 2008 | El kernel Linux incorpora los namespaces y los cgroups, las piezas que aíslan y limitan procesos |
| 2013 | Se presenta Docker, que hace fácil empaquetar y ejecutar contenedores |
| 2015 | Se crea la Open Container Initiative para estandarizar imágenes y runtimes, y aparece el CIS Docker Benchmark |
| 2019 | La falla CVE-2019-5736 en runc recuerda que un contenedor no es una máquina virtual |
Docker no inventó el aislamiento, pero lo volvió tan cómodo que muchos equipos usan contenedores sin revisar su configuración. A finales de la década de 2010, miembros de OWASP ordenaron los errores que se repetían en revisiones reales en esta lista.
Por qué una lista de controles y no de ataques
Docker trae valores por defecto pensados para la comodidad: el proceso corre como root, el contenedor puede usar toda la memoria del host y un puerto publicado queda abierto en todas las interfaces. No son fallas de Docker; son decisiones que el equipo debe revisar.
Por eso cada riesgo se responde con preguntas: ¿con qué usuario corre?, ¿quién parchea el host?, ¿de dónde viene la imagen? Si el equipo contesta con evidencia, el control existe; si responde "creo que sí", todavía no. Hacen estas preguntas a diario analistas de seguridad en la nube, ingenieros DevSecOps, administradores de plataforma y auditores.
Dónde se usa
- Servidores y VMs en la nube con Docker Engine y Compose.
- Pipelines de integración continua, donde se construyen y escanean imágenes.
- Registros de imágenes, donde se publican y firman versiones.
- Kubernetes, que ejecuta las mismas imágenes: casi todos estos controles siguen valiendo allí.
- Estaciones de desarrollo con Docker Desktop, donde nacen los Dockerfiles.
Conceptos clave
| Concepto | Qué significa |
|---|---|
| Imagen | Plantilla de solo lectura, hecha de capas, con todo lo que necesita una aplicación |
| Contenedor | Una imagen en ejecución: un proceso aislado con su propia vista del sistema |
Daemon (dockerd) | El servicio del host que crea y administra los contenedores; corre como root |
| Host | La máquina, física o virtual, cuyo kernel comparten todos sus contenedores |
| Registro | Servidor que almacena y distribuye imágenes, como Docker Hub |
| Digest | Huella sha256 que identifica un contenido exacto de imagen |
| Capacidad (capability) | Fracción de los poderes de root que el kernel puede dar o quitar a un proceso |
Ficha de docker
- Nombre: docker es la palabra inglesa para "estibador", el trabajador que carga y descarga contenedores en un puerto.
- Qué hace: es el cliente de línea de comandos que habla con el daemon
dockerda través del socket/var/run/docker.sock, en Linux, macOS o Windows. Cada orden es un subcomando.
Sintaxis
docker [OPCIONES_GLOBALES] SUBCOMANDO [OPCIONES] [ARGUMENTOS...]Así se leen las sintaxis de este curso: lo que está entre corchetes es opcional, lo que está en MAYÚSCULAS lo reemplaza usted por un valor real y los tres puntos indican que puede repetirse.
Subcomandos que usará
| Subcomando | Qué hace | Ejemplo |
|---|---|---|
run | Crea y arranca un contenedor | docker run --rm alpine:3.20 id |
ps | Lista contenedores | docker ps -a |
inspect | Muestra la configuración completa en JSON | docker inspect api |
exec | Ejecuta un comando dentro de un contenedor en marcha | docker exec api id |
info / version | Datos del daemon y versiones | docker info |
build / history | Construye una imagen y muestra sus capas | docker history cafetal/api:0.6.0 |
network / compose | Redes y servicios de varios contenedores | docker network ls |
Cómo pedir ayuda
Escriba docker --help para ver todos los subcomandos y docker SUBCOMANDO --help para las opciones de uno, por ejemplo docker inspect --help. La referencia completa está en docs.docker.com.
Errores frecuentes
docker: 'inspec' is not a docker command.El subcomando está mal escrito. Revise la lista con docker --help.
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sockSu usuario no puede usar el socket. Use sudo en su VM. Ojo: agregar un usuario al grupo docker equivale a darle root en el host, como verá en D04.