TL; DR
Existen varias razones para usar variables de entorno en lugar de archivos de configuración, pero dos de las más comunes que se deben pasar por alto es el valor de utilidad de la configuración fuera de banda y la separación mejorada entre servidores, aplicaciones o roles organizacionales. En lugar de presentar una lista exhaustiva de todas las razones posibles, solo abordo estos dos temas en mi respuesta, y toco ligeramente sus implicaciones de seguridad.
Configuración fuera de banda: separación de secretos del código fuente
Si almacena todos sus secretos en un archivo de configuración, debe distribuir esos secretos a cada servidor. Eso significa verificar los secretos en el control de revisión junto con su código, o tener un repositorio o mecanismo de distribución completamente separado para los secretos.
Cifrar tus secretos realmente no ayuda a resolver esto. ¡Todo lo que hace es empujar el problema a una eliminación, porque ahora también debe preocuparse por la administración y distribución de claves!
En resumen, las variables de entorno son un enfoque para mover los datos por servidor o por aplicación fuera del código fuente cuando desea separar el desarrollo de las operaciones. ¡Esto es especialmente importante si ha publicado el código fuente!
Mejorar la separación: servidores, aplicaciones y roles
Si bien ciertamente podría tener un archivo de configuración para guardar sus secretos, si almacena los secretos en el código fuente tiene un problema de especificidad. ¿Tiene una rama o repositorio separado para cada conjunto de secretos? ¿Cómo se asegura de que el conjunto correcto de secretos llegue a los servidores correctos? ¿O reduce la seguridad al tener "secretos" que son los mismos en todas partes (o legibles en todas partes, si los tiene todos en un archivo) y, por lo tanto, constituyen un riesgo mayor si fallan los controles de seguridad de cualquier sistema?
Si desea tener secretos únicos en cada servidor, o para cada aplicación, las variables de entorno eliminan el problema de tener que administrar una multitud de archivos. Si agrega un nuevo servidor, aplicación o rol, no tiene que crear archivos nuevos o actualizar los antiguos: simplemente actualiza el entorno del sistema en cuestión.
Pensamientos de despedida sobre seguridad
Si bien una exploración exhaustiva de la seguridad del núcleo / memoria / archivo está fuera del alcance de esta respuesta, vale la pena señalar que las variables de entorno implementadas adecuadamente por sistema no son menos seguras que los secretos "encriptados". En cualquier caso, el sistema de destino todavía tiene que mantener el secreto descifrado en la memoria en algún momento para poder usarlo.
También vale la pena señalar que cuando los valores se almacenan en la memoria volátil en un nodo determinado, no hay ningún archivo en el disco que se pueda copiar y atacar sin conexión. Esto generalmente se considera una ventaja para los secretos en memoria, pero ciertamente no es concluyente.
La cuestión de las variables de entorno frente a otras técnicas de gestión de secretos es realmente más sobre las compensaciones de seguridad y usabilidad que sobre los absolutos. Su experiencia puede ser diferente.