Le migliori pratiche per proteggere le password di DB per più app web?

3

Sto lavorando all'aggiornamento di un'infrastruttura "legacy" in cui sono in uso una manciata di applicazioni PHP, Rails e Perl (CGI). Storicamente, queste applicazioni sono state scritte con le credenziali del database sparse in tutto il codice sorgente come variabili di programma.

Stiamo discutendo sui modi per cambiare questo. Una proposta suggerisce di spostare tutti i crediti DB nel file /etc/apache2/envvars di Apache. Un'altra proposta suggerisce l'uso del vault di Hashicorp (non capisco del tutto come funzioni questa bestia).

Il metodo envvars sembra migliore, ma presumo che ciò significherebbe che qualsiasi applicazione compromessa avrebbe pieno accesso ad eventuali altre credenziali di DB di applicazioni. Mi chiedo se un approccio migliore includa una sorta di partizionamento per le applicazioni in cui (un cattivo esempio, ma succede) la "lista delle cose" compromessa di Bob non comprometterebbe nettamente le credenziali per un'applicazione HR attraverso le variabili di ambiente Apache.

Vault è .. strano. Da quello che posso dire, crea credenziali DB temporanee nel database. Non capisco appieno come funzioni, quindi non so se è una buona idea.

Qual è la migliore pratica per proteggere le credenziali di DB su un server web? Qualunque cosa è meglio che lasciarli nel codice sorgente, ma se faremo un grande cambiamento qui, preferirei non doverlo fare di nuovo a causa di interpretazioni errate. Ho controllato i link qui e qui con poche discussioni a riguardo.

    
posta Server Fault 07.09.2017 - 19:38
fonte

2 risposte

2

Ci sono molti strumenti / sistemi che puoi usare per proteggere i segreti di produzione. Molti di essi sfruttano una sorta di KMS (sistema di gestione delle chiavi) e / o HSM (moduli di sicurezza hardware) per memorizzare le chiavi principali che possono essere utilizzate dalle applicazioni per accedere ai segreti negli ambienti di produzione. Guarda alcune delle grandi soluzioni open source .

Ad esempio, Confidant di Lyft è un sistema di gestione segreto che memorizza i carichi utili crittografati in DynamoDB. Le chiavi principali sono gestite e l'accesso è controllato da AWS KMS. HashiCorp Vault è anche un'opzione solida (ma forse il set di funzionalità è troppo completo). Offre un set di funzionalità simile, oltre a funzioni di livello superiore come la rotazione delle credenziali di Auto mysql DB. Dovresti poter scegliere in base ai casi d'uso e alla configurazione di produzione.

    
risposta data 09.09.2017 - 23:10
fonte
1

Vault è una buona soluzione per te che stai cercando di gestire le credenziali e tienili al sicuro perché ha il lease completo e i vincoli di data / ora integrati.

In questa istanza stai solo cercando di memorizzare le credenziali di dB. Gli envars sono abbastanza standard, ma non impegnare il file envar al controllo del codice sorgente.

Ricorda inoltre che tutti questi dbs hanno interfacce vincolate, quindi è importante assicurarsi di associare correttamente a localhost o un intervallo IP fisso che è anche protetto / filtrato da un firewall. In questo modo, anche se il dB PW è esposto, non è ancora possibile ottenere l'accesso remoto.

    
risposta data 09.09.2017 - 21:27
fonte

Leggi altre domande sui tag