工具:加密SQL Server数据库

4
我不希望客户能够备份我的SQL服务器数据库并访问表数据等内容。
我知道有一些产品可以加密表中的数据,并且它们的产品会在我的应用程序中显示时对其进行解密。
你们知道哪些产品?我有哪些选择?
(这是一个商业需求,无论看起来多么愚蠢哈哈)。
更新:
这是针对SQL Server 2008 Express的。
6个回答

3
在数据库内加密数据的问题在于只要数据库存在于客户端机器上(正如你所指出的,他们正在运行SQL 2008 Express,因此我打赌它存在于客户端的台式机或笔记本电脑上),那么他们就可以进入数据。他们可以在实例上设置安全性,以便拥有SA特权,从而可以获取数据,没有任何绕过这一点的方法。
你需要做的是在数据进入数据库之前对其进行加密:在应用程序中对其进行加密。在应用程序内部,加密每个敏感字段中要存储的数据。正如另一个帖子所指出的,您不希望加密ID字段,因为这些字段用于索引。

2
即使应用程序正在您的计算机上运行,仍有一种方法可以对其进行调试,并提取加密密钥。 - Kibbee

2

有第三方工具xp_crypt,它已经存在多年了。它是一个扩展存储过程(即DLL)。


2
xp_crypt 的支持位于俄罗斯,请记住这一点。由于客户问题出现时,您的时区差异可能会对预期产生影响。我们曾经遇到过 xp_crypt 失去许可证的问题。我们的客户完全取决于他们回复我们以解决该问题。 - Kurt Johnson

0

1
这也适用于SQL Express版本吗? - Blankman

0

您可以加密存储过程,以保护您的逻辑。

TDE 仅在企业版中可用。

我找不到它是否支持本地 SQL 加密 - 但您可以通过一些搜索找到答案。但如果它支持本地加密,您可能可以使用应用程序设置数据库主密钥,并将所有解密/加密代码保存在您的应用程序中。

如果它不支持本地加密,则可能需要在应用程序语言中创建/查找自己的加密函数,并将密钥锁定在您的代码中。


0

透明数据加密将对磁盘上的数据库进行加密,但在内存中是未加密的,因此也需要适当的安全措施,以确保未经授权的用户无法访问表。由于它是仅企业版功能,因此您可以放心地放弃它。

SQL Server 2005及以上版本具有内置的加密功能-请查看图书在线和特别是Adam Machanic的专家SQL Server 2005开发书的第5章-加密(技术上Lara Rubbelke编写了第5章)。

请注意,您只需要加密一些列-那些您永远不会尝试查找的列,因为加密列基本上对索引没有用。Adam Machanic的书提供了解决此问题的方法。


0

透明SQL Server加密的另一种解决方案是DbDefence,对于小于77 MB的数据库免费。


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