Ejecutando el contenedor Docker como usuario Root

2

La ejecución de un proceso de contenedor Docker como root dentro del contenedor se considera insegura. Pero tengo algunas dudas que debo aclarar:

  1. ¿Sigue siendo el mismo tipo de inseguridad incluso si el contenedor no puede montar el socket de la ventana acoplable o alguna parte del sistema de archivos raíz desde el host?

  2. ¿Sigue siendo el mismo inseguro si hay un mapeo uno a uno de un contenedor y una máquina virtual? Por ejemplo, ¿está ejecutando solo un contenedor por máquina virtual?

  3. ¿Sigue siendo inseguro si el contenedor no se está ejecutando como privilegiado?

  4. ¿Cuál es la diferencia entre ejecutarse como root y como privilegiado?

Aparte de lo anterior, ¿hay alguna forma sencilla de falsificar la raíz? ¿Cómo podemos asignar el ID de usuario 0 para que sea algo así como un número 1001 más grande en el host?

    
pregunta Ijaz Ahmad Khan 08.10.2018 - 21:22
fuente

1 respuesta

2

Respondiendo a sus preguntas:

  1. No es lo mismo. Si no configura en un contenedor el acceso al socket de la ventana acoplable, eso significa que el contenedor no podrá crear, verificar, eliminar u otras acciones en los contenedores de la ventana acoplable del host, eso es todo. Pero en el contenedor, el usuario root todavía puede "romper" su software.

  2. Ejecutar solo un contenedor por máquina virtual significa que si alguien corta su contenedor y escapa de él de alguna manera, solo accederá a su VM. Podría ser una buena práctica pero excesiva en mi opinión. Puede crear contenedores en diferentes redes para aislarlos, aunque de esta manera, si escapan, tendrán acceso a todos los contenedores.

  3. Ejecutar contenedores "no privilegiados" es más seguro que ejecutarlos como "privilegiados". Eso es obvio.

  4. Ejecutar contenedor como raíz significa que los procesos en el contenedor estarán con todos los privilegios en el contenedor. Para ejecutar el contenedor como privilegiado significa que el contenedor tendrá todos los privilegios incluso en el host. Esto suele hacerse en algunos casos especiales ... supongamos que tiene un contenedor que necesita acceso a la interfaz de red inalámbrica física en el host. Para asegurarse de que será necesario lanzarlo como privilegiado o el contenedor no tendrá acceso al dispositivo.

Espero que ayude.

    
respondido por el OscarAkaElvis 27.10.2018 - 08:55
fuente

Lea otras preguntas en las etiquetas