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