2

我需要使用 TDE 来保护数据并防止 DBA 看到数据。我们当前的数据访问层使用 LINQ 来访问没有 TDE 的 SQL。如果数据库转换为带有加密列的 TDE,我们必须让 LINQ 生成如下查询:

OPEN SYMMETRIC KEY MyKey
DECRYPTION BY PASSWORD = 'mypassword';

SELECT CONVERT(VARCHAR(MAX), DECRYPTBYKEY(MyEncryptedCol))
FROM dbo.MyEncryptedTable;

CLOSE SYMMETRIC KEY MyKey;

以最少的努力转换现有数据层的最佳方法是什么?我更喜欢继续使用 LINQ。

目前使用 SQL Server 2012、.Net 4.5、C#

4

1 回答 1

3

没有什么。您基本上确保您不能使用简单的 LINQ,并且任何想出这个的人都应该为此被解雇。

你能做什么——最好——取决于数据层。是的,LINQ 不是数据访问技术,它是 C# 集成查询,具体取决于提供者(Linq2Sql,实体框架,NHibernate),您确保不提供任何信息。

无论如何,您的问题是您需要添加开始和结束 sql 命令 - 一些提供程序可以这样做 - 以及基本上特殊的 SQL,这将无法正常工作。

最好的机会是采用开源数据访问提供程序(NHibernate,实体框架)并将其扩展以允许此功能。

否则就站在建筑师面前告诉他“嘿,你写的规范——你有没有想过你必须确保它们是可行的?” 是替代方案。这真的是您在这里需要的非标准 SQL,如果不进行修改,运行磨机 ORM 将不支持它。

于 2014-03-01T20:33:04.097 回答