如何加密 SQL Server 2008 数据库

3

我有一个数据库,目前我的应用程序正在使用它。我不想更改应用程序核心中的任何内容。但是我想加密存储在数据库中的数据信息

SQL Server 2008(或2008 R2)应该有一种内部机制可以对传递到应用程序中的信息进行加密和解密。

如何使其正常工作?需要为数据库中的所有字段进行加密,包括数字、字符串、布尔值、日期时间等。

感谢任何帮助。


@Ehsan 这个情况有所不同:在我的场景中,DBA 能够看到并与 Table 工作,但数据被加密了,就像密码字段一样,没有人能够理解它们的含义。DBA 也可以删除、添加或编辑任何结构(不要忘记这些是 DBA 的工作)。我只想加密表内的信息。 - Nasser Hadjloo
5个回答

3

如果您想要单元格级别的加密,您应该自己实现(使用触发器或其他方式),如果您想要加密数据库文件,您可以使用透明数据加密 (TDE)


尽管我并没有这个意思,但为数据库文件加密加1分。 - Nasser Hadjloo

2

1
@shashwat 在列级别上可以使用非对称密钥/对称密钥/证书进行加密。您需要使用 TDE 对整个数据库进行加密,但快速版中不可用。 - Loïc Lopes

0

您可以使用视图替换实际表格,并添加INSTEAD OF INSERT和INSTEAD OF UPDATE触发器,创建多个用户定义函数。您可能需要稍微修改应用程序。

除此之外,考虑在文件级别上使用加密和模式保护。像DbDefence这样的工具可供小型数据库免费使用,并且对于中型数据库的价格非常适中。


0

如果您真的通过字段加密所有内容,那么您将失去索引优势,并且会有巨大的性能降级。

免费选项:将数据库文件放置在加密分区上。当然,对于DBA来说,这没有任何区别。他将能够选择与未加密的数据库相同。

有一种类似于Microsoft TDE的廉价解决方案,叫做DbDefence(是的,我与该公司有关联)

正如您所知,Microsoft将在SQL Server 2016中实现新的加密功能,称为“Always Encrypted”。自2005年以来,DbDefence一直在为SQL Servers使用该方法。它非常有效,您不需要更改应用程序中的任何内容。


0

透明数据加密(TDE)

透明数据加密(TDE)是由微软和Oracle共同开发的一种技术,用于加密数据库文件。它提供了文件级加密,并通过对硬盘和备份介质上的数据库进行加密来保护静态数据。它不保护传输中的数据或使用中的数据。

应用程序访问数据库时,加密将完全透明。它使用高级加密标准或三重DES加密算法,对数据库的数据文件(.mdf)和日志文件(.ldf)中的数据进行加密。

可以使用相同的密钥加密表中的所有列,而不管要加密的表中有多少列。数据库服务器主密钥为这些加密密钥提供加密,并存储在数据库的字典表中。

更多信息请参见链接如何在SQL Server上实现TDE加密


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接