L'obiettivo qui è impedire l'identificazione degli utenti e dei loro dati. È una buona idea dividere il mio database in più di uno, uno per ogni tipo di dati sensibili, nascondendo i collegamenti tra loro?
All'inizio sembra che la risposta sia sì, perché un utente malintenzionato dovrebbe ottenere l'accesso a tutti i database (potenzialmente serviti da server / macchine virtuali / contenitori diversi) al fine di creare relazioni tra i dati e gli utenti e identificarli.
Ovviamente, fare così aggiunge un sacco di complessità al livello dell'applicazione, quindi mi chiedo se questa sia una buona idea.
EDIT: ecco un esempio più concreto.
Il progetto è un sito web. Il codice dell'applicazione viene eseguito sul server A. Le connessioni vengono eseguite dall'applicazione ai database db1, db2 e db3, rispettivamente sugli host B, C e D. Nessuna crittografia (ovviamente le password, ovviamente). Il codice dell'applicazione contiene le credenziali per tutti e tre i database. Quindi ho un "collo di bottiglia di sicurezza" ed è il server A. Inoltre, le relazioni tra i dati non sono memorizzate in un database separato, ma suddivise nei tre database.
Questo cattivo design? Farei meglio a configurare
- un solo database (nel server E) e rigorosamente il server A ed E? o
- un altro database per contenere i collegamenti tra i dati, per ritardare ulteriormente la possibile identificazione degli utenti?
Altre soluzioni da considerare?
Tutto ciò sarebbe utile anche se il server A è un singolo punto di errore / collo di bottiglia di sicurezza?