Introducción
Confidential Containers (CoCo) refuerza la seguridad de los workloads en entornos no confiables asumiendo que el plano de control de Kubernetes no es confiable. Esto exige validaciones estrictas en el runtime y configuraciones adicionales en los pods, lo que puede complicar la experiencia de los desarrolladores y aumentar la fricción operativa. Kyverno actúa como un Policy as Code engine dentro del mismo plano de control, permitiendo automatizar la inyección de configuraciones CoCo y validar manifiestos antes de que los pods sean admitidos. Así, los equipos de plataforma estandarizan los requisitos de CoCo sin delegar decisiones de seguridad al plano de control, preservando el modelo de confianza cero.
Qué es y para qué sirve
Confidential Containers (CoCo) es una iniciativa de la CNCF que protege workloads en entornos donde partes de la infraestructura (ej: kube-apiserver, kubelet) no son de confianza. Su enfoque central es:- Verificar todo: Cada especificación de pod enviada al runtime debe ser validada mediante remote attestation.
- Runtime seguro: El runtime (ej: Kata Containers con CoCo) verifica la integridad del pod antes de ejecutarlo.
Esto introduce desafíos prácticos para los equipos:
- Configuración manual repetitiva: Inyectar
annotations,labels, ysecurityContextcorrectos en cada manifiesto. - Validación temprana: Rechazar configuraciones inválidas antes de que el pod sea creado (ej: falta el campo
runAsNonRoot: trueen un pod CoCo). - Consistencia operativa: Garantizar que todas las aplicaciones cumplan con los requisitos de CoCo, incluso en clusters grandes.
- Mutación automática: Inyecta configuraciones CoCo en los manifiestos (ej: añadir
seccompProfile: RuntimeDefault). - Validación en tiempo de admisión: Rechaza pods con configuraciones inválidas (ej:
privileged: trueen un pod CoCo). - Políticas como código: Definir reglas en YAML que se apliquen de forma declarativa en todo el cluster.
> Importante: Kyverno no sustituye a la remote attestation. Su rol es automatizar la infraestructura para que los equipos se enfoquen en el código, no en los detalles de configuración. La seguridad final sigue siendo responsabilidad del runtime y el proceso de attestación.
Prerequisitos
Para seguir esta guía, necesitás:
| Componente | Versión mínima | Notas |
|---|---|---|
| Kubernetes | 1.28+ | Cluster con *RuntimeClass* configurado para CoCo (ej: BLOCK32 con CoCo). |
| Kyverno | 1.11.0+ | Instalado en modo *admission controller*. |
| Kata Containers | 3.1.0+ | Con soporte para CoCo (ver [Kata CoCo docs](https://github.com/kata-containers/kata-containers/blob/main/docs/confidential-containers/README.md)). |
| Helm | 3.12.0+ | Para instalar Kyverno y sus políticas. |
| Permisos |
