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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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 |
|
varchar2 |
— |
Sí |
El nombre del objeto al que se van a conceder privilegios. El objeto puede ser un esquema o un rol. |
|
varchar2 |
null |
Sí |
— |
|
booleano |
false |
No |
Establézcalo en |
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 toUSER1
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.