2015-01-23 13 views
5

Ho un requisito per crittografare un numero di colonne del database (in Sql Server 2012). È stato deciso di utilizzare la crittografia a livello di colonna (implementata in SQL Server). Dal punto di vista dell'applicazione creerò una web api su alcuni modelli di domini complessi. Voglio davvero utilizzare il primo approccio al codice di Entity Framework, per mantenere un modello di dominio pulito). Qualcuno ha una soluzione praticabile qui che non prevede il ricorrere alle stored procedure? Idealmente mi piacerebbe in qualche modo manipolare lo sql generato dal framework di entità per avvolgere determinati campi per eseguire le funzioni di crittografia/decrittografia di sql.Entity Framework con Sql Server Crittografia livello colonna

Idealmente, qualcosa di simile:

modelBuilder.Entity<MyTable>().ToTable("Table1").Property(p => p.SensativeData).encrypt("keyName",authenticatorFunc); 
+0

Dopo aver guardato in giro, mi restano ancora poche opzioni per Entity Framework. NHibernate d'altra parte supporta questo attraverso formule di campo e tipi di utenti, rispettivamente per leggere e scrivere. – Noel

risposta

3

In SQL Server 2012, la crittografia a livello di colonna può essere fatto principalmente in due modi cioè,

  1. Definizione personalizzato funzione di crittografia in Entity Framework. this blog
  2. SQL cellulare Livello crittografia implementazione fatto nel quadro entità nel DbContext Class (eseguire aperta codice chiave simmetrica qui) utilizzando this blog e utilizzando stored procedure (che contengono codice di decrittazione per il campo specificato nelle tabelle) recuperare i set di risultati.

in SQL Server 2016 non v'è nuova caratteristica cioè, criptato Sempre e ha la sua implementazione in Entity Framework here.

0

Crypteron ha un libero adattatore Entity Framework, CipherDb, in grado di funzionare con qualsiasi SQL Server. Infatti, Crypteron CipherDb funziona con qualsiasi database compatibile con Entity Framework - anche MySQL, PostGreSQL e altro ancora.

È possibile annotare il modello di dati con [Secure] il nome a un immobile a qualcosa come Secure_SocialSecurityNumber (il Secure_ è la parte fondamentale) e CipherDb esegue automaticamente la crittografia dei dati, la protezione antimanomissione, stoccaggio chiave sicura, distribuzione di chiavi sicure, caching, ruolo chiave overs, ACL e altro. È inoltre possibile utilizzare Crypteron per proteggere i corsi d'acqua, file, oggetti, code di messaggi, ecc NoSQL

È possibile trovare le applicazioni di esempio su GitHub a https://github.com/crypteron/crypteron-sample-apps

di responsabilità: non io lavoro e noi abbiamo un'edizione comunità libera che chiunque può usare.

Problemi correlati