向 SYS 对象授予 SELECT 或 EXECUTE 权限 - Amazon Relational Database Service

向 SYS 对象授予 SELECT 或 EXECUTE 权限

通常,您使用可包含多个对象的角色来传输权限。要为单个对象授予权限,请使用 Amazon RDS 过程 rdsadmin.rdsadmin_util.grant_sys_object。此过程仅授予已通过角色或直接授权授予主用户的权限。

grant_sys_object 过程具有以下参数。

重要

对于所有参数值,除非您使用区分大小写的标识符创建了用户,否则请使用大写字母。例如,如果您运行 CREATE USER myuserCREATE USER MYUSER,则数据字典将存储 MYUSER。但是,如果您在 CREATE USER "MyUser" 中使用双引号,则数据字典将存储 MyUser

参数名称 数据类型 默认值 必需 描述

p_obj_name

varchar2

要授予其权限的对象的名称。对象可以是目录、函数、包、过程、序列、表或视图。对象名称的拼写必须与其在 DBA_OBJECTS 中出现时的拼写完全相同。由于大多数系统对象都是用大写形式定义的,因此,建议您先尝试这样做。

p_grantee

varchar2

要向其授予权限的对象的名称。对象可以是架构或角色。

p_privilege

varchar2

null

p_grant_option

布尔值

false

设置为 true,则使用 with grant option。

以下示例将名为 V_$SESSION 的对象的 select 权限授予名为 USER1 的用户。

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT'); end; /

以下示例使用授予选项将名为 V_$SESSION 的对象的 select 权限授予名为 USER1 的用户。

begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => 'V_$SESSION', p_grantee => 'USER1', p_privilege => 'SELECT', p_grant_option => true); end; /

要能够授予针对某个对象的权限,您的账户必须具有通过使用授权选项或通过使用 with admin option 授予的角色直接为其授予的这些权限。在最常见的情况下,您可能希望授予已授予给 SELECT 角色的针对 DBA 视图的 SELECT_CATALOG_ROLE 权限。如果尚未使用 with admin option 将该角色直接授予您的用户,则您将无法转让此权限。如果您具有 DBA 权限,则可直接将该角色授予其他用户。

以下示例将 SELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLE 授予 USER1。由于使用了 with admin option,因此,USER1 现在可向已获得 SELECT_CATALOG_ROLE 的 SYS 对象授予访问权。

GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;

无需对已获得 PUBLIC 的对象重新授权。如果您使用 grant_sys_object 过程重新授予访问权,则此过程调用将成功。