Salva token in MySQL o usa Vault (HashiCorp)?

0

Riceverò migliaia di token dell'utente quando ci autorizzano tramite OAuth (fornitore esterno).

Sto cercando di scoprire quali sono le migliori pratiche per crittografare in modo sicuro il token dell'utente in un database.

Sto prendendo in considerazione l'utilizzo di libsodium (Halite in PHP) per crittografare il token e quindi salvare in MySQL. La chiave di crittografia è memorizzata nel file .env . Ma cosa succede se il server Web viene compromesso e possono gestire l'accesso a .env ?

La seconda opzione è l'uso di Vault (HashiCorp) che è installato sul server separato. Il server web dovrebbe accedere a Vault utilizzando l'API.

Quale pensi sia più sicuro?

    
posta I'll-Be-Back 23.09.2017 - 14:41
fonte

1 risposta

1

Ci sono un paio di modi per farlo, a seconda che il web server abbia davvero bisogno di accesso in lettura / scrittura ai token oauth.

Utilizzo Vault da un po 'di tempo, e penso che questa sarebbe la strada da percorrere. Puoi utilizzare qualcosa come il approle auth backend ( vault auth-enable approle ) per consentire ai tuoi server di scrivere i token basati su diverse norme (quindi sono limitati a scrivere solo quei token).

Poiché il webserver può solo scrivere, hai bisogno di qualcosa che possa leggere i dati di oauth, e ti suggerisco di avere qualche queue strumento qui, con lavoratori in grado di leggere ed elaborare qualsiasi cosa tu debba fare, e preferibilmente non sul server web (in modo che l'accesso in lettura / scrittura sia diviso su macchine diverse). Il lavoratore potrebbe utilizzare un ruolo app di sola lettura / scrittura o sola lettura.

Quale segreto backend da utilizzare per la memorizzazione dei dati (console / file / DB) non importa. Scegli ciò che ti piace (mi piace console dato che è resiliente e non dipende da mysql o altra replica DB), ma qualunque cosa tu scelga, vault garantirà che i dati vengano crittografati prima di essere scritti.

Se il server web viene violato, beh, non può leggere i token, quindi i dati dovrebbero essere abbastanza sicuri (purché si protegga la comunicazione macchina / vault / worker).

    
risposta data 01.11.2017 - 09:31
fonte

Leggi altre domande sui tag