您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

将现有用户转换为用户扩展角色

可对现有用户 ID 进行扩展,使其用作角色。如果某个用户被指派有一组系统特权和对象级特权,而您想将这组系统特权和对象级特权授予其他用户,则进行此操作将非常有用。

先决条件

MANAGE ROLES 系统特权。

背景信息

如果现有 ID 具有登录特权,则用户扩展角色将保留登录特权。

将用户转换为角色时,可以指定角色的管理员,并指明管理员是否也将成为角色成员。如果未指定任何管理员,则全局角色管理员(被授予 MANAGE ROLES 系统特权的任何用户)将成为角色的缺省管理员。

但是,如果至少指定一个角色管理员,则全局角色管理员将无法管理该角色,因为系统不会自动向角色授予 SYS_MANAGE_ROLES_ROLE 系统特权,同时还授予管理权限。因此,SAP 强烈建议您在创建或转换角色时不要定义任何角色管理员(而是在创建之后添加),或者在创建或转换角色过程中显式授予 SYS_MANAGE_ROLES_ROLE 系统特权,同时仅授予管理权限以及任何角色管理员。

可在转换用户后添加和删除角色管理员。如果您试图用不存在的用户 ID 转换用户,该语句将失败。

过程

要转换现有用户,请执行下列语句之一: 转换条件语句仅有全局角色管理员;无角色管理员CREATE ROLEFOR USER角色管理员无角色成员资格;无全局角色管理员CREATE ROLEFOR USERWITH ADMIN ONLY角色管理员具有角色成员资格无全局角色管理员*CREATE ROLEFOR USERWITH ADMIN角色管理员无角色成员资格;全局角色管理员*CREATE ROLEFOR USERWITH ADMIN ONLYSYS_MANAGE_ROLES_ROLE,  * 由于无法为全局角色管理员授予角色成员资格,因此,如果在创建角色时为角色管理员授予角色成员资格(使用 WITH ADMIN OPTION),则管理员列表中不能包含 SYS_MANAGE_ROLES_ROLE。但是,如果在创建角色时没有为角色管理员授予角色成员资格(使用 WITH ADMIN ONLY OPTION),则可将其包含在管理员列表中。

示例

以下语句将用户 Sales1 扩展为角色。由于未指定任何角色管理员,因此,任何具有 MANAGE ROLES 系统特权的用户都可管理该角色。

CREATE ROLE FOR USER Sales1

以下语句将用户 Marketing1 扩展为角色,其中 充当角色管理员。该语句还允许全局角色管理员管理角色。

CREATE ROLE FOR USER Marketing1 WITH ADMIN ONLY SYS_MANAGE_ROLES_ROLE, Jane, Bob