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 服务器 - 数据库管理 » 用户和数据库安全 » 用户安全性(角色和特权) » 升级到基于角色的安全性

 

对一些已变为角色的权限的继承行为进行的更改

在 16.0 以前版本的数据库中,如果您将 DBA、REMOTE DBA、BACKUP、RESOURCE 和 VALIDATE 授权授予某个组,则该组的成员不会 继承基础权限。

但是现在,将任何 角色(包括 SYS_AUTH_DBA_ROLE、SYS_RUN_REPLICATION_ROLE、SYS_AUTH_BACKUP_ROLE、SYS_AUTH_RESOURCE_ROLE 和 SYS_AUTH_VALIDATE_ROLE)授予用户定义角色时的缺省行为是允许已被授予用户定义角色的被授予者继承这些角色的基础系统特权。

假设有一个用户 userA。为 userA 授予 ALTER ANY OBJECT 系统特权。然后决定将 userA 扩展为角色,再将 userA 授予 userB。现在,您想将 SYS_AUTH_DBA_ROLE 系统角色授予 userA,但不希望 userB 继承 SYS_AUTH_DBA_ROLE 系统角色提供的所有特权。因此,通过如下语句授予 SYS_AUTH_DBA_ROLE 系统角色:

GRANT ROLE SYS_AUTH_DBA_ROLE TO userA WITH NO SYSTEM PRIVILEGE INHERITANCE;

在这种情况下,userB 只从 userA 继承 ALTER ANY OBJECT 系统特权。

要在升级期间保留这些角色的不继承行为,SQL Anywhere 在 GRANT ROLE 语句中包括 WITH NO SYSTEM PRIVILEGE INHERITANCE 子句。同理,如果有应用程序想要更改为使用新的 GRANT 语法,也必须指定此子句。此子句仅与这些特定角色一起使用。

 另请参见