SQL Server Management Studio服务器角色

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

我不知道我做的事情是完全错误的还是只是缺少SQL Server安全性。

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

  • 域用户将无法查看SSMS中的任何表,但可以通过应用程序访问数据。
  • SQLAdmins查看全部

首先,我想为域用户设置一个新的服务器角色并分配视图和数据库/定义权限,然后将其从公共角色中删除,这让我感到很困惑-没关系!

然后使用相同的设置,我会分支到该表以授予权限,但又没有喜悦。

我已经设置了几个角色/用户并应用了所有形式的权限,但是一旦在公共场所更改了数据库/定义,它将覆盖所有内容。我以为public是一个默认设置,当其他角色变为活动状态时,它就会变得多余?

有人可以将我指向正确的方向,否则我的头突然弹出或机器学会飞行:-)

  • SSMS:v17.8.1
  • SQL Server:2012
sql-server ssms
1个回答
0
投票

取决于您实际定义角色的方式(问题尚不清楚),可能只是您拒绝查看有关公共角色的任何数据库。反过来,这将使每个人都被拒绝。因为每个人始终都是公共角色的一部分。 (这就是为什么不愿担任公共角色的想法)。

丹尼的王牌格兰特。因此,无论您以后授予他们什么,拒绝都将覆盖它。因此,如果您在最高级别拒绝它,则无论以后如何指定,它都将保持这种状态。

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

值得注意的是,在这种情况下,这意味着他们可以在上述数据库中执行所需的任何操作。由于您不能以自己拥有的东西“拒绝”他们的权利(这就是为什么他们可以首先查看它的原因)。

总的来说,最好在数据库级别上微调角色,或者根据要完成的任务来定制一些服务器角色。

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

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