Contraseña segura de la base de datos almacenada en una variable env

12

Necesito en algún lugar almacenar mi contraseña de base de datos en mi entorno de producción para acceder a la base de datos. En el momento en que el sistema prod se implementa en la nube, también lo está el DB. La contraseña, el nombre de usuario y otra información confidencial se almacenan como variables de entorno en texto sin formato en la máquina de producción.

Mirando un poco a mi alrededor, vi que la mayoría de las soluciones se centran en limitar el acceso a este tipo de datos confidenciales (almacenándolos en un archivo con acceso concedido solo al administrador del sistema) y al acceso a la propia base de datos (limitando el acceso solo a direcciones IP fijas).
Desafortunadamente, ninguno de ellos es posible en este caso por varias razones: el servicio que aloja el sistema NO nos permite tener una IP (por lo que no puedo configurar la base de datos para que sea accesible solo por una IP) y las credenciales de la DB deben permanecer en una variable de entorno por razones de despliegue.

Por otro lado, el DB no contiene datos confidenciales y, más en general, en este momento nos preocupa que no haya personas internas que pasen por el DB de producción y causen daños, en lugar de ataques de hackers externos. / p>

Entonces, mi pregunta es: ¿cuál sería una "solución bastante segura" en este caso?

¿Sería una solución segura cifrar la contraseña de la base de datos y luego almacenar la clave de descifrado en un archivo de configuración cargado en GitHub cifrado con este procedimiento (aunque parece un poco desactualizado)?

Pensé que este era un tema bastante sencillo y popular, pero aparentemente estaba equivocado, ya que parece que no hay muchas respuestas de tipo "TODO-list".

    
pregunta bncc 06.03.2015 - 11:42
fuente

2 respuestas

6

Suponiendo que ejecute el servidor web como su propio usuario, solo el root y ese usuario pueden leer la Variable de entorno de su sistema operativo †. A menos que estés usando AIX de 30 años o algo así. Incluso Windows protege los entornos.

Si cifra los valores, ¿cómo va a proteger la clave ‡? La clave puede ser leída por el usuario o la raíz también.

Si almacena los valores en un archivo, ¿cómo es eso más seguro que un envvar? No lo es Un envvar es más seguro en cuanto a que no pondrá las contraseñas en el control de origen de forma accidental.

† ¡Esto no se aplica a las opciones de la línea de comandos!
‡ Vas a comprar un HSM, así es como. El HSM aún puede ser usado por root o usuario

    
respondido por el Neil McGuigan 07.03.2015 - 00:27
fuente
3

Desea tener un método para almacenar y distribuir información secreta de manera segura. Una posible solución sería Vault: enlace

No estoy seguro de a qué se refiere cuando dice "y las credenciales de la base de datos deben permanecer en una variable de entorno por motivos de implementación", pero es posible que desee reconsiderar esa suposición. Si resulta que ese es realmente el caso, aún puede usar algo como Vault para cargar la contraseña de la base de datos en la variable de entorno en tiempo de ejecución, de modo que nunca viva sin cifrar en el disco. Pero definitivamente considere no almacenarlo en una variable de entorno, o al menos no global.

    
respondido por el Nathan 06.06.2015 - 02:25
fuente

Lea otras preguntas en las etiquetas