2008-11-26 109 views
4

我不希望客户能够使我的SQL Server数据库的备份和访问表中的数据等工具加密SQL Server数据库

我知道有一些产品,将加密的数据表格及其产品将在我的应用程序中显示时解密。

你们知道哪些产品?我有什么选择?

(这是一个业务需求,无论它看起来有些嘿嘿)。

更新

这是SQL Server 2008 Express的

回答

2

还有第三方​​。它已经存在多年了。 这是一个扩展存储过程(即DLL)

+2

对xp_crypt的支持是在俄罗斯,所以记住这一点。当客户问题出现时,您的时区差异可能会对预期产生影响。我们遇到了xp_crypt失去授权的问题。我们的客户受到他们的回报,帮助我们解决问题。 – 2012-04-10 16:06:31

0

SQL Server 2008支持数据库加密本身。检查文档Transparent Data Encryption (TDE)

+1

这是针对sql express版本吗? – Blankman 2008-11-26 15:45:00

+0

嗯。不,我不这么认为 – 2008-11-26 17:03:11

0

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

TDE仅适用于企业版。

我找不到它是否支持原生sql加密 - 但你可以通过一点搜索找到它。但是,如果确实如此,则可以使用应用程序设置数据库主密钥,并将所有解密/加密代码保存在应用程序中。

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

0

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

SQL Server 2005及更高版本具有内置加密功能 - 请参阅联机丛书,尤其是第5章 - Adam Machanic的SQL Server 2005开发专家的加密(技术上说,Lara Rubbelke写了第5章)。

请注意,您只需要对某些列进行加密 - 那些您永远不会查找的列,因为加密列几乎没有用于建立索引。 Adam Machanic的书提出了解决这个问题的方法。

3

加密数据库内部数据的问题是,只要数据库驻留在客户端的机器上(正如您所指出的那样,它们正在运行SQL 2008 Express,所以我打赌它存在于客户端的桌面或笔记本电脑上),那么他们可以进入数据。他们可以在实例上设置安全性,以便他们拥有SA权限,并从那里获取数据和期限。这是没有办法的。

你需要做的是在数据到达数据库之前对数据进行加密:在你的应用程序中加密数据。在应用程序内部,加密要存储在每个敏感字段中的数据。正如另一张海报所示,您不想加密ID字段,因为这些字段用于建立索引。

0

SQL Server的加密器支持SQL 2000到2008,Express through Enterprise的列和全数据库加密。 http://www.netlib.com

0

透明SQL Server加密的另一个解决方案是DbDefence 对于少于77 MB的数据库可用。