我和我的团队正在尝试从打开了列级加密的数据库(Azure SQL)解密值;证书存储在密钥保管库中。
预期结果:
var someLinqQuery = _contex.Users.First();
someLinqQuery.SSN = "000-00-0000";
Run Code Online (Sandbox Code Playgroud)
实际结果:
var someLinqQuery = _context.Users.First();
someLinqQuery.SSN = "the var binary (encrypted) version of the ssn";
Run Code Online (Sandbox Code Playgroud)
FWIW,这在使用原始 sql 时可以正常工作。但我们希望选择不这样做,并加密更多数据。
我们这里还有天蓝色的密钥库代码:
//Key Vault Code Below
private static ClientCredential _clientCredential;
public static void InitializeAzureKeyVaultProvider()
{
if (!isActivated)
{
_clientCredential = new ClientCredential(_applicationId, _clientKey);
SqlColumnEncryptionAzureKeyVaultProvider azureKeyVaultProvider = new SqlColumnEncryptionAzureKeyVaultProvider(GetToken);
Dictionary<string, SqlColumnEncryptionKeyStoreProvider> providers = new Dictionary<string, SqlColumnEncryptionKeyStoreProvider>
{
{ SqlColumnEncryptionAzureKeyVaultProvider.ProviderName, azureKeyVaultProvider }
};
SqlConnection.RegisterColumnEncryptionKeyStoreProviders(providers);
isActivated = true;
}
}
public static async Task<string> GetToken(string authority, …Run Code Online (Sandbox Code Playgroud) linq encryption entity-framework-core .net-core azure-sql-database