Concesión de privilegios SELECT o EXECUTE para objetos SYS - Amazon Relational Database Service

Concesión de privilegios SELECT o EXECUTE para objetos SYS

Por lo general, para transferir privilegios se utilizan los roles, que pueden contener muchos objetos. Utilice el procedimiento de Amazon RDS para conceder privilegios a un solo objet rdsadmin.rdsadmin_util.grant_sys_object. El procedimiento solo concede los privilegios que ya haya obtenido el usuario maestro mediante un rol o una concesión directa.

El procedimiento grant_sys_object tiene los siguientes parámetros.

importante

Para todos los valores de parámetros, utilice mayúsculas a no ser que haya creado el usuario con un identificador que distingue entre mayúsculas y minúsculas. Por ejemplo, si ejecuta CREATE USER myuser o CREATE USER MYUSER, el diccionario de datos almacena MYUSER. Sin embargo, si utiliza comillas dobles en CREATE USER "MyUser", el diccionario de datos almacena MyUser.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_obj_name

varchar2

El nombre del objeto para el que se van a conceder privilegios. El objeto puede ser un directorio, una función, un paquete, un procedimiento, una secuencia, una tabla o una vista. Los nombres de los objetos deben escribirse exactamente como aparecen en DBA_OBJECTS. La mayoría de los objetos del sistema están definidos en mayúsculas, por lo que recomendamos que lo intente como primera opción.

p_grantee

varchar2

El nombre del objeto al que se van a conceder privilegios. El objeto puede ser un esquema o un rol.

p_privilege

varchar2

null

p_grant_option

booleano

false

No

Establézcalo en true para usar la opción de concesión (WITH GRANT OPTION).

En el siguiente ejemplo se le concede el privilegio SELECT sobre el objeto V_$SESSION al usuario USER1.

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

En el siguiente ejemplo se le concede el privilegio SELECT sobre el objeto V_$SESSION al usuario USER1 con la opción de concesión.

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

Para poder conceder privilegios sobre un objeto, una cuenta debe haber obtenido los privilegios directamente con la opción de concesión o a través de un rol concedido utilizando with admin option. En el caso más común, es posible que desee conceder SELECT para una vista de administración de bases de datos que se haya concedido al rol SELECT_CATALOG_ROLE. Si a su usuario no se le ha concedido ese rol directamente utilizando with admin option, no podrá transferir el privilegio. Si tiene el privilegio de DBA, puede conceder el rol directamente a otro usuario.

En el siguiente ejemplo se conceden SELECT_CATALOG_ROLE y EXECUTE_CATALOG_ROLE a USER1. Dado que se utiliza with admin option, USER1 ahora puede conceder acceso a los objetos SYS que se hayan concedido a SELECT_CATALOG_ROLE.

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

No es necesario volver a conceder los objetos que ya se han concedido a PUBLIC. Si utiliza el procedimiento grant_sys_object para volver a conceder acceso, la llamada al procedimiento se realiza correctamente.