Dopo aver letto questo post del blog in cui l'autore espone argomenti contro l'uso di variabili ambientali per l'archiviazione dei segreti, non sono sicuro di come procedere con la distribuzione della mia applicazione.
I suoi argomenti principali sono i seguenti:
Given that the environment is implicitly available to the process, it's hard, if not impossible, to track access and how the contents get exposed (ps -eww ).
It's common to have applications grab the whole environment and print it out for debugging or error reporting. So many secrets get leaked to PagerDuty that they have a well-greased internal process to scrub them from their infrastructure.
Environment variables are passed down to child processes, which allows for unintended access. This breaks the principle of least privilege. Imagine that as part of your application, you call to a third-party tool to perform some action—all of a sudden that third-party tool has access to your environment, and god knows what it will do with it.
When applications crash, it's common for them to store the environment variables in log-files for later debugging. This means plain-text secrets on disk.
Putting secrets in ENV variables quickly turns into tribal knowledge. New engineers who are not aware of the sensitive nature of specific environment variables will not handle them appropriately/with care (filtering them to sub-processes, etc).
Mi sembrano abbastanza ragionevoli, ma non sono un professionista della sicurezza. Il suo suggerimento alternativo è di usare la funzionalità di mantenimento segreto di Docker, ma supponiamo che tu stia usando Docker .... che non lo sono. Sono su Heroku. Quindi sono abbastanza incerto su questo ora. Non sembra esserci alcun supporto per l'utilizzo di Vault su Heroku, meglio che posso dire.