it-swarm-eu.dev

Jak vypsat seznam všech uživatelů, kteří mají granty na balíček

Hledám dotaz na seznam všech uživatelů, kteří mají granty na balíček.

Například uživateli Schema_A bylo uděleno spuštění balíčku: B.MyPackage.

Ptám se na pohledy nebo tabulky jako: role_tab_privs, role_sys_privs, sys.dba_sys_privs, dba_role_privs ... ale nemůžu najít to, co hledám.

9
Delmonte

Pokud bylo oprávnění uděleno přímo nebo roli, grant se zobrazí v DBA_TAB_PRIVS

SELECT grantee, privilege
  FROM dba_tab_privs
 WHERE owner = 'B'
   AND table_name = 'MYPACKAGE'
   AND privilege = 'EXECUTE'

Pokud je role grantee, musíte se podívat na dba_role_privs, abyste zjistili, kterým uživatelům (nebo rolím) byla tato role udělena, a sledujte řetězec, pokud máte role udělené jiným rolím. Pokud potřebujete účet pro uživatele, kteří mají granty kvůli (velmi nebezpečným) granty ANY (tj. EXECUTE ANY PROCEDURE), vyžadovalo by to samostatný dotaz.

Pokud chcete být sofistikovanější, než jednoduše udělat přímý dotaz proti dba_tab_privs, ale pravděpodobně budete lépe používat skripty Pete Finnigan jako who_has_priv.sql (nebo who_has_priv_procedure.sql). Pete je pravděpodobně předním odborníkem na zabezpečení Oracle, takže je mnohem pravděpodobnější, že bude účtovat každý možný rohový případ, než cokoli, co bych se pokusil společně dlát.

15
Justin Cave