SQL Server Management Studio 服务器角色

SQL Server Management Studio server roles

我不知道我是否做错了什么,或者我只是忽略了 SQL 服务器安全的要点。

这是我尝试使用 SSMS 进行的操作,一个简单的两级访问(network\DomainUsersnetwork\SQLAdmins)。

首先,我想我已经通过为域用户设置一个新的服务器角色并分配视图和 database/definition 权限然后从 public 角色中删除它们来破解它 - 不高兴!

保持相同的设置,然后我分支到 table 以授予权限,但同样没有快乐。

我已经设置了几个角色/用户并应用了所有形式的权限,但是一旦 database/definition 在 public 中被更改,它就会覆盖所有内容。我以为 public 是一个默认设置,当其他角色激活时它就变得多余了?

有人能在我的脑袋弹出或机器学会飞行之前为我指出正确的方向吗:-)

根据您实际定义角色的方式(您的问题并不清楚),可能只是您拒绝查看 public 角色上的任何数据库。这反过来会让每个人都被拒绝。因为每个人始终是 public 角色的一部分。 (这就是为什么弄乱 public 角色是个坏主意)。

否认王牌资助。因此,无论您以后授予他们什么,拒绝都会覆盖它。因此,如果您在顶层拒绝它,无论您稍后指定什么,它都会保持原样。

例外情况是,您始终可以看到自己拥有的对象。不能拒绝 sysadmin 服务器角色的成员,因为他们总是以所有者身份加入。因此,您可以通过撤销对 public 数据库的查看权限,从技术上隐藏所有数据库。但是随后您需要进行共享登录并将所有权分配给您想要查看的数据库。

值得注意的是,在这种情况下,这意味着他们可以在所述数据库中为所欲为。因为你不能 'deny' 他们对他们拥有的东西拥有权利(这就是为什么他们首先可以查看它)。

总的来说,您最好在数据库级别微调角色,或者根据您想要完成的任务创建一些自定义服务器角色。

请注意,除非您弄乱了 public 角色。在数据库中没有用户映射的登录不能看到数据库中的表,他们只能看到数据库本身的存在。