Actualmente estoy intentando investigar si es posible evitar que un usuario de Kubernetes cree contenedores privilegiados a través de RBAC. Soy consciente de que, a partir de Kubernetes 1.1, los contenedores privilegiados están habilitados de forma predeterminada para admitir los requisitos subyacentes de Docker. Esto está bien, no estoy buscando bloquear a todos para que no puedan ejecutar contenedores privilegiados.
Sin embargo, me gustaría trabajar sobre un principio de privilegio mínimo. Por ejemplo, me gustaría evitar que los usuarios que pueden usar algo como kubectl node-shell puedan obtener acceso raíz a un nodo trabajador, preferiblemente a través de RBAC.
es posible?
Hay varias formas de lograr esto y me gustaría comenzar con la primera, la oficial: Política de seguridad de pod .
La política que desea implementar es la siguiente: Privilegiado
determina si algún contenedor en un pod puede habilitar el modo privilegiado. De manera predeterminada, un contenedor no puede acceder a ningún dispositivo en el host, pero un contenedor "privilegiado" tiene acceso a todos los dispositivos en el host. Esto permite que el contenedor tenga casi el mismo acceso que los procesos que se ejecutan en el host. Esto es útil para los contenedores que desean usar las capacidades de Linux, como manipular la pila de red y acceder a los dispositivos.
La documentación de Kubernetes proporciona algunos ejemplos sobre cómo interactuar con PSP, aunque se debe hacer un gran descargo de responsabilidad: el control de admisión de PodSecurityPolicy debe estar activado en el servidor API.
Además del controlador de admisión oficial, existen otros proyectos que permiten realizar la denegación de contenedores con criterios coincidentes, así como ejecutar como privilegiados: Gatekeeper , Kyverno .
Hay otros proyectos que pueden abordar su caso de uso, pero quería compartir estos dos últimos porque parecen los más prometedores.
Una vez que PodSecurityPolicies se haya habilitado en su clúster, el estándar recomienda crear 3 niveles de políticas: