我正在寻找一些查询来列出对一个包有授权的所有用户。
例如,用户 Schema_A 已被授权执行包:B.MyPackage。
我正在查询如下视图或表:role_tab_privs、role_sys_privs、sys.dba_sys_privs、dba_role_privs...但我找不到我在找什么。
Jus*_*ave 18
如果权限已直接授予或授予角色,则授予将显示在 DBA_TAB_PRIVS
SELECT grantee, privilege
FROM dba_tab_privs
WHERE owner = 'B'
AND table_name = 'MYPACKAGE'
AND privilege = 'EXECUTE'
Run Code Online (Sandbox Code Playgroud)
如果grantee
是角色,则您需要dba_role_privs
查看哪些用户(或角色)已被授予该角色,如果您将角色授予其他角色,则遵循链。如果您需要考虑由于(非常危险的)ANY
授权(即EXECUTE ANY PROCEDURE
)而获得授权的用户,则需要单独查询。
但是,如果您想变得更复杂而不是简单地对 进行直接查询dba_tab_privs
,那么您可能最好使用Pete Finnigan 的脚本,如who_has_priv.sql
(或who_has_priv_procedure.sql
)。Pete 可能是 Oracle 安全方面的领先专家,因此这些比我试图拼凑的任何东西更有可能解释所有可能的极端情况。
归档时间: |
|
查看次数: |
103933 次 |
最近记录: |