我不希望客户能够使我的SQL Server数据库的备份和访问表中的数据等工具加密SQL Server数据库
我知道有一些产品,将加密的数据表格及其产品将在我的应用程序中显示时解密。
你们知道哪些产品?我有什么选择?
(这是一个业务需求,无论它看起来有些嘿嘿)。
更新
这是SQL Server 2008 Express的
我不希望客户能够使我的SQL Server数据库的备份和访问表中的数据等工具加密SQL Server数据库
我知道有一些产品,将加密的数据表格及其产品将在我的应用程序中显示时解密。
你们知道哪些产品?我有什么选择?
(这是一个业务需求,无论它看起来有些嘿嘿)。
更新
这是SQL Server 2008 Express的
还有第三方。它已经存在多年了。 这是一个扩展存储过程(即DLL)
SQL Server 2008支持数据库加密本身。检查文档Transparent Data Encryption (TDE)。
这是针对sql express版本吗? – Blankman 2008-11-26 15:45:00
嗯。不,我不这么认为 – 2008-11-26 17:03:11
您可以加密存储过程,这可以保护您的逻辑。
TDE仅适用于企业版。
我找不到它是否支持原生sql加密 - 但你可以通过一点搜索找到它。但是,如果确实如此,则可以使用应用程序设置数据库主密钥,并将所有解密/加密代码保存在应用程序中。
如果它不支持本地加密,您可能需要在应用程序语言中创建/查找自己的加密函数,并锁定代码中的密钥。
透明数据加密将加密磁盘上的数据库,但在内存中未加密,因此也需要适当的安全性以确保未经授权的用户无法访问表。由于这是企业专用功能,因此您可以放心地远离它。
SQL Server 2005及更高版本具有内置加密功能 - 请参阅联机丛书,尤其是第5章 - Adam Machanic的SQL Server 2005开发专家的加密(技术上说,Lara Rubbelke写了第5章)。
请注意,您只需要对某些列进行加密 - 那些您永远不会查找的列,因为加密列几乎没有用于建立索引。 Adam Machanic的书提出了解决这个问题的方法。
加密数据库内部数据的问题是,只要数据库驻留在客户端的机器上(正如您所指出的那样,它们正在运行SQL 2008 Express,所以我打赌它存在于客户端的桌面或笔记本电脑上),那么他们可以进入数据。他们可以在实例上设置安全性,以便他们拥有SA权限,并从那里获取数据和期限。这是没有办法的。
你需要做的是在数据到达数据库之前对数据进行加密:在你的应用程序中加密数据。在应用程序内部,加密要存储在每个敏感字段中的数据。正如另一张海报所示,您不想加密ID字段,因为这些字段用于建立索引。
SQL Server的加密器支持SQL 2000到2008,Express through Enterprise的列和全数据库加密。 http://www.netlib.com
透明SQL Server加密的另一个解决方案是DbDefence 对于少于77 MB的数据库可用。
对xp_crypt的支持是在俄罗斯,所以记住这一点。当客户问题出现时,您的时区差异可能会对预期产生影响。我们遇到了xp_crypt失去授权的问题。我们的客户受到他们的回报,帮助我们解决问题。 – 2012-04-10 16:06:31