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 TOUSER1WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1WITH 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.