¿Las mejores prácticas para proteger contraseñas de DB para múltiples aplicaciones web?

3

Estoy trabajando en la actualización de una infraestructura "heredada" donde se utilizan algunas aplicaciones de PHP, Rails y Perl (CGI). Históricamente, estas aplicaciones se escribieron con las credenciales de la base de datos en todo el código fuente como variables de programa.

Estamos discutiendo maneras de cambiar esto. Una propuesta sugiere mover todas las credenciales de la base de datos al archivo Apache /etc/apache2/envvars . Otra propuesta sugiere el uso de la bóveda de Hashicorp (no entiendo completamente cómo funciona esta bestia).

El método envvars parece mejor, pero supongo que esto significaría que cualquier aplicación comprometida tendría acceso completo a cualquier otra base de datos de aplicaciones. Me pregunto si un mejor enfoque incluiría algún tipo de partición para aplicaciones donde (el mal ejemplo, pero sucede) la "lista de tareas pendientes" de Bob no comprometería necesariamente las credenciales de una aplicación de recursos humanos a través de las variables de entorno de Apache. / p>

La bóveda es ... rara. Por lo que puedo decir, crea credenciales de base de datos temporales en la base de datos. No entiendo completamente cómo funciona, así que no puedo decir si es una buena opción.

¿Cuál es la mejor práctica para proteger las credenciales de base de datos en un servidor web? Cualquier cosa es mejor que dejarlos en el código fuente, pero si vamos a hacer un gran cambio aquí, preferiría no tener que volver a hacerlo debido a malas interpretaciones. He consultado los enlaces aquí y aquí con poca discusión al respecto.

    
pregunta Server Fault 07.09.2017 - 19:38
fuente

2 respuestas

2

Hay muchas herramientas / sistemas que puede utilizar para proteger los secretos de producción. Muchos de ellos aprovecharán algún tipo de KMS (sistema de administración de claves) y / o HSM (módulos de seguridad de hardware) para almacenar la (s) clave (s) maestra (s) que pueden usar las aplicaciones para acceder a los secretos en los entornos de producción. Vea algunas de las excelentes soluciones de código abierto .

Por ejemplo, Confidant de Lyft es un sistema de administración secreto que almacena las cargas útiles cifradas en DynamoDB. Las claves maestras son administradas y el acceso controlado por AWS KMS. HashiCorp Vault también es una opción sólida (pero quizás el conjunto de características sea demasiado completo). Ofrece un conjunto similar de características más características de nivel superior, como la rotación automática de credenciales de mysql DB. Debería poder elegir según sus casos de uso y configuración de producción.

    
respondido por el Kaiyi Li 09.09.2017 - 23:10
fuente
1

Vault es una buena solución, ya que busca administrar credenciales y también mantenerlas seguras, ya que tiene incorporadas todas las restricciones de arrendamiento y fecha / hora.

En este caso, solo está buscando almacenar las credenciales de dB. Los entornos comerciales son bastante estándar, simplemente no confirme el archivo Envar en el control de código fuente.

También tenga en cuenta que todos estos dbs tienen interfaces enlazadas, por lo que es tan importante asegurarse de que se enlaza correctamente con localhost o un rango de IP fijo que también esté protegido / filtrado por un firewall. De esa manera, incluso si el dB PW está expuesto, aún no podrían obtener acceso remoto.

    
respondido por el Trickycm 09.09.2017 - 21:27
fuente

Lea otras preguntas en las etiquetas