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.