Estou procurando alguma consulta para listar todos os usuários que possuem concessões em um pacote.
Por exemplo, o usuário Schema_A foi autorizado a executar o pacote: B.MyPackage.
Estou consultando exibições ou tabelas como: role_tab_privs, role_sys_privs,sys.dba_sys_privs, dba_role_privs... mas não consigo encontrar o que estou procurando.
Se o privilégio foi concedido diretamente ou a uma função, a concessão aparecerá em
DBA_TAB_PRIVS
Se
grantee
for uma função, você precisariadba_role_privs
ver quais usuários (ou funções) receberam essa função e seguir a cadeia se você tiver funções concedidas a outras funções. Se você precisar contabilizar usuários que têm concessões por causa das (muito perigosas)ANY
concessões (ou sejaEXECUTE ANY PROCEDURE
, ), isso exigiria uma consulta separada.Se você quiser ficar mais sofisticado do que simplesmente fazer uma consulta direta em
dba_tab_privs
, provavelmente será melhor usar um dos scripts de Pete Finnigan como owho_has_priv.sql
(ouwho_has_priv_procedure.sql
). Pete é provavelmente o principal especialista em segurança da Oracle, portanto, é muito mais provável que eles respondam por todos os casos de canto possíveis do que qualquer coisa que eu tentaria montar.