Nota: questo è un messaggio incrociato di la mia domanda su SO . Sentiti libero di mantenere quello nella posizione più pertinente e chiudere l'altro.
Abbiamo un'app per rails che verrà distribuita su torquebox / jboss. (Questo in un modo non importa troppo per la domanda come si applicherebbe a qualsiasi app Web, non solo a quella di Rails.) Richiama determinate variabili di configurazione sensibili a livello di app dall'ambiente, come ENV['DATABASE_URL']
(che include le credenziali di autenticazione in modo che appaia come drivername://user:pass@host:port/dbname
) e ENV['PEPPER']
all'avvio, per eseguire processi essenziali come la connessione al database. Le variabili non sono crittografate in questo momento. In sostanza, l'uso dell'ambiente per contenere queste variabili segue l'app Heroku di 12 fattori.
Qui ci sono due domande:
-
È compatibile PCI conservare tali variabili in modo non criptato nell'ambiente?
-
Le variabili di ambiente non devono venire dalla shell del sistema operativo (il luogo normale in cui vivrebbero). Potrebbero essere ugualmente impostati in jboss o torquebox se ciò fosse più sicuro ad esempio contro un attacco come shellshock. Quale archivio di variabili ENV dovrebbe essere usato?
Sono consapevole che esistono alternative, come la crittografia con DPAPI (ma solo Windows), utilizzando le keystore Java (ma che è limitato all'autenticazione basata su certificato client AFAIK, non semplici password vecchie), ma sono più di un dolore da usare, e l'uso di variabili ambientali sembra così ampiamente raccomandato anche dagli stessi fornitori di PaaS che mi chiedo se dobbiamo davvero fare il possibile.