Paket üzerinden hibe alan tüm kullanıcılar nasıl listelenir?


9

Bir paket üzerinden hibe olan tüm kullanıcıları listelemek için bazı sorgu arıyorum.

Örneğin, Schema_A kullanıcısına şu paketi çalıştırma izni verildi: B.MyPackage.

Rolleri veya tabloları sorgularım: role_tab_privs, role_sys_privs, sys.dba_sys_privs, dba_role_privs ... ama aradığımı bulamıyorum.

Yanıtlar:


15

Ayrıcalık doğrudan veya bir rol için verildiyse, hibe DBA_TAB_PRIVS

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

Bu granteebir rolse, o dba_role_privskullanıcıya hangi rollere (veya rollere) sahip olduğunu görmek ve diğer rollere verilen rolleriniz varsa zinciri takip etmek gerekir. (Çok tehlikeli) ANYhibeler (yani EXECUTE ANY PROCEDURE) nedeniyle hibeleri olan kullanıcıları hesaba katmanız gerekirse , bu ayrı bir sorgu gerektirir.

dba_tab_privsBununla birlikte, sadece düz bir sorgu yapmaktan daha sofistike olmak istiyorsanız, muhtemelen Pete Finnigan'ınwho_has_priv.sql (veya who_has_priv_procedure.sql) gibi senaryolarını kullanmaktan daha iyidir . Pete muhtemelen Oracle güvenliği konusunda önde gelen bir uzmandır, bu nedenle bunların her olası köşe vakasını açıklamak için birlikte çakmaya çalışacağım her şeyden çok daha olasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.