Criptare i dati su SQL Server

lunedì 29 settembre 2008 - 11.12

volperubbia Profilo | Senior Member

Ciao a tutti,
avrei bisogno di qualche idea sulla sicurezza di dati sensibili in un db su sql server 2005 ... spero di non essere troppo banale o complicato nello spiegarmi.
Provo con un esempio ...
Un db server ha N database collegati, potrebbero essere della stessa organizzazione o no. L'amministratore (uno o più) del server può ovviamente
farsi per conto suo dei grant sui vari db.
Su alcune tabelle ci sono però dei campi con valori "sensibili". Io vorrei che solo il "mio" utente vedesse in chiaro questi dati.
La mia applicazione ASP.NET accede al db, potrei pensare di gestire lì la decriptazione dei dati (li salvo su db in forma criptata e poi in qualche modo
li decripto da codice), ma mi sembra una gestione pesante. E' possibile gestire la cosa a livello sql? E' possibile creare un utente con questi privilegi?

Qualche idea?
Davide

lbenaglia Profilo | Guru

>E' possibile gestire la cosa a livello sql?

Ciao Davide,

A partire con SQL Server 2005 è stato introdotto un sistema encryption a livello di engine molto articolato ed efficiente che ti permette di utilizzare certificati, chiavi simmetriche e asimmetriche.
In questo articolo di Luca troverai tantissime informazioni utili:
http://www.visual-basic.it/articoli/lbSQLprotection.htm

SQL Server 2008 amplia ulteriormente le funzionalità di encryption introducendo il Transparent Data Encryption:
http://msdn.microsoft.com/en-us/library/bb934049.aspx

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

volperubbia Profilo | Senior Member

Ciao Lorenzo,
grazie. Ho letto l'articolo. Al momento pensavo di usare:
- DecryptByPassPhrase(@MIA_CHIAVE, MioCampo)
- EncryptByPassPhrase(@MIA_CHIAVE MioCampo).

@MIA_CHIAVE la passo come parametro (da codice, da vb per esempio, in modo da non averlo salvato su db) a quelle poche stored procedure
che devono inserire o leggere un campo criptato. Ho già provato, fin qui tutto ok.

C'è però ancora una cosa che mi lascia per perplesso, molto perplesso.
Ad esempio, un utente sa che ha quindi le credenziali di amministratore, potrebbe aprirsi una
procedura in modalità ALTER, modificarla (inserirci un SELECT @MIA_CHIAVE INTO ... )
e quindi alla fine disporre della chiave in chiaro.

Sai mica se c'è la possibilità di salvare funzioni / procedure sul db (al momento uso sql server 2005)
in modalità read-only o qualcosa di simile? ... mi servirebbe un qualcosa che le renda non editabili.

Davide

lbenaglia Profilo | Guru

>C'è però ancora una cosa che mi lascia per perplesso, molto perplesso.
>Ad esempio, un utente sa che ha quindi le credenziali di amministratore,
>potrebbe aprirsi una
>procedura in modalità ALTER, modificarla (inserirci un SELECT
>@MIA_CHIAVE INTO ... )
>e quindi alla fine disporre della chiave in chiaro.
E chi avrebbe fornito la chiave al sysadmin?

>Sai mica se c'è la possibilità di salvare funzioni / procedure
>sul db (al momento uso sql server 2005)
>in modalità read-only o qualcosa di simile? ... mi servirebbe
>un qualcosa che le renda non editabili.
Non esiste.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5