Estoy viendo una tendencia a implementar aplicaciones web en PaaS que la configuración se define normalmente en las variables de entorno. p.ej. Funciones de Azure o .NET core apis
Suponiendo que esto se haya hecho para seguir las buenas prácticas y garantizar que los secretos no terminen en el control de código / fuente. Y que es accionado por un sistema de administración de versiones de modo que hay diferentes secretos por entorno, es decir, dev, staging, prod. O tal vez almacenado en una clave (en el caso de Azure) y luego la aplicación tiene permiso para obtener el secreto en tiempo de ejecución en la primera carga ... es decir, el desarrollador tiene buenas intenciones.
El razonamiento está muy bien, pero los secretos aún terminan en una variable ambiental, fácilmente accesible.
En los días pasados (¡hace aproximadamente un año!) de asp.net completo, cifraríamos las cadenas de conexión de web.config usando una clave de máquina, por lo que al menos el archivo físico no representaba una amenaza.
¿Las variables de entorno asumen que un atacante no puede ejecutar código en tiempo de ejecución?
¿O las ofertas de marcos / PasS suelen tener otras formas de protección sobre las variables ambientales? Tengo un vago recuerdo o quizás Heroku proporcione medidas de seguridad adicionales.
Supongo que para cualquier cosa sensible, debería almacenarse en una clave (o similar) fácilmente rotable, auditoría registrada, usando la defensa en precauciones de profundidad, etc., pero me pregunto si la tendencia de las variables ambientales es un mal olor a seguridad o ¿Los marcos que promueven esto brindan una protección adecuada para los secretos secretos levemente :-)?