128 DBMS_PRIVILEGE_CAPTURE
DBMS_PRIVILEGE_CAPTURE
パッケージは、データベース権限分析へのインタフェースを提供します。
参照:
付与された権限の使用状況を分析する方法については、『Oracle® Databaseセキュリティ・ガイド』を参照してください。
この章のトピックは、次のとおりです:
128.1 DBMS_PRIVILEGE_CAPTUREの概要
データベース権限分析では、システムの使用方法とユーザーに付与されたオブジェクト権限を記録するポリシーを作成できます。さらに、ユーザーが使用している権限と使用していない権限を判別できます。ここでは、使用されていないすべての権限を取り消すことで、ユーザーに付与された余分な権限の数を減らすことができます。
特定のタスクを実行するためにユーザーの所有が必要な権限を分析することによって、権限分析ポリシーによるユーザーの最小権限モデルが実現できるようになります。
128.2 DBMS_PRIVILEGE_CAPTUREのセキュリティ・モデル
デフォルトでは、権限分析管理者ロールCAPTURE_ADMIN
に、DBMS_PRIVILEGE_CAPTURE
パッケージのEXECUTE
権限が付与されます。
データベースのインストール中、CAPTURE_ADMIN
ロールがDBA
ロールに付与されます。
128.3 DBMS_PRIVILEGE_CAPTUREの定数
DBMS_PRIVILEGE_CAPTURE
パッケージは、パラメータ値の指定に使用するいくつかの列挙定数を定義します。
表128-1 DBMS_PRIVILEGE_CAPTUREの定数
定数 | 値 | タイプ | 説明 |
---|---|---|---|
|
|
|
|
|
|
|
指定されたロールの権限の使用状況を分析します。 |
|
3 |
|
|
|
4 |
|
|
128.4 DBMS_PRIVILEGE_CAPTUREの例
次の例では、DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE
プロシージャを使用して、データベース分析、ロール分析およびコンテキスト固有の分析などの様々な種類の権限分析を作成する例が示されています。この例では、コンテキスト固有の分析で異なる条件を組み合せる例も示されています。
--Create a database privilege analysis policy BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'all_priv_analysis_pol', description => 'database-wide policy to analyze all privileges', type => DBMS_PRIVILEGE_CAPTURE.G_DATABASE); END; --Create a privilege analysis policy to analyze privileges from the role PUBLIC BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'pub_analysis_pol', description => 'Policy to record privilege use by PUBLIC', type => DBMS_PRIVILEGE_CAPTURE.G_ROLE, roles => role_name_list('PUBLIC')); END; -- Create a policy to analyze privileges from the application module, "Account -- Payable" BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'acc_pay_analysis_pol', type => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT, condition => 'SYS_CONTEXT(''USERENV'', ''MODULE'') = ''Account Payable'''); END; -- Create a policy that records privileges for session user APPS when running the -- application module "Account Payable" BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'acc_pay_analysis_pol', type => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT, condition => 'SYS_CONTEXT(''USERENV'', ''MODULE'') = ''Account Payable'' AND SYS_CONTEXT(''USERENV'', ''SESSION_USER'') = ''APPS'''); END;
128.5 DBMS_PRIVILEGE_CAPTUREサブプログラムの要約
この表では、DBMS_PRIVILEGE_CAPTURE
パッケージのサブプログラムをリストし、簡単に説明します。
表128-2 DBMS_PRIVILEGE_CAPTUREパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
定義者権限および実行者権限PL/SQLプログラム・ユニットで比較のために使用される権限を取得します。 |
|
権限の使用状況を分析するための条件を指定するポリシーを作成します。 |
|
権限分析の取得実行を削除します。 |
|
指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。 |
|
権限分析ポリシーを記録されたデータとともに削除します。 |
|
指定された権限分析ポリシーに対して権限分析の記録を開始します。 |
|
権限分析のデータ・ディクショナリ・ビューにデータを移入します。 |
128.5.1 CAPTURE_DEPENDENCY_PRIVSプロシージャ
このプロシージャは、定義者権限および実行者権限PL/SQLプログラム・ユニットで比較のために使用される権限を取得します。
構文
DBMS_PRIVILEGE_CAPTURE.CAPTURE_DEPENDENCY_PRIVS ();
パラメータ
このプロシージャのパラメータはありません。
使用上のノート
DBMS_PRIVILEGE_CAPTURE.CAPTURE_DEPENDENCY_PRIVS
プロシージャの再実行のたびに、権限分析のデータ・ディクショナリ・ビューから既存のレコードを削除します。その後、既存のPL/SQLプログラム・ユニットに基づいてレコードを再取得します。
128.5.2 CREATE_CAPTUREプロシージャ
このプロシージャは、権限の使用状況を分析するための条件を指定するポリシーを作成します。また、オプションで、権限の使用状況の分析対象となるロールと、その分析に使用する条件も指定します。
構文
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE ( name IN VARCHAR2, description IN VARCHAR2 DEFAULT NULL, type IN NUMBER DEFAULT G_DATABASE, roles IN ROLE_NAME_LIST DEFAULT ROLE_NAME_LIST(), condition IN VARCHAR2 DEFAULT NULL);
パラメータ
表128-3 CREATE_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
権限分析ポリシーの名前です。最大30文字の文字列です。 |
|
ポリシーの説明(最大1024文字)です。 |
|
権限分析ポリシーのタイプです。使用可能な値は次のとおりです。
|
|
権限が分析対象であるロール。 |
|
最大4000文字を含むPL/SQLブール式。 |
使用上のノート
-
CREATE_CAPTURE
プロシージャにロールベースの分析を使用するときは、指定されたロールに権限が間接的に付与された場合でも権限の使用状況が分析されます。たとえば、ロールR2にロールR1が含まれ、R1に権限P1が含まれるとします。権限ポリシーにロールR2のみが含まれる場合でも、P1権限のすべての使用状況が分析されます。これは、P1が間接的にロールR2の一部になっているためです。
-
condition
パラメータを使用する場合、PL/SQL式には次の構文を使用します。condition::= predicate | (predicate1) AND (predicate2) | (predicate1) OR (predicate2)
内容は次のとおりです。
predicate::= sys_context(namespace, attribute) relop constant_value | sys_context(namespace, attribute) between constant_value and constant_value | sys_context(namespace, attribute) in {constant_value (,constant_value)* }
内容は次のとおりです。
relop::= = | < | <= | > | >= | <>
-
権限分析ポリシーでは、
SYS
ユーザー権限の使用状況は分析できません。
128.5.3 DELETE_RUNプロシージャ
このプロシージャは、権限分析の取得実行を削除します。
構文
DBMS_PRIVILEGE_CAPTURE.DELETE_RUN ( name IN VARCHAR2, run_name IN VARCHAR2);
パラメータ
表128-4 DELETE_RUNプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
取得実行を関連付ける権限分析ポリシーの名前。 |
|
取得実行の名前。 |
使用上のノート
-
DBA_PRIV_CAPTURES
データ・ディクショナリ・ビューを問い合せて、既存の権限取得ポリシーの名前を確認できます。 -
取得実行を削除するもう1つの方法は、取得実行が関連付けられたポリシーを削除することです。ポリシーを削除すると、関連付けられた取得実行が自動的に削除されます。
-
取得実行を削除すると、権限取得のデータ・ディクショナリ・ビューからアクセスできなくなります。
128.5.4 DISABLE_CAPTUREプロシージャ
このプロシージャは、指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。ポリシーが無効化されている場合は、ポリシーの条件を満たす権限の使用状況が記録されなくなります。
構文
DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ( name IN VARCHAR2);
パラメータ
表128-5 DISABLE_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
無効にする権限分析ポリシーの名前です。 |
使用上のノート
権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。
128.5.5 DROP_CAPTUREプロシージャ
このプロシージャは、権限分析ポリシーを記録されたデータとともに削除します。ポリシーが削除されている場合は、以前に記録された権限の使用状況のデータでそのポリシーに関連付けられたものがすべて削除されます。
構文
DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE ( name IN VARCHAR2);
パラメータ
表128-6 DROP_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除する権限分析ポリシーの名前です。 |
使用上のノート
-
権限分析ポリシーを削除する前に、そのポリシーを無効にする必要があります。有効なポリシーは削除できません。
-
ポリシーに関連付けられている取得実行がある場合、ポリシーを削除するとそれらの取得実行は自動的に削除されます。
128.5.6 ENABLE_CAPTUREプロシージャ
このプロシージャは、指定された権限分析ポリシーに対して権限分析の記録を開始し、オプションで、そのポリシーの取得実行を提供します。ポリシーが有効化されると、ポリシーの条件を満たすすべての権限の使用状況が記録されます。
構文
DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE ( name IN VARCHAR2, run_name IN VARCHAR2 DEFAULT NULL);
パラメータ
表128-7 ENABLE_CAPTUREプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
有効にする権限分析ポリシーの名前。 |
|
このポリシーに関連付ける取得実行の名前(128文字未満)。特殊文字は二重引用符で囲みます。 |
使用上のノート
次の使用上のノートが適用されます。
-
権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。権限分析ポリシーを有効にするには、
ENABLE_CAPTURE
を実行する必要があります。 -
一度に有効にできる権限分析ポリシーは1つのみです。ただし、
G_DATABASE
タイプにおけるデータベース全体の権限分析は、G_DATABASE
以外のもう1つの権限分析とともに有効化できます。 -
同じ実行を複数回有効にすることはできません。たとえば、
run_01
の取得を再度有効にする場合、run_01
を再度使用することはできません。かわりに、新しい実行を作成します。
128.5.7 GENERATE_RESULTプロシージャ
このプロシージャは、権限分析のデータ・ディクショナリ・ビューにデータを移入します。
参照:
権限分析ビューの詳細は、『Oracle® Databaseセキュリティ・ガイド』を参照してください。
構文
DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT ( name IN VARCHAR2, run_name IN VARCHAR2 DEFAULT NULL, DEPENDENCY IN BOOLEAN DEFAULT NULL);
パラメータ
表128-8 GENERATE_RESULTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
ビューにデータを移入する権限分析ポリシーの名前。 |
|
権限分析ポリシーに関連付ける取得実行の名前。このパラメータを省略した場合、作成されたすべての実行のレコードが分析されます。 |
|
|
使用上のノート
権限分析ポリシーの権限分析ビューにデータを移入する前に、そのポリシーを無効にする必要があります。有効な権限分析ポリシーに対しては、このサブプログラムを起動できません。