( Cross-posting questo qui su consiglio di un utente su StackOverflow ...)
Hai una domanda di sicurezza filosofica per tutti. Sto tracciando una progettazione di applicazioni Web ASP.NET in cui i dati sensibili per diverse organizzazioni / client verranno archiviati in un database SQL Server. L'autenticazione dell'utente utilizzerà l'autenticazione basata su form ASP.NET.
Crittografare l'intero database usando Transparent Database Encryption (TDE) è un gioco da ragazzi. Ma sono curioso di sapere se dovremmo preoccuparci della crittografia a livello di cella (usando qualcosa come il Toolkit per la sicurezza delle etichette di SQL Server disponibile in codeplex.com: etichetta SQL Server Security Toolkit ).
Se dovessimo eseguire la crittografia a livello di cella, potremmo associare ciascun utente di un'organizzazione / client a un singolo account utente SQL che abbia la capacità di leggere / scrivere dati per la loro organizzazione. Quindi, nel caso in cui un account utente SQL fosse compromesso, limiterebbe l'accesso ai dati solo a quella singola organizzazione.
Ma supponiamo di aver creato un singolo account utente / password SQL che è destinato esclusivamente all'applicazione web per comunicare in modo sicuro con il database (non sarà consentito alcun accesso diretto al database per scopi di reporting). Possiamo impostarlo con una password sufficientemente lunga generata casualmente, con quelle credenziali memorizzate crittografate nel file web.config.
A questo punto, abbiamo sufficientemente garantito l'accesso ai dati sensibili nel database (supponendo che l'applicazione limiti ciò che viene visualizzato, ovviamente)?
In altre parole, supponiamo di avere più account utente SQL con password incredibilmente lunghe crittografate nel file web.config. Se uno di quegli account utente SQL fosse stato compromesso, ciò significherebbe un difetto di sicurezza che probabilmente significherebbe compromettere tutti gli account utente SQL. Quindi, nessun valore aggiunto di sicurezza esiste realmente.
(La ragione più convincente che posso pensare di fare la crittografia a livello di cella da parte degli utenti SQL specifici del cliente è quella di evitare che un buco di sicurezza nell'applicazione web effettiva possa visualizzare i dati di un altro client.)
Spero che la domanda abbia un senso. Sii interessato a sentire i pensieri degli altri su questo! Grazie in anticipo.