4

Я зашифровал несколько столбцов в базе данных Azure SQL, используя Always Encrypted и главный ключ столбца, хранящийся в хранилище ключей Azure, но у меня возникли проблемы с доступом к ним из моего приложения используя Entity Framework.Использование всегда зашифрованных с помощью инфраструктуры Entity Framework и хранилища ключей Azure

Там в последнее время MSDN article и older blog post, которые объясняют, как создать SqlConnection, чтобы использовать всегда шифруется с Azure Key Vault, поэтому я предполагаю, что нормальный DbContext может быть создан с помощью constructor, который принимает DbConnection.

Проблема заключается в том, что я использую IdentityDbContext, который не имеет, что конструктор - единственный constructor, который принимает DbConnection также принимает DbCompiledModel, который находится за пределами моего платного класса в данный момент.

Может кто-нибудь объяснить, как настроить IdentityDbContext на использование ключа-хранилища?

+0

Я изучаю ... нашел упоминание о добавлении «Encryption Setting = Enabled» в ConnectionString и необходимости добавления SqlParameter для зашифрованного столбца. Здесь: https://azure.microsoft.com/en-us/documentation/articles/sql-database-always-encrypted/#strongimportantstrong Вы шифруете столбец или всю базу данных? – OzBob

ответ

0

Кажется, что у команды EF есть test that uses encryption.

var connectionStringBuilder = new SqlConnectionStringBuilder(SqlServerTestStore.CreateConnectionString("adventureworks")) 
{ 
    Encrypt = encryptionEnabled 
}; 
var options = new DbContextOptionsBuilder(); 
options.UseSqlServer(connectionStringBuilder.ConnectionString); 

using (var context = new AdventureWorksContext(options.Options)) 
{ 
    context.Database.OpenConnection(); 
    Assert.Equal(ConnectionState.Open, context.Database.GetDbConnection().State); 
} 

TODO: тест IdentityDbContext Конструктор выставляет же конструктор как AdventureWorksContext.