Superficie de Ataque de Kubernetes
Kubernetes por defecto no es seguro. El cluster expone múltiples vectores de ataque que necesitan atención sistemática:
- API Server - Punto de control central; acceso no autorizado = compromiso total
- etcd - Almacena todo el estado incluyendo secretos en base64 (sin cifrar por defecto)
- Kubelet - Agente del nodo; API expuesto filtra info de pods y permite ejecutar comandos
- Container runtime - Vulnerabilidades de escape dan acceso al host
- Red - Los pods se comunican libremente con otros por defecto
- Cadena de suministro - Imágenes maliciosas o vulnerables introducen backdoors
Esta guía cubre las medidas clave organizadas por vector de ataque.
Bastionado del API Server
El API server es el componente más crítico. Asegúralo primero:
- Deshabilitar autenticación anónima: establece
--anonymous-auth=false - Habilitar audit logging: rastrea quién hizo qué (cubierto en detalle más adelante)
- Restringir acceso: usa reglas de firewall o security groups para limitar quien puede alcanzar el API server
- Habilitar admission controllers:
PodSecurity,NodeRestriction,ResourceQuotayLimitRangerdeben estar activos - Usar OIDC para autenticación: integra con tu proveedor de identidad en lugar de depender de certificados de cliente
| |
Buenas Prácticas de RBAC
RBAC es tu mecanismo de autorización principal. Aplica el mínimo privilegio rigurosamente.
Reglas Clave
- Nunca usar
cluster-adminpara workloads – otorga acceso ilimitado - Usar Roles (con namespace) sobre ClusterRoles siempre que sea posible
- Evitar wildcards en especificaciones de recursos o verbos
- Vincular a ServiceAccounts, no a usuarios para workloads automatizados
- Revisar bindings regularmente – los permisos se acumulan con el tiempo
Ejemplo: Rol Restringido para Despliegues
| |
Audita el RBAC existente con:
| |
Pod Security Standards
Los PSS (Pod Security Standards) de Kubernetes definen tres niveles de restricciones. Desde 1.25, Pod Security Admission (PSA) es el mecanismo integrado (reemplaza PodSecurityPolicy).
Los Tres Niveles
| Nivel | Descripción | Caso de Uso |
|---|---|---|
| Privileged | Sin restricciones | Workloads de sistema (CNI, drivers de almacenamiento) |
| Baseline | Bloquea escalaciones de privilegios conocidas | Workloads generales |
| Restricted | Bastionado máximo | Workloads sensibles, clusters multi-tenant |
Aplicacion de Pod Security Standards
Aplica los estandares a nivel de namespace usando labels:
| |
Ejemplo de Pod Conforme
Un pod que pasa el nivel restricted:
| |
Configuraciones de seguridad clave que siempre incluir:
runAsNonRoot: true– nunca ejecutar contenedores como rootreadOnlyRootFilesystem: true– prevenir modificaciones del sistema de archivosallowPrivilegeEscalation: false– bloquear setuid/setgidcapabilities.drop: ["ALL"]– eliminar todas las capabilities de LinuxseccompProfile.type: RuntimeDefault– aplicar perfil seccomp por defecto- Siempre especificar limites de recursos para prevenir DoS
NetworkPolicies
Por defecto, todos los pods pueden comunicarse con todos los demas pods en un cluster. Las NetworkPolicies restringen esto a solo el trafico necesario.
Denegacion Total por Defecto
Comienza cada namespace con una política de denegacion por defecto:
| |
Permitir Trafico Especifico
Luego permite explicitamente solo lo que se necesita:
| |
Nota: las NetworkPolicies requieren un plugin CNI que las soporte (Calico, Cilium, Weave Net). El kubenet por defecto no aplica NetworkPolicies.
Gestion de Secretos
Los Secrets de Kubernetes estan codificados en base64, no cifrados. Cualquiera con acceso de lectura a Secrets en un namespace puede decodificarlos trivialmente. La gestion adecuada de secretos requiere herramientas adicionales.
Opcion 1: Sealed Secrets
Sealed Secrets (de Bitnami) cifra secretos del lado del cliente para que puedan almacenarse de forma segura en Git:
| |
Opcion 2: External Secrets Operator
External Secrets Operator sincroniza secretos desde proveedores externos (AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager) en Kubernetes:
| |
Habilitar Cifrado en Reposo
Asegurate de que etcd cifre los secretos en reposo:
| |
Audit Logging
Los audit logs de Kubernetes registran cada peticion al API server, proporcionando un rastro detallado de quien hizo que y cuando.
| |
Habilita en el API server con:
| |
Envia los audit logs a tu SIEM o sistema de agregacion de logs (Loki, Elasticsearch) para analisis y alertas.
Politicas de Imagenes con Kyverno
Kyverno es un motor de políticas para Kubernetes que valida, muta y genera recursos basándose en políticas. Es mas sencillo de adoptar que OPA Gatekeeper porque las políticas se escriben como recursos de Kubernetes en lugar de Rego.
Requerir Digest de Imagen y Registro de Confianza
| |
Esta política asegura que solo se desplieguen imágenes de tu registro de confianza con digests fijados, previniendo tanto ataques a la cadena de suministro como problemas de mutabilidad de tags.
CIS Kubernetes Benchmark
El CIS Kubernetes Benchmark proporciona un conjunto completo de recomendaciones de seguridad. Ejecuta comprobaciones automatizadas con kube-bench:
| |
Aborda los hallazgos por prioridad: elementos criticos primero (autenticacion del API server, cifrado de etcd), luego altos (RBAC, network policies), despues medios y bajos.
Checklist de Bastionado
Usa esta checklist como punto de partida para asegurar tu cluster:
- API server: autenticacion anonima deshabilitada, audit logging habilitado
- etcd: cifrado en reposo, acceso restringido solo al API server
- RBAC: sin bindings innecesarios de
cluster-admin, minimo privilegio aplicado - Pod Security: PSS
restrictedaplicado en namespaces de produccion - NetworkPolicies: denegacion por defecto en todos los namespaces, reglas de permiso explicitas
- Secretos: gestor de secretos externo o sealed secrets, cifrado en reposo
- Imagenes: imágenes firmadas, aplicación de registro de confianza, fijación de digest
- Nodos: actualizaciones de seguridad automaticas, SO bastionado segun CIS
- Auditoria: audit logs del API server enviados al SIEM
- Monitorizacion: alertas sobre cambios de RBAC, creacion de pods privilegiados, exec en pods
- Cadena de suministro: escaneo de vulnerabilidades en CI/CD, escaneo de imágenes en tiempo de admisión
- Red: TLS entre todos los componentes, service mesh para mTLS entre pods
El bastionado de seguridad no es una actividad puntual. Programa revisiones trimestrales para reevaluar tu postura, ejecutar benchmarks CIS, revisar bindings RBAC y actualizar políticas a medida que tu cluster evoluciona.