使用始终加密实体框架和Azure Key Vault

时间:2016-06-09 17:45:18

标签: sql-server entity-framework azure-keyvault always-encrypted

我使用Always Encrypted和存储在Azure Key Vault中的列主密钥加密了Azure SQL数据库中的某些列,但是我在使用Entity从我的应用程序访问它们时遇到了问题框架。

最近的MSDN articleolder blog post解释了如何设置SqlConnection以使用Azure Key Vault始终加密,因此我猜测正常的DbContext可以使用接受DbConnection的{​​{3}}创建。

问题在于我使用的IdentityDbContext没有构造函数 - 唯一需要DbConnection的{​​{3}}也需要DbCompiledModel 1}},目前超出了我的工资等级。

有人可以解释如何设置IdentityDbContext以使用密钥保管库吗?

1 个答案:

答案 0 :(得分: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:test IdentityDbContext构造函数公开与AdventureWorksContext相同的构造函数。