我们是一家小型BI咨询公司。 BI应用程序使用视图从服务器获取数据。
随着我们的成长,我们需要确保查询/视图安全,以便在未经我们许可的情况下无法复制或重复使用。它们将在客户端服务器计算机上运行。
我想知道是否有任何隐藏/保护视图的方法,以便只有在需要更改的情况下我才能访问它,否则没有人可以看到代码。
此致
答案 0 :(得分:2)
如果您可以指望他们没有sa密码或sysadmin
角色成员身份,那么您可以使用VIEW DEFINITION
权限来控制哪些人可以看到您的观点的定义:
DENY VIEW DEFINITION ON someview TO username
当然,您不能禁止他们查看您的视图的名称 - 应用程序本身需要能够从视图中进行选择。
如果他们拥有sysadmin
权限,那么您可以在视图定义上使用WITH ENCRYPTION
来阻止任何人,甚至是sa,来检索定义。
CREATE VIEW someview WITH ENCRYPTION AS ....
由于您自己无法从数据库中检索它,因此您最好将视图定义保存在单独的源控制系统中。 (无论如何你应该做什么。)
编辑:正如marc_s正确指出的那样,WITH ENCRYPTION
并不是真的安全。如果你确定了,无论如何都有办法解密它。请参阅this answer。