¿Por qué se permite al usuario root de forma predeterminada en los servicios de Kubernetes en la nube pública?

¿Por qué se permite al usuario root de forma predeterminada en los servicios de Kubernetes en la nube pública?

En un entorno de Kubernetes, supongo que al usuario raíz no se le debe permitir de forma predeterminada mitigar el riesgo en caso de que se acceda al sistema operativo host desde el interior de un contenedor. Esta configuración debe realizarse escribiendo en PodSecurityPolicy.

Teniendo esto en cuenta, me pregunto: ¿Por qué podemos utilizar el usuario raíz para ejecutar contenedores en servicios de Kubernetes en la nube pública como EKS, AKE y GKE? ¿Tienen otra capa de medidas de seguridad para evitar que los atacantes comprometan los contenedores?

Respuesta1

Incluso si existe la posibilidad de que un proceso en contenedores obtenga acceso al sistema operativo host debido a una vulnerabilidad no solucionada y, por lo tanto, tenga control total sobre el sistema debido a que se ejecuta como root, creo que las nubes públicas eligen no aplicar esto de forma predeterminada porque muchas Los paquetes de software más conocidos tienen susproceso principal ejecutado como root- por ejemplo, el servicio nginx se basa en un proceso demonio principal que se ejecuta como root, que a su vez genera los procesos de trabajo que se ejecutan como www-datapara una mejor seguridad.

Respuesta2

El usuario root puede realizar cualquier acción en un sistema Linux, incluida la ejecución de contenedores Docker. No hay forma de impedir que el usuario root ejecute contenedores acoplables. En cambio, el camino a seguir es limitar el acceso al usuario root y usar sudo para permitir que los usuarios no root realicen ciertas acciones en el sistema.

Sin embargo, en caso de Dockerque no importe mucho porque:

El grupo acoplable otorga privilegios equivalentes a los del usuario root. Para obtener detalles sobre cómo esto afecta la seguridad de su sistema, consulteSuperficie de ataque del demonio Docker.

administrar-docker-como-usuario-no-root

Por lo tanto, cualquier usuario de Linux que tenga permiso para ejecutar comandos de Docker puede obtener privilegios de root en el sistema.

Los privilegios de root dentro de un contenedor no son un problema ya que Docker es una tecnología de virtualización a nivel de sistema operativo. El usuario root dentro del contenedor no tiene acceso al sistema operativo subyacente que ejecuta el demonio acoplable.

información relacionada