Concessão de privilégios SELECT ou EXECUTE a objetos SYS - Amazon Relational Database Service

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

p_obj_name

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 DBA_OBJECTS. Como a maioria dos objetos do sistema é definida em maiúsculas, recomendamos que você tente isso primeiro.

p_grantee

varchar2

Sim

O nome do objeto para o qual conceder privilégios. O objeto pode ser uma esquema ou um função.

p_privilege

varchar2

nulo

Sim

p_grant_option

booliano

false

Não

Defina como true para usar a opção de concessão.

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 to USER1 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.