用户可以看到的东西与他们可以做什么

问题描述 投票:0回答:2

MSSQL允许对数据库具有有限权限的用户使用该数据库上的SSMS进行导航,就好像他们是管理员一样。即如果他们对数据库具有查看权限,则可以查看用户,授予/拒绝的所有选项都是可选的,但是当然没有任何内容提交给数据库。

我听说某个用户吹嘘自己的访问级别,这是我设定和限制的,但有片刻的恐慌。尽管他们可以看到实例下的所有数据库,但任何访问信息的尝试都遇到了拒绝访问的提示。在他们确实有权访问的数据库上,他们能够选择/取消选择针对任何用户的任何权限,并且看不到任何类型的提示,而所有选择都没有。

是否有可能将它们无法实际实现的所有选项“灰色化”?

sql-server ssms
2个回答
1
投票

SSMS是客户端程序,与其他任何程序一样。它没有任何特殊状态。您的用户有权读取系统表,例如sys.object,sys.server_principals等。因此,SSMS可以在对象资源管理器中构建树形视图。


1
投票

MSSQL允许对数据库具有有限权限的用户浏览在该数据库上使用SSMS,就好像他们是管理员一样。即如果他们对数据库具有查看权限,他们可以查看用户,所有选项授予/拒绝是可以选择的,但是当然没有任何承诺数据库。

绝对不正确。

默认情况下,public服务器角色被授予VIEW ANY DATABASE权限,并且被授予此权限时,您唯一可以做的就是访问服务器上的list数据库,即select * from sys.databases或“ see” SSMS Object Explorer中的数据库。仅“看见”意味着仅知道database names。除了login服务器角色的成员或数据库的sysadmin(数据库中唯一具有ownerlogin)之外的任何authorization都不是mappeddatabase

这意味着您无法在此access中“看到”任何内容。

他们可以查看用户,授予/拒绝的所有选项都是可以选择的

根本不是真的,它们只是无法“打开”未映射它们的数据库节点(具有database到数据库)。

此外,即使connect对数据库具有login权限而没有其他connect,即使它可以“打开”数据库节点,它也将仅在“用户”中看到其自己的用户。

因此,请仔细检查您的“对数据库具有有限权限的用户”的permission,您肯定没有看到其所有permissions

您通过模拟相应的permissions来检查permissions

login

第一组权限是use your_db; execute as login = 'limited_login'; select * from sys.fn_my_permissions(null, 'server'); --CONNECT SQL --VIEW ANY DATABASE select * from sys.fn_my_permissions(null, 'database'); revert; ,如果server level permissionspermission之外还有CONNECT SQL,则您的VIEW ANY DATABASE并不像您想的那么“受限”。

第二组列出了login,如果您看到像database level permissions一样的东西,这是其“看到用户”的关键。

是否有可能将所有他们实际上无法使用的选项“灰色化”实施?

只需将view definition撤销为那些view definition

© www.soinside.com 2019 - 2024. All rights reserved.