Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 数据库管理 » 用户和数据库安全 » 用户安全性(角色和特权)

 

组指的是一组用户的集合,组中所有用户拥有一组共有的角色和特权。

组是对一组用户进行角色和特权维护的有效方式。

如果用户所隶属于的组拥有对象,还意味着用户在进行诸如执行组拥有的过程,或查询组拥有的表等操作时无需限定对象名。例如,如果名为 PersonnelData 的组拥有名为 MyData 的表,且用户 ID M_Haneef 为该组成员,则 M_Haneef 在查询中引用该表时可使用 MyData 来代替 PersonnelData.MyData。如果用户拥有的表与组拥有的表名称相同,则数据库服务器将使用用户拥有的表,而非组拥有的表。如果用户属于多个拥有同名表的组,则用户必须限定表名。

在 SQL Anywhere 中,组不是数据库对象。相反,组是通过用户定义的角色来实现的,可使用以下两种方法之一创建组:

  • 使用用户扩展角色方法创建组   用户扩展角色是通过将现有用户 ID 扩展为角色的方式创建而成的用户定义角色。这种组创建方法将创建用户 ID 并为其授予该组所需的所有角色和特权。该用户 ID 将转换为用户扩展角色,然后被授予给有需要的用户。当然,这些步骤也可以按其它顺序进行。

    在因复制目的而创建组时通常使用此方法,因为已被扩展为角色的用户也具有登录能力。

    对于先前版本的 SQL Anywhere 用户而言,此方法等同于不建议使用的 GRANT 语句方法,后者将 GROUP 授予用户,然后将 MEMBERSHIP IN GROUP 授予其他用户。

    要删除使用此方法创建的组,将用户扩展角色转换回常规用户 (DROP ROLE FROM USER userid)。转换回常规用户后,用户仍保留对象的所有权。

    使用用户扩展角色方法时,可通过 SYSROLEGRANTS 统一视图或 SYSGROUPS 兼容性视图来查询组及其成员的信息。

  • 使用独立角色方法创建组   独立角色是不与任何用户 ID 相关联的用户定义角色。这种组创建方法将创建角色并为其授予一组已定义的用户所需的所有角色和特权。然后将该角色授予有需要的用户。

    要删除使用独立方法创建的组,请删除角色。也可以选择在删除角色的同时删除该角色所拥有的对象。

    使用独立角色方法时,不能通过 SYSGROUPS 兼容性视图来查询组及其成员的信息。但可通过 SYSROLEGRANTS 统一视图进行信息查询。

这两种方法均在用户定义角色级别进行组成员特权管理,而不在每个用户 ID 级别进行。

 两种方法的示例
 另请参见