通过使用 WITH ADMIN OPTION 子句来委托角色维护

通过使用 GRANT(Role)SQL 语句的 WITH ADMIN OPTION 子句,安全性管理员可以将角色中成员资格的管理和控制权委托给其他人。

WITH ADMIN OPTION 子句使另一个用户有权将角色中的成员资格授予其他用户、撤销角色的其他成员在该角色中的成员资格以及注释但不删除该角色。

WITH ADMIN OPTION 子句不会使另一个用户有权将对角色的 WITH ADMIN OPTION 授予其他用户。 它也不会使另一个用户有权撤销其他授权标识对角色的 WITH ADMIN OPTION。

说明 WITH ADMIN OPTION 子句的用法的示例

  1. 安全性管理员创建角色 DEVELOPER 并使用 WITH ADMIN OPTION 子句将此新角色授予用户 BOB:
    CREATE ROLE DEVELOPER
    GRANT ROLE DEVELOPER TO USER BOB WITH ADMIN OPTION
  2. 用户 BOB 可以将该角色中的成员资格授予其他用户(例如,ALICE)并撤销其他用户在该角色中的成员资格:
    GRANT ROLE DEVELOPER TO USER ALICE	
    REVOKE ROLE DEVELOPER FROM USER ALICE	
    
  3. 用户 BOB 不能删除该角色或将 WITH ADMIN OPTION 授予另一个用户(只有安全性管理员可以执行这两个操作)。 BOB 发出的这些命令将失败:
    
    DROP ROLE DEVELOPER  - FAILURE! 
                         - only a security administrator is allowed to drop the role
    GRANT ROLE DEVELOPER TO USER ALICE WITH ADMIN OPTION	- FAILURE! 
                         - only a security administrator can grant WITH ADMIN OPTION
  4. 由于用户 BOB 没有安全性管理员 (SECADM) 权限,所以他/她不能撤销角色 DEVELOPER 的用户的角色管理特权(由 WITH ADMIN OPTION 授予)。 当 BOB 发出以下命令时,该命令将失败:
    REVOKE ADMIN OPTION FOR ROLE DEVELOPER FROM USER SANJAY - FAILURE! 
    
  5. 安全性管理员可以撤销用户 BOB 对角色 DEVELOPER 的角色管理特权(由 WITH ADMIN OPTION 授予),并仍对用户 BOB 授予角色 DEVELOPER:
    REVOKE ADMIN OPTION FOR ROLE DEVELOPER FROM USER BOB
    此外,如果安全性管理员仅撤销用户 BOB 的角色 DEVELOPER,那么 BOB 将失去作为角色 DEVELOPER 的成员所拥有的所有特权以及通过 WITH ADMIN OPTION 子句拥有的对该角色的权限:
    REVOKE ROLE DEVELOPER FROM USER BOB