Como verificar usuários, privilégios e roles no banco de dados Oracle

Neste post, você descobrirá de forma simples e rápida como verificar usuários, privilégios e roles no Oracle.

Primeiramente, a recuperação de dados sobre usuários, papéis (roles) e privilégios de um usuário no Oracle pode variar de uma tarefa simples usando uma consulta SQL básica a um script avançado, dependendo principalmente do envolvimento das funções e privilégios no servidor.

Neste breve tutorial, separamos algumas queries para obter informações a respeito de usuários, papéis (roles) e privilégios em um banco de dados Oracle.

Verificando permissões de usuários, privilégios e roles no banco de dados Oracle
Verificando permissões de usuários, privilégios e roles no banco de dados Oracle

O que é uma Role (papel) no Oracle? 

Antes de mais nada, vamos entender o conceito de Role. Primeiramente, uma Role, ou papel, é um agrupamento de permissões que pode ser concedida a usuários ou outras roles. Além disso, sua utilização ajuda a administrar as permissões de objetos no banco de dados. Dessa forma, poupa-se o tempo que seria gasto com permissões e revogações individuais.

Consultando views de privilégio do DBA / USER

Um administrador de banco de dados (DBA) Oracle pode executar consultas nas views DBA_SYS_PRIVS, DBA_TAB_PRIVS e DBA_ROLE_PRIVS para obter informações sobre os privilégios de usuário relacionados com ao sistema, tabelas e roles, respectivamente.

Como verificar usuários, privilégios e roles no banco de dados Oracle
Como verificar usuários, privilégios e roles no banco de dados Oracle

DBA_SYS_PRIVS : Privilégios de sistema concedidos a usuários e funções

Por exemplo, um DBA que precisa exibir os privilégios de sistema concedidos a usuários e funções pode efetuar uma consulta na view DBA_SYS_PRIVS. Para isso, pode utilizar a seguinte consulta SQL:

SELECT * FROM DBA_SYS_PRIVS;

A view DBA_SYS_PRIVS contém três colunas de dados:

  • GRANTEE: Este campo indica o nome, função ou usuário ao qual foi atribuído o privilégio.
  • PRIVILEGE: Esta coluna especifica o privilégio do sistema que foi designado.
  • ADMIN_OPTION: Esta coluna informa se o privilégio concedido estava com a opção ADMIN.

Portanto, ao utilizar essa view, os DBAs conseguem obter uma visão clara das permissões de sistema atribuídas, facilitando a gestão dos privilégios no banco de dados Oracle.

DBA_TAB_PRIVS : Privilégios concedidos em objetos no banco de dados

Para determinar quais usuários têm acesso direto a uma tabela ou objeto de banco de dados, usamos a view DBA_TAB_PRIVS:

SELECT   * FROM  DBA_TAB_PRIVS;

Você pode verificar a documentação oficial para obter mais informações sobre as colunas retornadas nesta consulta, mas as colunas importantes são:

  • GRANTEE – Nome do usuário com acesso concedido.
  • OWNER – Proprietário do objeto
  • TABLE_NAME –  Nome do objeto (tabela, índice, sequência etc.).
  • GRANTOR – Nome do usuário que executou a concessão
  • PRIVILEGE – Privilégio atribuído ao GRANTEE objeto associado.

DBA_ROLE_PRIVS : Privilégios em roles para usuários e roles

Por fim, a view DBA_ROLE_PRIVS que fornece informações sobre papéis (roles) que foram concedidas aos usuários:

SELECT * FROM DBA_ROLE_PRIVS;
  • Grantee – Nome de usuário a quem a função foi concedida
  • Granted_role – Nome do objeto
  • Admin_option – SIM se a função foi concedida com a opção de administrador, NÃO caso contrário.
  • Default_role – SIM se a função estiver ativada quando o usuário autorizado criar uma sessão.

Exemplos de consultas para verificar usuários, roles e privilégios no Oracle 

Em seguida, separamos algumas querys para serem utilizadas pelo DBA para para verificar usuários, permissões / papéis (roles) concedidos de um usuário

Query para consultar roles para um usuário

SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = '&NOMEDOUSUARIO';

Privilégios concedidos a um usuário

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'NOMEDOUSUARIO';

Privilégios concedidos a objetos conforme privilégio concedido a uma role de um usuário

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE IN (SELECT granted_role FROM DBA_ROLE_PRIVS WHERE GRANTEE = '&NOMEDOUSUARIO''') order by 3;

Consulta para verificar se o usuário possui privilégios de sistema

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '&NOMEDOUSUARIO'';

Consulta para verificar as permissões concedidas a uma role

select * from ROLE_ROLE_PRIVS where ROLE = '&NOME_DA_ROLE';
select * from ROLE_TAB_PRIVS where ROLE = '&NOME_DA_ROLE';
select * from ROLE_SYS_PRIVS where ROLE = '&NOME_DA_ROLE';

Referências : usuários privilégios roles Oracle:

Materiais e leituras que recomendamos para você:

Obrigado

Espero que este tutorial possa lhe ajudar a gerenciar permissões de usuários no Oracle Database e por consequência apoiá-lo em seu trabalho ou estudo deste banco de dados.

Se você gostou desta publicação, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.

Você pode nos ajudar a criar mais conteúdos como este. Como ?

Prestigie nossos anunciantes conhecendo seus produtos e serviços.

É simples e rápido e você certamente ajuda a gente a crescer.

Obrigado e um grande abraço

Renato Sanches

Cadastre-se em nossa Newsletter de Tecnologia

Inscreva-se gratuitamente e seja o primeiro a ser notificado sobre novas atualizações sobre Tecnologia.

Posts Similares