プライマリ・コンテンツに移動
Oracle® Database PL/SQLパッケージおよびタイプ・リファレンス
12c リリース1 (12.1)
B71281-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

115 DBMS_PRIVILEGE_CAPTURE

DBMS_PRIVILEGE_CAPTUREパッケージは、データベース権限分析へのインタフェースを提供します。


関連項目:

付与された権限の使用状況を分析する方法については、『Oracle Database Vault管理者ガイド』を参照してください。

この章では、次の項目について説明します。

DBMS_PRIVILEGE_CAPTUREの使用

概要

データベース権限分析では、システムの使用方法とユーザーに付与されたオブジェクト権限を記録するポリシーを作成できます。さらに、ユーザーが使用している権限と使用していない権限を判別できます。ここでは、使用されていないすべての権限を取り消すことで、ユーザーに付与された余分な権限の数を減らすことができます。

特定のタスクを実行するためにユーザーの所有が必要な権限を分析することによって、権限分析ポリシーによるユーザーの最小権限モデルが実現できるようになります。

セキュリティ・モデル

デフォルトでは、権限分析管理者ロールCAPTURE_ADMINに、DBMS_PRIVILEGE_CAPTUREパッケージのEXECUTE権限が付与されます。

データベースのインストール中、CAPTURE_ADMINロールがDBAロールWITH ADMIN OPTIONに付与されます。

定数

DBMS_PRIVILEGE_CAPTUREパッケージでは、次の表に示す定数が使用されます。

表115-1 DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTUREの「タイプ」パラメータの値

定数 タイプ 説明

G_DATABASE

1

NUMBER

SYSユーザーが使用する権限を除いたすべての権限の使用状況を分析します。

G_ROLE

2

NUMBER

指定されたロールの権限の使用状況を分析します。

G_CONTEXT

3

NUMBER

conditionパラメータがtrueに評価された場合の権限の使用状況を分析します。

G_ROLE_AND_CONTEXT

4

NUMBER

conditionパラメータがtrueに評価された場合に、指定されたロールの権限の使用状況を分析します。


次の例では、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;

DBMS_PRIVILEGE_CAPTUREサブプログラムの要約

表115-2 DBMS_PRIVILEGE_CAPTUREパッケージのサブプログラム

サブプログラム 説明

CREATE_CAPTUREプロシージャ


権限の使用状況を分析するための条件を指定するポリシーを作成します。

DISABLE_CAPTUREプロシージャ


指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。

DROP_CAPTUREプロシージャ


権限分析ポリシーを記録されたデータとともに削除します。

ENABLE_CAPTUREプロシージャ


指定された権限分析ポリシーに対して権限分析の記録を開始します。

GENERATE_RESULTプロシージャ


権限分析のデータ・ディクショナリ・ビューにデータを移入します。


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);

パラメータ

表115-3 CREATE_CAPTUREプロシージャのパラメータ

パラメータ 説明

name

権限分析ポリシーの名前です。最大30文字の文字列です。

description

ポリシーの説明(最大1024文字)です。

type

権限分析ポリシーのタイプです。有効な値は、次のとおりです。

  • G_DATABASE: SYSユーザーが使用する権限を除く、データベース内のすべての権限の使用状況を取得します。

  • G_ROLE: 指定したロールまたはロールのリストに権限が含まれる場合、その権限の使用状況を取得します。

  • G_CONTEXT: conditionパラメータに指定されたコンテキストがtrueと評価された場合、権限の使用状況を取得します。

  • G_ROLE_AND_CONTEXT: 指定したロールのリストに権限が含まれ、conditionパラメータに指定された条件がtrueの場合、その権限の使用状況を取得します。

roles

権限が分析対象であるロール。typeG_ROLEまたはG_ROLE_AND_CONTEXTである場合に必要です。

condition

最大4000文字を含むPL/SQLブール式。typeG_CONTEXTまたはG_ROLE_AND_CONTEXTである場合に必要です。ブール式に含めることができるのはSYS_CONTEXTのみであり、他のファンクションを含めることはできません。


使用上の注意

  • 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ユーザー権限の使用状況は分析できません。

DISABLE_CAPTUREプロシージャ

このプロシージャは、指定された権限分析ポリシーに対する権限の使用状況の記録を停止します。ポリシーが無効化されている場合は、ポリシーの条件を満たす権限の使用状況が記録されなくなります。

構文

DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (
   name        IN VARCHAR2);

パラメータ

表115-4 DISABLE_CAPTUREプロシージャのパラメータ

パラメータ 説明

name

無効にする権限分析ポリシーの名前です。


使用上の注意

権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。

DROP_CAPTUREプロシージャ

このプロシージャは、権限分析ポリシーを記録されたデータとともに削除します。ポリシーが削除されている場合は、以前に記録された権限の使用状況のデータでそのポリシーに関連付けられたものがすべて削除されます。

構文

DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE (
   name      IN VARCHAR2);

パラメータ

表115-5 DROP_CAPTUREプロシージャのパラメータ

パラメータ 説明

name

削除する権限分析ポリシーの名前です。


使用上の注意

権限分析ポリシーを削除する前に、そのポリシーを無効にする必要があります。有効なポリシーは削除できません。

ENABLE_CAPTUREプロシージャ

このプロシージャは、指定された権限分析ポリシーに対して権限分析の記録を開始します。ポリシーが有効化されると、ポリシーの条件を満たすすべての権限の使用状況が記録されます。

構文

DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (
   name      IN VARCHAR2);

パラメータ

表115-6 ENABLE_CAPTUREプロシージャのパラメータ

パラメータ 説明

name

有効にする権限分析ポリシーの名前。


使用上の注意

次の使用上の注意が適用されます。

  • 権限分析ポリシーが最初に作成されるときは、そのポリシーはデフォルトで無効になっています。権限分析ポリシーを有効にするには、ENABLE_CAPTUREを実行する必要があります。

  • 一度に有効にできる権限分析ポリシーは1つのみです。ただし、G_DATABASEタイプにおけるデータベース全体の権限分析は、G_DATABASE以外のもう1つの権限分析とともに有効化できます。

GENERATE_RESULTプロシージャ

このプロシージャは、権限分析のデータ・ディクショナリ・ビューにデータを移入します。


関連項目:

権限分析ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

構文

DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (
   name      IN VARCHAR2);

パラメータ

表115-7 GENERATE_RESULTプロシージャのパラメータ

パラメータ 説明

name

ビューにデータを移入する権限分析ポリシーの名前。


使用上の注意

権限分析ポリシーの権限分析ビューにデータを移入する前に、そのポリシーを無効にする必要があります。有効な権限分析ポリシーに対しては、このサブプログラムを起動できません。