Cómo proporcionar certificados SSL a una aplicación Docker de forma segura

21

¿Cuál es la forma más segura de proporcionar certificados SSL (para HTTPS) a una aplicación Docker?

Los enfoques que he considerado:

  1. El medio ambiente

    Es común (pero obviamente no es obligatorio) usar el enfoque 12factor con las aplicaciones Docker, que sugerirían variables de entorno, que son considerado seguro , pero las cadenas de certificados pueden ser un poco largas y difíciles de manejar para las variables de entorno (no es que esto sea un factor decisivo).

  2. Imagen privada

    También puedo crear una imagen privada y personalizada de Docker, pero si no estoy usando un repositorio privado de Docker (y no estoy usando Docker Hub en este momento), eso significa confiar en al menos otro. fiesta con mi secreto Si uso compilaciones automatizadas, eso también significa confiar en otra parte (es decir, GitHub).

  3. Un volumen montado

    Esto parece menos complicado que pasar variables de entorno largas que deben procesarse. Pero hasta este punto, no he necesitado en absoluto un volumen local, y me parece un poco desafortunado si esto es lo único que me obliga a usar uno. Pero tal vez ese sea el precio para pagar la seguridad?

Desde un punto de vista de seguridad, ¿cuál es la mejor opción? ¿O hay ventajas y desventajas de estos enfoques que no he considerado?

Como referencia, mi imagen actual de Docker está alojada en Docker Hub, creada con una compilación automatizada de GitHub, y los contenedores se ejecutan en Tutum. Mis repositorios de Docker Hub y GitHub son privados en este momento, pero espero hacerlos públicos más adelante, cuando el proyecto sea un poco más maduro. Aunque espero una respuesta que sea lo suficientemente general para aplicar más ampliamente que en esta configuración específica.

    
pregunta Flimzy 16.08.2015 - 21:29
fuente

2 respuestas

7

Un desafío con el enfoque de la variable de entorno es que se comparten con cualquier contenedor vinculado (más información here ), que puede restringir el uso de ese enfoque en algunas configuraciones.

Las imágenes privadas como usted dice son un problema, ya que está compartiendo la clave con varias partes y esto también podría afectar su capacidad para usar otros servicios relacionados que necesitarían acceso a los repositorios de github o docker (por ejemplo, Jenkins )

Esto deja la solución de volumen montado, que parece ser el mejor enfoque desde un punto de vista de seguridad. Restringe la distribución necesaria al host de la ventana acoplable, que en la mayoría de los casos es una menor exposición que colocarlo con terceros o potencialmente exponerlo a otros contenedores vinculados.

    
respondido por el Rоry McCune 16.08.2015 - 23:21
fuente
4

Si alguien encuentra este tema, tenga en cuenta que una solución más reciente podría ser usar los secretos de Docker: enlace

Permite que los servicios de Docker Swarm transmitan de forma segura información, como contraseñas, certificados SSL, etc., a contenedores.

    
respondido por el ttaveira 08.07.2017 - 00:21
fuente

Lea otras preguntas en las etiquetas