Tengo la siguiente configuración de contenedor.
En un servidor básico, se instalan y ejecutan dos demonios de Docker.
- Demonio Principal de Docker Ejecuta mis contenedores de aplicaciones exponiendo 80/443 al mundo exterior.
- Demonio de la Ventana Acoplable del Complemento Ejecuta algunos contenedores proporcionados por el cliente que se comunican con mi aplicación a través de 80/443.
Me gustaría dar acceso al cliente a la API (2376) de la Demonio de la Ventana Acoplable del Complemento para que el cliente pueda desplegar / iniciar / detener sus propios contenedores. El cliente solo tendrá acceso a la API, no al Host (SSH).
El problema al que me enfrento actualmente es, ¿qué pasa si los clientes ejecutan un contenedor que hace algo inseguro como docker run -v /:/host/root Ubuntu rm -rf /host/root
.
Mi pregunta es qué puedo hacer para prevenir el Demonio de la Ventana Acoplable del Complemento desde la raíz /
o cualquier otro directorio externo /home/user/
,
- Es una opción para iniciar el demonio Docker en
/home/user/
? - ¿Puedo usar algo de magia LSM (Módulos de Seguridad de Linux SELinux/Apparmor) para evitar que el demonio docker monte algunas o todas las rutas de host, excepto el inicio de los usuarios o var/docker/libs?
- Puede
--userns-remap
¿me ayudas a conseguir mi objetivo? - Hay otras opciones disponibles, excepto VMs?
El servidor pertenece completamente a un solo cliente. Por lo tanto, la seguridad o la fuga de datos no es mi principal preocupación. Lo que realmente quiero evitar es que alguien en Plugin Demonio está haciendo algo estúpido, que influye en mis contenedores que se ejecutan en Demonio Principal de Docker. Me gustaría mantenerme delgado y ceñirme al flujo de trabajo solo de docker y no quiero configurar un flujo de trabajo adicional para la creación de VM.