Saltar al contenido
Lectura12 minPreview

El OWASP Kubernetes Top 10 y su laboratorio

En el curso Kubernetes: fundamentos y seguridad usted aprendió a desplegar cargas y a aplicar las primeras defensas. Ahora va a ordenar ese conocimiento con un mapa que usan equipos de plataforma, auditores y analistas de todo el mundo: el OWASP Kubernetes Top 10. Esta lección explica qué es, de dónde viene, por qué importa y qué conceptos dará por sabidos el resto del curso.

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 abiertas sobre seguridad de software. Su lista más conocida es el Top 10 de aplicaciones web, pero tiene otras para APIs, móviles, modelos de lenguaje y también para Kubernetes.

El OWASP Kubernetes Top 10 reúne los diez riesgos más frecuentes e importantes en clústeres reales. No es un estándar de cumplimiento como el CIS Benchmark, sino una lista priorizada para enfocar el esfuerzo: si su clúster resiste estos diez, cerró la mayoría de las puertas usadas en incidentes públicos.

Breve historia y contexto

AñoHito
2001Nace OWASP como comunidad abierta de seguridad de aplicaciones
2003Primera edición del OWASP Top 10 de aplicaciones web
2014Google anuncia Kubernetes, inspirado en su sistema interno Borg
2015Kubernetes 1.0 y donación a la recién creada CNCF
2022Primera edición del OWASP Kubernetes Top 10; Pod Security Admission pasa a estable en la versión 1.25
2023OWASP cambia "Web" por "Worldwide" en su nombre

Kubernetes significa "timonel" en griego; K8s reemplaza por un 8 sus ocho letras centrales. Al mudarse las aplicaciones a contenedores, muchos incidentes pasaron a ser fallas de configuración de la plataforma, y esta lista nació para nombrarlas con un vocabulario común.

Edición 2022 (este curso)Edición 2025
K01 Configuraciones inseguras de cargasK01
K02 Vulnerabilidades de la cadena de suministroSin ítem propio
K03 Configuraciones RBAC demasiado permisivasK02 Autorización demasiado permisiva
K04 Falta de aplicación centralizada de políticasK04
K05 Registro y monitoreo inadecuadosK10
K06 Mecanismos de autenticación rotosK09
K07 Falta de segmentación de redK05
K08 Fallas en la gestión de secretosK03
K09 Componentes del clúster mal configuradosK07 Componentes del clúster mal configurados y vulnerables
K10 Componentes desactualizados y vulnerablesK07 (fusionado con K09)
No existíaK06 Componentes de Kubernetes demasiado expuestos (nuevo)
No existíaK08 Movimiento lateral del clúster a la nube (nuevo)

Por qué importa y dónde se usa

Un manifiesto mal escrito puede entregar un nodo, y un permiso de más, el clúster completo. Como Kubernetes acepta casi cualquier configuración sin quejarse, quien no conoce estos riesgos los repite. La lista se usa en:

  • Revisiones de código: comentar "K03" en un pull request deja claro el riesgo.
  • Auditorías: agrupar hallazgos por identificador hace comparables los informes.
  • Pipelines de CI/CD, donde escáneres como Trivy revisan cada cambio.
  • Servicios administrados como EKS, AKS y GKE: el proveedor cuida parte del plano de control, pero las cargas, el RBAC y la red siguen siendo suyos.

Conceptos clave

ConceptoQué significa
PodLa unidad mínima que ejecuta uno o más contenedores
NamespaceUn espacio lógico que separa recursos y permisos dentro del clúster
ManifiestoEl archivo YAML que describe un objeto que se quiere crear
API serverEl componente que recibe y valida toda petición al clúster
etcdLa base de datos donde el clúster guarda todos sus objetos
ServiceAccountLa identidad que usa un pod para hablar con el API server
AdmisiónEl paso en que el API server valida o rechaza un objeto antes de guardarlo
CNIEl plugin de red que conecta los pods y aplica las NetworkPolicy

Los diez riesgos

IDRiesgoMódulo
K01Configuración insegura de cargas de trabajo1
K02Vulnerabilidades de la cadena de suministro1
K03Configuraciones RBAC demasiado permisivas2
K04Falta de aplicación centralizada de políticas3
K05Registro y monitoreo inadecuados3
K06Mecanismos de autenticación rotos2
K07Falta de controles de segmentación de red3
K08Fallas en la gestión de secretos2
K09Componentes del clúster mal configurados3
K10Componentes de Kubernetes desactualizados y vulnerables1

El curso los agrupa por la pregunta que responden, no por número. De cada uno verá qué es, por qué pasa, un caso público, el YAML vulnerable frente al corregido y cómo se detecta; nunca cadenas de ataque completas.

Cómo leer las sintaxis y pedir ayuda

En las fichas de comandos, lo que va entre corchetes es opcional, lo que va en MAYÚSCULAS lo reemplaza usted y ... indica que se puede repetir. Cuando dude, pregúntele a la propia herramienta:

kubectl auth can-i --help
kubectl explain pod.spec.securityContext

--help muestra la sintaxis y los ejemplos de cada subcomando; kubectl explain documenta cualquier campo de un manifiesto sin salir de la terminal. Estas opciones generales de kubectl aparecerán en casi todas las lecciones:

OpciónQué haceEjemplo
-ATodos los namespaceskubectl get networkpolicy -A
-o wideMás columnaskubectl get nodes -o wide
-L ETIQUETAAgrega una columna con el valor de esa etiquetakubectl get ns -L app
--field-selectorFiltra por campos como type o reason--field-selector reason=FailedCreate
--asHace la petición como otra identidad--as=system:anonymous

Su laboratorio: kind

Los laboratorios corren en un clúster local creado con kind, Kubernetes IN Docker: cada nodo es un contenedor de Docker en su computadora.

kind create cluster [--name NOMBRE] [--image IMAGEN_DE_NODO]
kind get clusters
kind delete cluster [--name NOMBRE]

Si crea dos veces el mismo clúster, verá ERROR: failed to create cluster: node(s) already exist for a cluster with the name "owasp-k8s": use el existente o bórrelo primero.