我需要使用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#
答案 0 :(得分:2)
无。你基本上确保你不能使用简单的LINQ,无论谁想出来都应该为此开火。
你能做什么 - 最好 - 取决于数据层。是的,LINQ不是一种数据访问技术,它是C#集成查询,具体取决于提供者(Linq2Sql,实体框架,NHibernate),你确保不提供任何信息。
无论如何,你的问题是你需要添加开始和结束sql命令 - 一些提供者可以这样做 - 以及基本上特殊的SQL,并且它将无法工作。
最好的机会是采用开源数据访问提供程序(NHibernate,实体框架)并对其进行扩展以实现此功能。
否则站在建筑师面前并告诉他“嘿,你写过这些规格 - 有没有想过你必须要确保它们是可靠的?”是替代方案。这是你需要的非标准SQL,并且磨机的运行ORM不会在没有修改的情况下支持它。