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.