我有一个数据库,目前我的应用程序正在使用它。我不想在我的应用程序CORE中更改任何。但我想加密数据库中DATA
或INFORMATION
的{{1}}和stored
。
is storing
(或2008 R2)应该有一个内部机制来加密和解密给出并提交给应用程序的信息。
如何让它发挥作用?数据库,数字,字符串,布尔值,日期时间等所有字段都需要加密。
任何帮助都是适当的
答案 0 :(得分:3)
如果你想要单元级加密你应该自己做(使用Triggers
或任何其他方式)如果你想要加密数据库文件你可以使用Transparent Data Encryption (TDE)
答案 1 :(得分:2)
SQL 2008具有TDE或Total Database Encryption。这会加密整个数据库,对数据库的任何用户都是透明的。有关如何解决此问题的详细信息,请参阅以下两篇Microsoft文章:
http://msdn.microsoft.com/en-us/library/cc278098%28v=sql.100%29.aspx
答案 2 :(得分:0)
您可以使用VIEW替换INSTEAD OF INSERT和INSTEAD OF UPDATE触发器替换您的真实表,创建多个用户定义函数。您可能需要稍微修改您的应用程序。
而不是考虑使用模式保护在文件级别使用加密。 像DbDefence这样的工具可用于小型数据库的免费版本,也适用于中型数据库的非常适中的价格。
答案 3 :(得分:0)
如果您真的按字段加密所有内容,那么索引会失去优势,并且性能会大幅下降。
免费选项:将数据库文件放在加密分区上。 然而,这当然对DBA没有任何影响。他将能够选择未加密的数据库。
有一种类似于Microsoft TDE的廉价解决方案,名为DbDefence(是的,我与该公司有关)
正如您所知,Microsoft将在SQL Server 2016中实现名为" Always Encrypted"的新加密功能。自2005年以来,DbDefence一直在为SQL Server使用该方法。它非常有效,您无需在应用程序中更改任何内容。
答案 4 :(得分:0)
透明数据加密(TDE)
透明数据加密(TDE)是Microsoft和Oracle开发的用于加密数据库文件的技术。它提供文件级加密,并通过加密硬盘驱动器和备份介质上的数据库来保护静态数据。它不保护传输中的数据或正在使用的数据。
加密对访问数据库的应用程序完全透明。它使用高级加密标准或三重DES加密来加密数据库的数据文件(.mdf)和日志文件(.ldf)中的数据。
无论表中要加密的列数是多少,都可以使用相同的密钥加密表中的所有列。数据库服务器主密钥为这些加密密钥提供加密,并存储在数据库的字典表中。
有关详细信息,请参阅链接 How to implement TDE encrytion on SQL Server