È possibile memorizzare le app sensibili di configurazione vars nell'ambiente ed essere conforme PCI?

2

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:

  1. È compatibile PCI conservare tali variabili in modo non criptato nell'ambiente?

  2. 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.

    
posta user1475135 04.11.2014 - 14:53
fonte

1 risposta

1

L'URL del DB (diverso da username e password) e Pepper non sono valori sensibili. Potresti non voler pubblicizzarli, ma dovresti presumere che siano comunque conosciuti. Se la tua sicurezza dipende dalla loro sicurezza, allora non sei quasi certamente compatibile con PCI. Qualsiasi "sicurezza" fornita da tale segretezza è solo sicurezza per oscurità.

Il DB dovrebbe essere inaccessibile se non dai tuoi server web e il tuo pepe esiste solo per rendere l'hashing più difficile. Non vedo perché questi particolari valori siano accessibili all'ambiente sarebbe un problema poiché non sono comunque segreti.

Il problema principale potrebbe essere il fatto che le credenziali del DB sono un po 'come volare nel vento, ma non c'è davvero troppo modo di doverlo immagazzinare da qualche parte. Dovresti cercare di limitare l'accesso ai dati di configurazione includendo il nome utente e la password per il DB il più possibile, ma a meno che tu non sia abbastanza elaborato, deve trovarsi in un file da qualche parte. Rendilo il più inaccessibile possibile e assicurati che solo i sistemi che necessitano dell'accesso al server DB abbiano accesso e il tuo rischio sia limitato.

Lascerò che qualcun altro parli sul nome utente e sulla password in modo specifico anche se è da un po 'che non mi occupo più di memoria PCI-DSS e non ho particolarmente tempo per cercare le specifiche al momento.

    
risposta data 04.11.2014 - 15:34
fonte

Leggi altre domande sui tag