我有一个问题,一个用户属于SQL Server中的两个不同的用户组,我正在尝试管理服务器中的对象权限。
在我们的数据库中,有一个具有敏感权限的视图,只有某些人才能看到它,并且我们的大多数用户都在该组中进行管理。
如:Sales Group,Manager Group
理想情况下,我们只需要授予Manager Group权限,并拒绝所有其他用户的权限,
让我们说经理John在经理小组,但他也是销售小组,因为他是销售部门的经理。
我的理解是,如果2个不同用户组中的1个用户,如果您拒绝任何组的权限,即使用户已经授予了另一个用户的权限,他仍然无法看到该对象。
我如何克服这种情况?
谢谢!
答案 0 :(得分:0)
回答我自己的问题,我们找到了解决方案,
在数据库安全性下,我们可以创建数据库角色,在数据库角色中我们可以将单个表权限分配给不同的角色,然后我们将数据库角色分配给用户组。在这种情况下,例如
数据库中有3个表, 表A是具有凭证信息的表。只有经理才能看到 表B和C只是常规表。
创建数据库角色'普通访问'并授予表B和C的许可。 然后创建另一个数据库角色'凭证访问'并授予表A的许可。
在您的服务器级安全性中。所有用户组只应属于服务器角色级别的公共'公共'
并在“使用映射”中,选择数据库并仅选择您指定的数据库角色。
就我而言,分配数据库角色,'普通访问'和['凭证访问权限'到经理组。所以他将拥有ABC表的所有访问权限
销售小组只应具有“正常访问权限”和“正常访问权限”。所以它无法访问A表。
感谢