Asegurar que las imágenes de contenedor estén libres de vulnerabilidades conocidas antes del despliegue.
→Integrar un escáner de imágenes como Trivy, Clair o Grype en el pipeline de CI/CD para escanear imágenes y fallar la construcción si se encuentran vulnerabilidades críticas.
Por qué: Automatiza la detección de vulnerabilidades temprano ("shift left"), evitando que el código vulnerable llegue a producción.
Asegurar que solo se desplieguen imágenes de contenedor confiables y sin modificar en el clúster.
→Firmar imágenes con una herramienta como Cosign en el pipeline de CI. Usar un controlador de admisión validador (por ejemplo, Kyverno, Gatekeeper) para verificar la firma en el momento del despliegue.
Por qué: Proporciona una prueba criptográfica de la integridad de la imagen (no ha sido alterada) y de su procedencia (proviene de una fuente confiable).
Detectar actividad maliciosa dentro de un contenedor en ejecución (por ejemplo, shell iniciado, acceso a archivos sensibles).
→Desplegar una herramienta de seguridad en tiempo de ejecución como Falco, que utiliza eBPF para monitorizar llamadas al sistema y alertar sobre comportamientos sospechosos basándose en un conjunto de reglas definido.
Por qué: Proporciona visibilidad de la actividad en tiempo de ejecución, algo que el escaneo estático y el control de admisión no pueden ver. Es crucial para detectar brechas activas.
Aplicar políticas de seguridad personalizadas y específicas de la organización (por ejemplo, "todas las imágenes deben provenir de nuestro registro corporativo").
→Usar un motor de políticas como OPA Gatekeeper o Kyverno como controlador de admisión validador para aplicar políticas escritas en Rego o YAML.
Por qué: Permite una aplicación flexible, declarativa y automatizada de políticas de seguridad que van más allá de los controles integrados de Kubernetes.
Cifrar y autenticar todo el tráfico de servicio a servicio dentro del clúster.
→Implementar una malla de servicios (por ejemplo, Istio, Linkerd) para proporcionar automáticamente TLS mutuo (mTLS) para todos los servicios en la malla.
Por qué: Logra una red de confianza cero al asegurar que todo el tráfico dentro del clúster esté cifrado y que los servicios verifiquen mutuamente la identidad del otro.
Ejecutar cargas de trabajo no confiables o multiinquilino que requieren un aislamiento más fuerte que los contenedores estándar.
→Usar un entorno de ejecución de contenedores en sandbox como gVisor o Kata Containers, que proporcionan una capa adicional de aislamiento entre el contenedor y el kernel del host.
Por qué: Reduce la superficie de ataque del kernel del host, haciendo que el escape del contenedor sea significativamente más difícil.
Control granular sobre los permisos de un contenedor a nivel del kernel.
→Usar perfiles de Seccomp para filtrar las llamadas al sistema permitidas y perfiles de AppArmor/SELinux para aplicar controles de acceso obligatorios (MAC) en el acceso a archivos y redes.
Por qué: Estas características de seguridad nativas de Linux proporcionan una capa profunda de defensa, restringiendo lo que un proceso de contenedor comprometido puede hacer fundamentalmente.
Reducir la superficie de ataque dentro de una imagen de contenedor.
→Construir imágenes de aplicación utilizando imágenes base mínimas o "distroless" que contengan solo la aplicación y sus dependencias directas.
Por qué: Elimina shells, gestores de paquetes y otras utilidades que son innecesarias para producción y podrían ser utilizadas por un atacante después de un compromiso.