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