【发布时间】:2009-09-04 19:52:16
【问题描述】:
我可以通过执行以下操作来拒绝特定用户 DB 查看:
DENY VIEW ANY DATABASE TO Myuser
但是,有没有办法在通过 SSMS 登录时也拒绝远程用户查看“安全”、“服务器对象”、“复制”和“管理”?
谢谢。
【问题讨论】:
标签: sql-server-2005 permissions remote-access
我可以通过执行以下操作来拒绝特定用户 DB 查看:
DENY VIEW ANY DATABASE TO Myuser
但是,有没有办法在通过 SSMS 登录时也拒绝远程用户查看“安全”、“服务器对象”、“复制”和“管理”?
谢谢。
【问题讨论】:
标签: sql-server-2005 permissions remote-access
这些 SSMS 类别是各种服务器端功能的集合。以“安全”选项卡为例,它显示“登录”、“服务器角色”和“凭据”。考虑“登录”节点:
sys.server_principals 的视图,并且此目录视图中对象的可见性仅限于当前用户拥有所有权或拥有view definition 的实体(登录)许可结束。 CREATE LOGIN,而这又需要ALTER ANY LOGIN 或ALTER LOGIN 权限。DROP LOGIN,这需要ALTER ANY LOGIN。现在您理论上可以拒绝登录时查看定义,拒绝 ALTER ANY LOGIN 并拒绝用户的 ALTER LOGIN,但您将无法拒绝 所有权 的登录名,所以用户仍然会在那里看到一些东西(它自己的登录名)。所以这是一场失败的战斗。您可以对 SSMS 中您想要隐藏的任何其他面板应用类似的推理,您将获得类似的结果。
也就是说,你是从错误的角度来处理这个问题的。安全性从不依赖于 DENY,总是依赖于 GRANT。您的用户不应该拥有任何不必要的权利。你不应该明确否认任何事情,裸露一些特殊情况。
【讨论】: