Privilégios de objetos (o que seria GRANT ANY OBJECT?)

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Cristiano Gomes
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Sex, 25 Mai 2007 3:21 pm
Localização: São Paulo

Boa tarde pessoal,

1) alguém sabe me dizer o que o comando a baixo permite um usuário fazer?

Selecionar tudo

GRANT ANY OBJECT PRIVILEGE 
2) No código fonte aparecia da maneira abaixo, porém acredito que isso seja para oracles antes da versão 9i

Selecionar tudo

GRANT ANY OBJECT 
A questão é que estou sendo solicitado para alterar meu código de GRANT ANY OBJECT para GRANT ANY OBJECT PRIVILEGE e gostaria de saber se isso pode me trazer algum problema.

Muito obrigado
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Cristinano,

Esta informação eu obtive no manual do ORACLE 9i (Oracle9i Database Concepts Release 2 (9.2)), mas entendo que ela se estende a todos os releases após este:
Who Can Grant Schema Object Privileges?
A user automatically has all object privileges for schema objects contained in his or her schema. A user can grant any object privilege on any schema object he or she owns to any other user or role. A user with the GRANT ANY OBJECT PRIVILEGE can grant or revoke any specified object privilege to another user with or without the GRANT OPTION of the GRANT statement. Otherwise, the grantee can use the privilege, but cannot grant it to other users.

For example, assume user SCOTT has a table named t2:

Selecionar tudo

SQL>GRANT grant any object privilege TO U1; 
SQL> connect u1/u1 
Connected. 
SQL> GRANT select on scott.t2 \TO U2; 
SQL> SELECT GRANTEE, OWNER, GRANTOR, PRIVILEGE, GRANTABLE FROM DBA_TAB_PRIVS 
 WHERE TABLE_NAME = 'employees'; 

GRANTEE                        OWNER 
------------------------------ ------------------------------ 
GRANTOR                        PRIVILEGE                                GRA 
------------------------------ ---------------------------------------- --- 
U2                             SCOTT 
SCOTT                          SELECT                                   NO
Pelo que eu posso entender, quando um usuário dispõe do privilégio "GRANT ANY OBJECT" ele pode atribuir permissões de acesso a objetos (que não pertencem à ele) para qualquer schema ou role.

No exemplo acima, o usuário U1 atribuiu uma permissão de SELECT na tabela SCOTT.T2 para o usuário U2.

Como U1 dispunha do privilégio GRANT ANY OBJECT, o usuário SCOTT não precisou fazer um GRANT SELECT ON SCOTT.T2 TO U1 WITH GRANT OPTION.

Abraços,

Sergio Coutinho
Responder
  • Informação