パッケージに対する権限を持つすべてのユーザーを一覧表示する方法


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)のために許可を持つユーザーを考慮する必要がある場合は、別のクエリが必要になります。

dba_tab_privsただし、単純にに対して単純なクエリを実行するよりも高度なものにしたい場合は、(または)のようなピートフィニガンのスクリプトを使用することをお勧めします。ピートはおそらくOracleのセキュリティの主要な専門家であるため、私が一緒に考え出そうとするものよりも、起こりうるあらゆる隅角のケースを説明する可能性がはるかに高いです。who_has_priv.sqlwho_has_priv_procedure.sql

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.