Concessão de privilégios SELECT ou EXECUTE a objetos SYS
Normalmente, você transfere privilégios usando funções, que podem conter muitos objetos. Para conceder privilégios a um único objeto, use o procedimento rdsadmin.rdsadmin_util.grant_sys_object
do Amazon RDS. O procedimento concede apenas privilégios já concedidos ao usuário mestre por uma função ou por uma concessão direta.
O procedimento grant_sys_object
tem os seguintes parâmetros.
Importante
Para todos os valores de parâmetro, use letras maiúsculas, a menos que você tenha criado o usuário com um identificador que diferencia letras maiúsculas de minúsculas. Por exemplo, se você executar CREATE USER
myuser
ou CREATE USER MYUSER
, o dicionário de dados armazenará MYUSER
. No entanto, se você usar aspas duplas em CREATE USER
"MyUser"
, o dicionário de dados armazenará MyUser
.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
— |
Sim |
O nome do objeto ao qual conceder privilégios. O objeto pode ser um diretório, uma função, um pacote, um procedimento, uma sequência, uma tabela ou uma visualização. Os nomes dos objetos devem ser expressos exatamente como eles aparecem em |
|
varchar2 |
— |
Sim |
O nome do objeto para o qual conceder privilégios. O objeto pode ser uma esquema ou um função. |
|
varchar2 |
nulo |
Sim |
— |
|
booliano |
false |
Não |
Defina como |
O exemplo a seguir concede privilégios de seleção em um objeto chamado V_$SESSION
a um usuário chamado USER1
.
begin rdsadmin.rdsadmin_util.grant_sys_object( p_obj_name => '
V_$SESSION
', p_grantee => 'USER1
', p_privilege => 'SELECT
'); end; /
O exemplo a seguir concede privilégios de seleção em um objeto chamado V_$SESSION
a um usuário chamado USER1
com a opção de concessão.
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 privilégios a um objeto, sua conta deve ter esses privilégios concedidos a ela diretamente com a opção de concessão ou por meio de uma função concedida usando with admin option
. No caso mais comum, você pode querer conceder SELECT
em uma visualização de DBA que foi concedida à função SELECT_CATALOG_ROLE
. Se essa função ainda não estiver diretamente concedida ao seu usuário usando with admin option
, você não poderá transferir o privilégio. Se você tiver privilégios de DBA, poderá conceder a função diretamente a outro usuário.
O exemplo a seguir concede SELECT_CATALOG_ROLE
e EXECUTE_CATALOG_ROLE
a USER1
. Com o with
admin option
é usado, USER1
agora pode conceder acesso a objetos SYS que foram concedidos a SELECT_CATALOG_ROLE
.
GRANT SELECT_CATALOG_ROLE TO
USER1
WITH ADMIN OPTION; GRANT EXECUTE_CATALOG_ROLE toUSER1
WITH ADMIN OPTION;
Objetos já concedidos a PUBLIC
não precisam ser novamente concedidos. Se você usar o procedimento grant_sys_object
para conceder acesso novamente, a chamada de procedimento será bem-sucedida.