我是否应该使用角色或模式为用户提供基于其部门的访问权限?

时间:2009-11-11 12:26:44

标签: sql sql-server-2005

我想根据部门对不同用户的表进行不同级别的访问。我应该为此目的使用Schema或Roles吗?

2 个答案:

答案 0 :(得分:8)

角色将是前往这里的方式。任何时候你都有角色(例如你的情况下的depts)需要使用角色,无论他们使用什么模式,都需要表的特定用户权限。这样可以防止错误,并使数据库管理员的工作变得更加容易。

将角色视为用户的分组以及该组用户的相关权限,而模式则用于数据集的逻辑分组。

根据用户评论进行修改:

您可以,但是使用架构限制对特定表的访问可能不是考虑它的最佳方式。模式用于分组数据。因此,您可能拥有一个“销售”架构,其中包含销售团队所需的表格,程序等。然后,您可以说GRANT SELECT ON SCHEMA::sales TO salesRole;您正在使用架构作为向每个销售人员授予salesRole角色的一组用户授予权限的快捷方式。以后在销售模式中创建的任何表都可由具有该角色的用户选择。如果销售团队仅使用此角色且没有其他权限,则这些用户将无法使用在另一个模式中创建的表。如果你的意思是“限制使用模式的访问”,那么是的,但我更愿意将其视为用户没有通过角色或显式授权授予权限。希望这有助于澄清。

答案 1 :(得分:0)

您可以将两者结合使用。使用模式来分隔逻辑上可以组合在一起的对象。使用角色创建不同的访问配置,并将模式的访问权限授予您已创建的角色(根据您的业务逻辑)。