DBMS_PRIVILEGE_CAPTUREパッケージは、データベース権限分析へのインタフェースを提供します。
|
関連項目: 付与された権限の使用状況を分析する方法については、『Oracle Database Vault管理者ガイド』を参照してください。 |
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
例
データベース権限分析では、システムの使用方法とユーザーに付与されたオブジェクト権限を記録するポリシーを作成できます。さらに、ユーザーが使用している権限と使用していない権限を判別できます。ここでは、使用されていないすべての権限を取り消すことで、ユーザーに付与された余分な権限の数を減らすことができます。
特定のタスクを実行するためにユーザーの所有が必要な権限を分析することによって、権限分析ポリシーによるユーザーの最小権限モデルが実現できるようになります。
デフォルトでは、権限分析管理者ロールCAPTURE_ADMINに、DBMS_PRIVILEGE_CAPTUREパッケージのEXECUTE権限が付与されます。
データベースのインストール中、CAPTURE_ADMINロールがDBAロールWITH ADMIN OPTIONに付与されます。
DBMS_PRIVILEGE_CAPTUREパッケージでは、次の表に示す定数が使用されます。
表115-1 DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTUREの「タイプ」パラメータの値
| 定数 | 値 | タイプ | 説明 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
指定されたロールの権限の使用状況を分析します。 |
|
|
3 |
|
|
|
|
4 |
|
|
次の例では、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;
表115-2 DBMS_PRIVILEGE_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);
パラメータ
表115-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ユーザー権限の使用状況は分析できません。
このプロシージャは、指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。ポリシーが無効化されている場合は、ポリシーの条件を満たす権限の使用状況が記録されなくなります。
このプロシージャは、権限分析ポリシーを記録されたデータとともに削除します。ポリシーが削除されている場合は、以前に記録された権限の使用状況のデータでそのポリシーに関連付けられたものがすべて削除されます。
このプロシージャは、指定された権限分析ポリシーに対して権限分析の記録を開始します。ポリシーが有効化されると、ポリシーの条件を満たすすべての権限の使用状況が記録されます。