¿Cómo almacenar de forma segura los secretos en el contenedor de Docker?

4

La aplicación en la que estoy trabajando tiene más de una docena de secretos, certificados SSL y claves API. Actualmente tengo un archivo que se agrega a .gitignore y contiene todos mis secretos. ¿Cómo almacenar de forma segura todos estos secretos? ¿Cómo las aplicaciones empresariales manejan esto, donde la seguridad es la máxima prioridad?

Estoy investigando AWS KMS y por lo que tengo entendido, tengo que cifrar todos los secretos, cometerlos y luego, en tiempo de ejecución, pasar mis credenciales de AWS para descifrar los secretos (el usuario solo puede usar la clave KMS para descifrado y no se agregan otros permisos para el usuario).

Ahora, asumiendo que la máquina donde se ejecutan los contenedores está comprometida - los secretos están encriptados, por lo que debería estar bien, pero! si se ejecuta el comando docker inspect , mostrará todas las variables de entorno (los secretos de AWS), por lo que ejecuto en el contenedor y todo lo que tengo que hacer es usar las variables env para descifrar los secretos. tal vez me estoy perdiendo un paso en alguna parte?

Nota : mi solución actual no es segura también. El archivo está gitignored, pero aún existe en la máquina donde se ejecutan los contenedores (y más adelante, una vez que se crea la imagen, se exponen como env variables).

Nota 2 : el repositorio de Git es privado

    
pregunta r00m 06.03.2017 - 22:15
fuente

2 respuestas

2

En términos generales, debe asumir una seguridad más estricta para la instancia que está ejecutando el contenedor que el contenedor en sí mismo, ya que, como señala, un compromiso que afecta a todo lo que está más abajo. Esto es lo mismo con el host de VM que ejecuta su instancia ec2.

Una solución estándar es pasar secretos al contenedor a través de la variable de entorno. También he visto soluciones (para los secretos almacenados en Hashicorp Vault) que crean un sistema de archivos de fusibles que se monta en el contenedor o un enfoque similar utilizando un controlador de volumen Docker. Esto no es tan sencillo, pero puede ser más fácil si pasas muchos secretos.

    
respondido por el Xiong Chiamiov 06.03.2017 - 22:40
fuente
3

Docker Secrets es el nuevo método recomendado para compartir y amp; Guardando secretos dentro de contenedores. Docker optó deliberadamente por almacenar secretos en archivos bajo /run/secrets sobre el enfoque de variable de entorno.

    
respondido por el smeeb 18.06.2017 - 16:05
fuente

Lea otras preguntas en las etiquetas