È pericoloso usare le variabili ambientali per i dati segreti?

7

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.

    
posta temporary_user_name 16.11.2018 - 08:22
fonte

1 risposta

2

In generale, memorizzare i segreti nelle variabili di ambiente ha alcuni aspetti negativi, come dice Diogo nel suo post.

Generalmente, per piattaforme come Heroku o utilizzando tecnologie come Docker in cui l'applicazione dovrebbe essere effimera, gli strumenti di gestione dei segreti dedicati sono la soluzione migliore. L'idea è che ci dovrebbe essere uno strumento che trattiene il segreto in forma crittografata e lo fornisce all'applicazione in fase di runtime.

Il segreto può quindi vivere all'interno dell'applicazione, generalmente come un file, che può essere letto e i segreti utilizzati da quel file, se necessario.

Due esempi di strumenti in quest'area sono Hashicorp Vault e Keywhiz di Square .

In aggiunta a questo se stai distribuendo su un cloud, generalmente il cloud provider dovrebbe avere una qualche forma di gestione dei segreti, per esempio AWS Secrets Manager .

Non ho avuto molta esperienza con la gestione dei segreti su Heroku, tuttavia sembrano avere un componente aggiuntivo chiamato ice che opera in quest'area.

    
risposta data 16.11.2018 - 10:16
fonte

Leggi altre domande sui tag