Permissionando com WITH ADMIN OPTION e WITH GRANT OPTION

Categoria: Oracle
Publicado em 18 de Junho de 2013

Ao permissionar no Oracle, seja com privilégio de sistema, privilégio de objeto ou roles, é possível conceder ao usuário que está recebendo a permissão, a possibilidade para que ele possar conceder as mesmas permissões à outros usuários.

Para privilégios de sistema e roles, usa-se WITH ADMIN OPTION:

1
2
GRANT CREATE TABLE TO FERNANDO WITH ADMIN OPTION;
GRANT ROLE_ANALISTA TO FERNANDO WITH ADMIN OPTION;

No código acima, a primeira linha indica que o usuário Fernando poderá criar tabelas e também poderá conceder a permissão de criar tabelas a outros usuários. A segunda linha indica que o usuário Fernando está recebendo os privilégios da role ROLE_ANALISTA e ao mesmo tempo poderá conceder os privilégios desta role a outros usuários.

Para privilégios de objeto, usa-se WITH GRANT OPTION:

1
GRANT SELECT ON CLIENTES TO FERNANDO WITH GRANT OPTION;

O código acima faz com que o usuário Fernando tenha permissão de SELECT sobre o objeto (tabela) de Clientes e, ao mesmo tempo, o usuário Fernando também poderá conceder a permissão de SELECT a outros usuários.

É importante notar que ao usar o comando REVOKE para remover um privilégio de sistema, os privilégios concedidos por outros usuários não serão afetados. Ou seja, não é realizada a remoção de privilégios em cascata. Porém, para privilégios de objeto, a remoção de privilégios em sistema ocorre. Portanto:

1
REVOKE SELECT ON CLIENTES FROM FERNANDO;

Irá remover o privilégio de SELECT do usuário Fernando e de todos os usuários a quem Fernando tenha concedido o mesmo privilégio.


 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados