Nell'azienda per cui lavoro abbiamo un determinato servizio in cui gli utenti possono caricare documenti (testo, talvolta scansioni di documenti), non è niente di confidenziale ma se quei documenti saranno trapelati, mi verrà un sacco di mal di testa che spiega perché tutti sono disponibili pubblicamente. Recentemente abbiamo avuto una breccia nella rete e mentre questa volta nessuno è riuscito a ottenere nulla ha sollevato alcuni problemi di sicurezza.
È un vasto sistema legacy, sostituirlo in questo momento è fuori questione. Esiste all'interno della nostra rete aziendale e gli utenti non possono accedere direttamente a questa archiviazione dati a causa di specifiche policy di sicurezza di AD e di rete. Come la pratica dimostra che queste politiche possono essere ignorate a causa della nostra negligenza IT. Quindi quello che voglio è aggiungere un ulteriore livello di sicurezza crittografando tutto all'interno dello spazio di archiviazione.
Lo spazio di archiviazione funziona come un archivio. Le persone scaricano vecchi documenti e quei documenti sono raramente se mai acceduti. L'inserimento di tutti i file in arrivo in alcuni contenitori crittografati non è un problema facile da implementare. La domanda è: come posso conservare le chiavi per quei contenitori? Se li inserirò nel database del servizio generale, chiunque vorrebbe accedere a tali documenti in maniera non autorizzata sarà in grado di farlo semplicemente accedendo al database (SQL Server, utilizzato da molte app, probabilmente compromesso a causa di servizi legacy mal progettati in azienda).
In teoria, posso memorizzare le chiavi in qualche altro database (server dedicato con una corretta configurazione di SQL Server \ PostgreSQL), disconnesso fisicamente da quello principale e inviare le chiavi da lì solo quando richiesto e impedire i tentativi di scaricare tutte le chiavi, qualsiasi comportamento 'insolito' è molto facile da rilevare perché le persone richiedono raramente qualcosa. E non mi interessa quanto tempo ci vorrà per ripristinare e decifrare quei contenitori, 1ms o 1 ora non fanno alcuna differenza quando si prendono in considerazione i processi di sistema in generale. Tuttavia, questo approccio sembra un po 'complicato.
Esistono alcune "migliori pratiche" per risolvere tali problemi?