패키지에 대한 권한이있는 모든 사용자를 나열하는 방법


9

패키지에 대한 권한을 가진 모든 사용자를 나열하는 쿼리를 찾고 있습니다.

예를 들어, Schema_A 사용자에게 패키지 B.MyPackage를 실행할 권한이 부여되었습니다.

role_tab_privs, role_sys_privs, sys.dba_sys_privs, dba_role_privs와 같은 뷰 또는 테이블을 쿼리하고 있지만 원하는 것을 찾을 수 없습니다.

답변:


15

권한이 직접 또는 역할에 부여 된 경우 해당 권한은 DBA_TAB_PRIVS

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

grantee역할 인 경우 dba_role_privs해당 역할이 부여 된 사용자 (또는 역할)를 확인하고 다른 역할에 부여 된 역할이있는 경우 체인을 따라야합니다. (매우 위험한) ANY보조금 (즉 EXECUTE ANY PROCEDURE, )으로 인해 보조금이있는 사용자를 고려해야 하는 경우 별도의 쿼리가 필요합니다.

에 대한 간단한 쿼리를 수행하는 것보다 더 정교 해지고 싶다면 (또는 ) 와 같은 Pete Finnigan의 스크립트를dba_tab_privs 사용하는 것이 좋습니다 . Pete는 아마도 Oracle 보안의 선도적 인 전문가 일 것이므로 가능한 한 모든 코너 사건을 설명 할 가능성이 훨씬 높습니다.who_has_priv.sqlwho_has_priv_procedure.sql

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.