¿Cómo prohibir el acceso a los componentes internos del contenedor Docker?


14

Quiero entregar mi aplicación a los clientes en forma de imagen acoplable. Pero es crucial asegurarse de que el usuario final no altere nada dentro del contenedor. El usuario solo debe poder ejecutar / detener el contenedor e interactuar con el contenedor a través de la red.

¿Es posible prohibir el acceso a la parte interna del contenedor? ¿Es posible verificar la integridad de la imagen del contenedor?


2
A menos que administres el host de Docker, creo que no puedes. ¿Qué problema estás dispuesto a resolver al evitar este acceso?
Tensibai

Como menciona Tensibai, depende. Si necesita saber que el contenedor no está modificado por razones de seguridad, básicamente debe ejecutarlo en sus propios servidores. Si solo desea disuadir a las personas de modificarlo para que no rompan las cosas, probablemente haya formas de hacerlo. Describir su caso de uso ayudará aquí.
Aurora0001

Respuestas:


11

En resumen, no puede evitar que sus clientes modifiquen los contenedores que ejecutan en su propia infraestructura. Los contenedores no son como binarios que pueden ofuscarse; Son entornos de tiempo de ejecución. Sin embargo, el código que distribuye dentro del contenedor puede ofuscarse.

Su pregunta alude a un problema de soporte de terceros: clientes que modifican el software que ejecutan en sus propios entornos. Si proporciona herramientas para operar los contenedores que suministra (por ejemplo, monitoreo y registro), los clientes deben acordar (como parte de una licencia de software) no realizar modificaciones no autorizadas en ellos. Esto se aplica a todos los tipos de software de terceros, no solo a los contenedores.

Dependiendo de su situación, también puede tener la opción de proporcionar su aplicación como Software As A Service (SaaS) ejecutándose en una infraestructura en la nube.

Si su cliente requiere que sus contenedores se ejecuten en su infraestructura, y se niega a cumplir con las restricciones de modificación, entonces probablemente no quiera intentar apoyar el uso de su software.


6

Docker no proporciona ningún medio para impedir el acceso de los usuarios al contenedor, sin embargo, como desarrollador de imágenes, podría seguir algunas estrategias

  • Ofusque su software (ruby, python y etc.)
  • Cree su imagen a partir de una imagen base que no tenga shell y otros archivos binarios que el usuario pueda usar para recorrer la imagen.

Por supuesto, siempre pueden exportar el contenedor y reempacarlo, pero esas son medidas extremas ...


¿Por qué se dan Ruby y Python como ejemplos para ofuscar código? El código en esos idiomas generalmente se mantiene como archivos fuente de texto sin cifrar en el sistema operativo en ejecución. ¿No sería preferible usar un lenguaje compilado como C ++, C #, Java o uno que pueda "minificarse" como JS?
AjaxLeung

5

Puede eliminar los usuarios del grupo acoplable y crear sudos para el docker starty docker stop.


3
solo es posible / efectivo si posee esos servidores ...
Dan Cornilescu

5

Si su cliente está listo para invertir dinero, entonces debería usar Docker Enterprise Edition. En Docker EE tiene una herramienta que es UCP(Universal Control Plane) UCP . Por UCP puede crear roles y derechos de acceso y restringir al usuario para cambiar / modificar contenedores.

Si desea probar UCP que DDC (Docker Data Center) con una licencia de prueba de un mes, lo que lo ayudará a elaborar las cosas según sus requisitos.

Espero que esto ayude!

¡Gracias!


1
Como la solución sobre los grupos de acopladores, esto funciona si solo administra el sistema host del
acoplador

2

Dé su entrega a través de guiones ansibles. Mantenga todo tipo de restricciones y comprobaciones en el script ansible.


2
¿Cómo evitaría esto el acceso al contenedor? Intente explicar cómo su propuesta realmente resolvería el problema de OP.
Michael Le Barbier Grünewald
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.