SQL Server 对存储过程的加密有多安全?

SQL Server 对存储过程的加密有多安全?

背景

我在 Windows Server 2003 Enterprise 上使用 SQL Server 2008 Enterprise。我为 SQL Server 开发了一些存储过程,安装 SQL Server 的计算机可能不完全在我的控制之下(可能被不受信任的第三方使用)。

问题

我想使用 SQL Server 提供的加密存储过程功能来保护我的存储过程 T-SQL 源代码(即不被其他方查看)。我不确定加密存储过程是否安全,以及机器(安装有 SQL Server)的管理员是否有办法查看存储过程的源代码?

答案1

可以解密并查看加密的 SQL 存储过程的源代码,快速搜索“解密 SQL 存储过程”会显示相当多的结果,例如:

http://www.mssqltips.com/tip.asp?tip=1046

但是,加密存储过程至少会使查看源代码变得更加困难 - 我也不确定当前解密存储过程的任何方法是否在实时 SQL 服务器安装中实际可行 - 上次我查看时发现许多方法需要对 SQL 服务器实例进行独占访问,并阻止任何其他用户访问服务器(尽管这可能仍然不是事实)。

还值得注意的是,加密存储过程可能会引起支持方面的麻烦 - 因为您不再能够看到加密存储过程的执行计划,因此您可能会在尝试诊断任何性能问题时遇到问题。

我不知道还有其他任何方法可以保护您的来源。

答案2

澄清 marc_s 的回答(现已删除)

对于 SQL Server 2005 及更高版本,获取“纯文本”的门槛比以前更高。基本上,系统管理员通过 DAC。此时,你已经被攻陷了。

对于 SQL Server 2000 及之前的版本来说,这要容易得多。坦白地说,只要仔细观察就能搞定。

因此,它对于最终用户和开发人员(没有系统管理员)来说足够安全,但如果想使用它来保护客户站点的 IP 则不然。

答案3

“我希望将我的数据库应用程序打包成一种允许客户使用的形式,但客户却无法访问其中存储的实际数据。我认为加密数据库应该会有所帮助”。

答案总是相同的:您要求的是数字版权管理,而 SQL Server 不支持 DRM。无论您指的是数据、架构设计还是存储过程逻辑,此答案都适用。请参阅谁需要加密?进行更详细的讨论。

相关内容