我有一个数据库,目前我的应用程序正在使用它。我不想更改应用程序核心中的任何内容。但是我想加密存储在数据库中的数据
和信息
。
SQL Server 2008
(或2008 R2)应该有一种内部机制可以对传递到应用程序中的信息进行加密和解密。
如何使其正常工作?需要为数据库中的所有字段进行加密,包括数字、字符串、布尔值、日期时间等。
感谢任何帮助。
我有一个数据库,目前我的应用程序正在使用它。我不想更改应用程序核心中的任何内容。但是我想加密存储在数据库中的数据
和信息
。
SQL Server 2008
(或2008 R2)应该有一种内部机制可以对传递到应用程序中的信息进行加密和解密。
如何使其正常工作?需要为数据库中的所有字段进行加密,包括数字、字符串、布尔值、日期时间等。
感谢任何帮助。
如果您想要单元格级别的加密,您应该自己实现(使用触发器或其他方式),如果您想要加密数据库文件,您可以使用透明数据加密 (TDE)
http://msdn.microsoft.com/en-us/library/cc278098%28v=sql.100%29.aspx
您可以使用视图替换实际表格,并添加INSTEAD OF INSERT和INSTEAD OF UPDATE触发器,创建多个用户定义函数。您可能需要稍微修改应用程序。
除此之外,考虑在文件级别上使用加密和模式保护。像DbDefence这样的工具可供小型数据库免费使用,并且对于中型数据库的价格非常适中。
如果您真的通过字段加密所有内容,那么您将失去索引优势,并且会有巨大的性能降级。
免费选项:将数据库文件放置在加密分区上。当然,对于DBA来说,这没有任何区别。他将能够选择与未加密的数据库相同。
有一种类似于Microsoft TDE的廉价解决方案,叫做DbDefence(是的,我与该公司有关联)
正如您所知,Microsoft将在SQL Server 2016中实现新的加密功能,称为“Always Encrypted”。自2005年以来,DbDefence一直在为SQL Servers使用该方法。它非常有效,您不需要更改应用程序中的任何内容。
透明数据加密(TDE)
透明数据加密(TDE)是由微软和Oracle共同开发的一种技术,用于加密数据库文件。它提供了文件级加密,并通过对硬盘和备份介质上的数据库进行加密来保护静态数据。它不保护传输中的数据或使用中的数据。
应用程序访问数据库时,加密将完全透明。它使用高级加密标准或三重DES加密算法,对数据库的数据文件(.mdf)和日志文件(.ldf)中的数据进行加密。
可以使用相同的密钥加密表中的所有列,而不管要加密的表中有多少列。数据库服务器主密钥为这些加密密钥提供加密,并存储在数据库的字典表中。
更多信息请参见链接如何在SQL Server上实现TDE加密
DBA
也可以删除、添加或编辑任何结构(不要忘记这些是 DBA 的工作)。我只想加密表内的信息。 - Nasser Hadjloo