Supongo que le preocupan las aplicaciones en contenedor que se ejecutan como root.
la raíz en el contenedor es un riesgo. Todavía interactúa con el núcleo como raíz. Y si una aplicación logra salir del contenedor, tiene privilegios de root en el host.
Aunque, la raíz en el contenedor ha restringido capacidades en comparación con raíz en el host. P.ej. no tiene la capacidad SYS_ADMIN
que se necesita para mount
. Sin embargo, evite la raíz en el contenedor siempre que sea posible para minimizar los riesgos.
Si sus aplicaciones en contenedores no necesitan privilegios de root, puede ejecutar contenedores con un usuario sin privilegios. La forma más fácil es especificar la opción --user UID:GID
en docker run
.
Pero supongo que necesita privilegios de root para sus aplicaciones en contenedores. Docker proporciona espacios de nombre de usuario para abordar esto.
No doy una configuración de ejemplo aquí ya que no estoy realmente familiarizado con el espacio de nombres de los usuarios. Lo instalé una vez y puedo confirmar que funciona. Recomiendo leer la documentación: enlace
Para abreviar: la configuración del espacio de nombres del usuario logra un usuario root "falso" en un contenedor que en el host se asigna a un usuario sin privilegios. Si la aplicación se rompe, no tiene privilegios de root en el host.
Aparte de eso, puede reducir las capacidades del contenedor para mejorar la seguridad del contenedor. Use la opción --cap-drop=xyz
y descarte todo lo que su contenedor no necesita. O incluso mejor, use --cap-drop=ALL
y agregue solo las capacidades que realmente se necesitan con por ejemplo. %código%. Mire enlace
Otra opción para mejorar la seguridad del contenedor es --cap-add=CHOWN
.