安全地运输存储过程

时间:2012-09-05 08:25:06

标签: sql database tsql stored-procedures

我正在开发一个有版本的项目。如果准备发布新版本,我准备存储过程以由DBA更新数据库。我给他发了SP并执行了他们。但是,我不希望DBA看到我的SP代码。是否可以在不向DBA显示代码的情况下传输存储过程。

3 个答案:

答案 0 :(得分:2)

如果您发送CLR存储过程并对程序集进行模糊处理,那么该功能将被相关地隐藏起来。

我建议这是使用CLR存储过程的错误动机。

答案 1 :(得分:1)

一种选择是在加密的文本文件中提供SQL存储过程。并在.NET中编写您自己的应用程序,它将读取加密的SQL文本,解密它然后部署到选定的服务器。

如果您在.NET中工作,那么您将知道编写这样一个应用程序是多么容易。只需提供使用您存储的Procs.DBA的应用程序将能够使用该应用程序部署存储过程而无需查看它们。 对于简单的场景,您可以对解密SQL文本所需的“密码”进行硬编码,但对于更敏感的场景,您可以使用PKI。

与所有其他解决方案一样,此解决方案可以进行逆向工程,但恕我直言,比在CLR中重写存储过程逻辑更好。

注意:我假设您将使用WITH ENCRYPTION选项来创建存储过程。

答案 2 :(得分:0)

好吧,正如Phillip已经评论过的那样,如果我是那个执行你的存储过程的人,那么在我的数据库上运行我无法阅读的东西会有很大的问题。

如果您希望乍一看您的代码不可读,请尝试混淆(一种形式或其他形式几乎总是可用的 - 如果您只使用BASE64编码/解码的字符串并立即执行)

对于上述所有内容,您需要加密的存储过程,但这取决于系统,我不知道tsql足以告诉您。