5 ルール・セットの構成

ルール・セットにより1つ以上のルールがグループ化され、ルールによりユーザーがオブジェクトでアクションを実行できるかどうかが決定されます。

ルール・セットの概要

ルール・セットとは、1つ以上のルールの集合のことです。

ルール・セットは、レルム認可、ファクタ割当て、コマンド・ルールまたはセキュア・アプリケーション・ロールに関連付けることができます。

ルール・セットは、それに含まれる各ルールと評価タイプ(「すべてのTrue」または「いずれかTrue」)に基づいて、trueまたはfalseに評価されます。ルール・セット内のルールは、TrueまたはFalseと評価されるPL/SQL式です。ルールを作成し、そのルールを複数のルール・セットに追加できます。

ルール・セットを使用して次のアクティビティを実行できます。

  • レルム認可がアクティブになる条件の定義(レルム認可をさらに制限することが目的)

  • コマンド・ルールを許可する時期の定義

  • セキュア・アプリケーション・ロールの有効化

  • ファクタのアイデンティティを割り当てる時期の定義

ルール・セットを作成すると、レルムの認証、コマンド・ルール、ファクタまたはセキュア・アプリケーション・ロールの構成時に選択できるようになります。

マルチテナント環境におけるルール・セットとルール

PDBおよびアプリケーション・ルートでは、ルール・セットとそれに関連付けるルールを作成できます。

共通レルムでは、関連付けられたレルムまたはコマンド・ルールをDatabase Vaultで評価するときに、共通ルール・セットを使用する必要があります。共通ルール・セットとそのルールは、アプリケーション・ルートでのみ作成できます。共通ルール・セットは、作成後、共通ルール・セットを作成したルートに関連付けられているすべてのコンテナ内に存在します。共通ルール・セットは、共通ルールのみを含むことができます。

共通ルール・セットとそのルールを構成するには、DV_OWNERまたはDV_ADMINロールが共通で付与されている必要があります。

リリース12.2より前のリリースのデフォルト・ルールおよびデフォルト・ルール・セット

以前のリリースで提供されていた多数のデフォルト・ルールおよびデフォルト・ルール・セットは、サポートされなくなりましたが、現在のOracle Databaseインストールで使用されている場合があります。

Oracle Databaseリリース12.2より前のリリースのデフォルト・ルールおよびデフォルト・ルール・セットを使用している場合、Oracle Databaseでは、それらは、独自の用途のためにカスタマイズしてあった場合にはアップグレード中に削除されません。これらのルールおよびルール・セットをカスタマイズした場合、またはこれらの古いデフォルト・ルール・セットを使用する場合は、ALTER SYSTEMおよびALTER SESSIONコマンド・ルールを使用することで、カスタマイズしたそれらのルールおよびルール・セットを再実装してから、古いルールおよびルール・セットを無効化し削除することをお薦めします。これらのルールおよびルール・セットをカスタマイズしていない場合、または使用しない場合は、以降のデフォルトのコマンド・ルールで同じ機能を使用できるため、以前のルールおよびルール・セットを削除する必要があります。

ノート:

影響を受ける可能性があるルールおよびルール・セットの完全なリストは、リリース12.2バージョンのOracle Database Vault管理者ガイドを参照してください。

デフォルトのルール・セット

Oracle Database Vaultには、一連のデフォルト・ルール・セットが用意されていて、ニーズにあわせてカスタマイズできます。

DBA_DV_RULE_SETデータ・ディクショナリ・ビューを問い合せることで、ルール・セットをすべて示すリストを確認できます。ルール・セットに関連付けられているルールを確認するには、DBA_DV_RULE_SET_RULEデータ・ディクショナリ・ビューを問い合せます。

デフォルトのルール・セットは次のとおりです。

  • 「データファイル・ヘッダーのダンプを許可」では、データ・ブロックのダンプを防止します。

  • 「システム変更用のファイングレイン・コントロールを許可」では、ユーザーがALTER SYSTEM SQL文を使用して初期化パラメータを設定できるようにするかどうかを制御できます。

  • 「セッションを許可」では、データベースにセッションを作成できるようにするかどうかを制御します。このルール・セットを使用すると、CONNECTコマンド・ルールを使用してデータベース・ログインを制御するルールを追加できます。CONNECTコマンド・ルールは、SYSDBAアクセスを制御する場合や、そのアクセスの使用が必要なプログラムに制限する場合に役立ちます。このルール・セットは移入されていません。

  • 「VPD管理権限を付与可能」では、GRANTおよびREVOKE文を使用して、Oracle Virtual Private DatabaseのDBMS_RLSパッケージのGRANT EXECUTE権限またはREVOKE EXECUTE権限を付与できるようにするかどうかを制御します。

  • 「アカウント/プロファイルを保守可能」では、CREATE USER文、DROP USER文、CREATE PROFILE文、ALTER PROFILE文またはDROP PROFILE文を使用して、ユーザー・アカウントとプロファイルを管理するロールを制御します。

  • 「自分のアカウントを保守可能」では、DV_ACCTMGRロールの設定されたアカウントに、ALTER USER文を使用したユーザー・アカウントとプロファイルの管理を許可します。また、ALTER USER文を使用した、個々のアカウントによる個人のパスワードの変更を許可します。DV_ACCTMGRロールの詳細は、「DV_ACCTMGR Database Vaultアカウント・マネージャ・ロール」を参照してください。

  • 「無効」は、セキュリティ構成(レルム、コマンド・ルール、ファクタ、セキュア・アプリケーション・ロールなど)を素早く無効化する際に便利なルール・セットです。

  • 「有効」は、システムの機能を素早く有効にする際に便利なルール・セットです。

  • 「AUDIT_SYS_OPERATIONSをFalseに設定することはできません」では、AUDIT_SYS_OPERATIONS初期化パラメータをFALSEに設定できないようにします。統合監査が有効になっている場合は、AUDIT_SYS_OPERATIONSパラメータの効果はありません。

  • 「OPTIMIZER_SECURE_VIEW_MERGINGをTrueに設定することはできません」では、OPTIMIZER_SECURE_VIEW_MERGING初期化パラメータをTRUEに設定できないようにします。

  • 「OS_ROLESをTrueに設定することはできません」では、OS_ROLES初期化パラメータをTRUEに設定できないようにします。

  • 「PLSQL_DEBUGをTrueに設定することはできません」では、PLSQL_DEBUG初期化パラメータをTRUEに設定できないようにします。

  • 「REMOTE_OS_ROLESをTrueに設定することはできません」では、REMOTE_OS_ROLES初期化パラメータをTRUEに設定できないようにします。

  • 「SQL92_SECURITYをFalseに設定することはできません」では、SQL92_SECURITYFALSEに設定できないようにします。

  • 「AUDIT_TRAILをオフにすることはできません」では、AUDIT_TRAIL初期化パラメータを無効にできないようにします。統合監査が有効になっている場合は、AUDIT_TRAILパラメータの効果はありません。

ルール・セットの作成

ルール・セットを作成するには、まずルール・セットを作成し、次にそのルール・セットを編集して1つ以上のルールに関連付けることができます。

作成したルール・セットに新しいルールを関連付ける、既存のルールを追加する、またはそのルール・セットからルールの関連付けを削除することが可能です。
  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. DBMS_MACADM.CREATE_RULE_SET文を実行して、ルール・セットを作成します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.CREATE_RULE_SET(
      rule_set_name    => 'Limit_DBA_Access', 
      description      => 'DBA access through predefined processes', 
      enabled          => DBMS_MACUTL.G_YES,
      eval_options     => DBMS_MACUTL.G_RULESET_EVAL_ANY,
      audit_options    => DBMS_MACUTL.G_RULESET_AUDIT_OFF,
      fail_options     => DBMS_MACUTL.G_RULESET_FAIL_SHOW,
      fail_message     => 'Evaluation failed',
      fail_code        => 20461,
      handler_options  => DBMS_MACUTL.G_RULESET_HANDLER_OFF, 
      handler          => '',
      is_static        => TRUE,
      scope            => DBMS_MACUTL.G_SCOPE_LOCAL);
    END;
    /

    詳細は、次のとおりです。

    • rule_set_nameは、大文字小文字の両方を使用して128文字以内で指定できます。空白を使用できます。この名前は動詞で始まり、ルール・セットが関連付けられるレルムまたはコマンド・ルールの名前で終わるようにすることをお薦めします。DBA_DV_RULE_SETデータ・ディクショナリ・ビューには、既存のルール・セットがリストされます。
    • descriptionは、大/小文字混在で1024文字まで指定できます。ルール・セットのビジネス要件を説明できます(例: Rule set to limit access to SQL*Plus)。
    • enabledでは、ルール・セットの有効化または無効化を制御します。ルール・セットはDBMS_MACUTL.G_YESで有効になり、DBMS_MACUTL.G_NOで無効になります。デフォルトは、DBMS_MACUTL.G_YESです。
    • eval_optionsは、ルール・セットに複数のルールを関連付ける予定がある場合に使用します。DBMS_MACUTL.G_RULESET_EVAL_ALLは、すべてのルールの評価がTRUEになる必要があることを意味します。DBMS_MACUTL.G_RULESET_EVAL_ANYは、少なくとも1つのルールの評価がTRUEになる必要があることを意味します。
    • audit_optionsは、従来の監査にのみ適用されます。統合監査環境には適用されません。Oracle Databaseリリース20c以降では、従来の監査は非推奨になりました。従来の監査にのみ適用され、統合監査環境には適用されないaudit_optionsではなく、統合監査ポリシーを作成するようにお薦めします。

      有効なaudit_optionsの設定は、DBMS_MACUTL.G_REALM_AUDIT_OFFDBMS_MACUTL.G_REALM_AUDIT_FAILDBMS_MACUTL.G_REALM_AUDIT_SUCCESS、およびDBMS_MACUTL.G_REALM_AUDIT_FAIL + DBMS_MACUTL.G_REALM_AUDIT_SUCCESSです。

    • fail_optionsでは、エラー・メッセージの表示(DBMS_MACUTL.G_RULESET_FAIL_SHOW)または非表示(DBMS_MACUTL.G_RULESET_FAIL_SILENT)を指定します。DBMS_MACUTL.G_RULESET_FAIL_SILENTを選択しておいて監査を有効にしていると、潜在的な侵入者のアクティビティを追跡できます。監査レポートにより侵入者のアクティビティを把握できますが、エラー・メッセージが表示されないため、侵入者は監査が行われていることに気付きません。
    • fail_messageは、大/小文字を使用した80文字以内のテキスト・エラー・メッセージです。fail_codeに指定した失敗コードに関連付けます。エラー・メッセージを指定しない場合、Oracle Database Vaultにより通常のエラー・メッセージが表示されます。
    • fail_codeは、範囲が-20000から-20999、または20000から20999の数値で、fail_messageパラメータに関連付けられています。この設定を省略すると、Oracle Database Vaultにより一般的なエラー・コードが表示されます。
    • handler_optionsにより、カスタム・イベント・ハンドラのロジックを定義するハンドラ・コードを含めることが可能になります。DBMS_MACUTL.G_RULESET_HANDLER_OFFでは、エラー処理を無効にします(default)。DBMS_MACUTL.G_RULESET_HANDLER_FAILでは、ルール・セット失敗時にハンドラをコールします。また、DBMS_MACUTL.G_RULESET_HANDLER_SUCCESSでは、ルール・セット成功時にハンドラをコールします。
    • handlerは、カスタム・イベント・ハンドラのロジックを定義するPL/SQLファンクションまたはプロシージャです。カスタム・イベント・メソッドを作成して、標準のOracle Database Vaultルール・セットの監査機能以外の特別な処理を実行できます。たとえば、イベント・ハンドラを使用して、ワークフロー・プロセスの開始や外部システムへのイベント情報の送信を実行できます。

      完全修飾プロシージャとして式を記述します(schema.procedure_nameなど)。その他の形式のSQL文を含めないでください。アプリケーション・パッケージ・プロシージャまたはスタンドアロン・プロシージャを使用している場合は、オブジェクトに対するEXECUTE権限を持つDVSYSを指定する必要があります。プロシージャ・シグネチャは、次の2つの書式のいずれかになります。

      • PROCEDURE my_ruleset_handler(p_ruleset_name IN VARCHAR2, p_ruleset_rules IN BOOLEAN): ハンドラ処理にルール・セットの名前およびその戻り値が必要な場合に、この書式を使用します。

      • PROCEDURE my_ruleset_handler: ハンドラ処理にルール・セットの名前と戻り値が不要な場合に、この書式を使用します。

      起動者権限プロシージャをイベント・ハンドラとして使用できないことに注意してください。使用した場合、ルール・セットの評価が予想外に失敗することがあります。定義者権限プロシージャのみをイベント・ハンドラとして使用してください。

      次の構文を使用します。

      myschema.my_ruleset_handler
      
    • is_staticでは、アクセスされるルール・セットの評価の頻度を決定します。TRUEにるすと、ルール・セットはユーザー・セッション時に1回評価されます。その後、値は再利用されます。FALSEにすると、ルール・セットは呼出しごとに評価されます。デフォルトは、FALSEです。
    • scopeでは、ルール・セットがPDB (DBMS_MACUTL.G_SCOPE_LOCAL)とアプリケーション・ルート(DBMS_MACUTL.G_SCOPE_COMMON)のどちらに作成されるかを定義します。アプリケーション・ルートで共通ルール・セットを作成し、関連付けられたPDBにそれを表示できるようにする場合は、アプリケーションを同期させる必要があります。次に例を示します。
      ALTER PLUGGABLE DATABASE APPLICATION saas_sales_app SYNC;

    この段階で、ルール・セットの作成は完了です。

  3. 必要に応じて、ルール・セットに1つ以上のルールを追加します。
    DBA_DV_RULEデータ・ディクショナリ・ビューには、既存のルールがリストされます。
    次に例を示します。
    BEGIN
     DBMS_MACADM.ADD_RULE_TO_RULE_SET(
      rule_set_name => 'Limit_DBA_Access',
      rule_name     => 'Is Database Administrator',
      rule_order    => 1,
      enabled       => DBMS_MACUTL.G_YES);
    END;
    /

ルール・セットに追加するルールの作成

ルールは制御する動作を定義し、ルール・セットは名前付きのルールの集合です。

ルールの作成について

ルールは、ルール・セットの作成プロセス中またはそれに関係なく作成できます。

ルールを作成したら、ルール・セットを1つ以上の追加ルールに関連付けられます。

ルール・セットの作成プロセス中に新しいルールを作成する場合、そのルールは、現在のルール・セットに自動で追加されます。既存のルールをルール・セットに追加することもできます。また、ルール・セットにルールを追加せずに、今後作成するルール・セットのテンプレートとして使用することもできます。

ルールをルール・セットに必要なだけ追加できますが、適切な設計とパフォーマンスの向上のために、ルール・セットを簡単にしておく必要があります。その他のアドバイスについては、「ルール・セットの設計のガイドライン」を参照してください。

ルール・セットの評価は、評価オプション(「すべてTrue」または「いずれかTrue」)を使用するルールの評価に依存します。ルール・セットが無効である場合、Oracle Database Vaultは、ルールを評価せずにルール・セットをTrueに評価します。

関連トピック

デフォルト・ルール

デフォルト・ルールとは、アクションがtrueとfalseのいずれに評価されるかのチェックなど、一般的に使用される動作が含まれるルールです。

DBA_DV_RULEデータ・ディクショナリ・ビューを問い合せることで、ルールをすべて示すリストを確認できます。表5-1に、現在のデフォルトOracle Databaseルールを示します。

表5-1 Oracle Database Vaultの現在のデフォルト・ルール

ルール 説明

宛先パラメータが許可されているか

現在のSQL文がダンプのサイズ制限に関連する初期化パラメータを変更しようとするかどうかを確認します。

ダンプ・パラメータが許可されているか

現在のSQL文がダンプの宛先に関連する初期化パラメータを変更しようとするかどうかを確認します。

False

FALSEに評価されます

Alter DVSYSが許可されているか

ノート: このデフォルト・ルールは非推奨になりました。

ログインしたユーザーが、他のユーザーに対するALTER USER文を正常に実行できるかどうかを確認します。

データベース管理者であるか

ユーザーにDBAロールが付与されているかどうかを確認します。

Drop Userが許可されているか

ログインしたユーザーがユーザーを削除できるかどうかを確認します。

ブロックのダンプが許可されているか

ブロックのダンプが許可されているかどうかを確認します。

月の最初の日であるか

指定した日が月の最初の日であるかどうかを確認します。

ラベル管理者であるか

ユーザーにLBAC_DBAロールが付与されているかどうかを確認します。

月の最後の日であるか

指定した日が月の最後の日であるかどうかを確認します。

パラメータ値がFalseか

指定したパラメータ値がFALSEに設定されているかどうかを確認します。

パラメータ値がNoneか

指定したパラメータ値がNONEに設定されているかどうかを確認します。

パラメータ値がFalseでないか

指定したパラメータ値が<> FALSEに設定されているかどうかを確認します。

パラメータ値がNoneでないか

指定したパラメータ値が<> NONEに設定されているかどうかを確認します。

パラメータ値がOffでないか

指定したパラメータ値が<> OFFに設定されているかどうかを確認します。

パラメータ値がOnでないか

指定したパラメータ値が<> ONに設定されているかどうかを確認します。

パラメータ値がTrueでないか

指定したパラメータ値が<> TRUEに設定されているかどうかを確認します。

パラメータ値がOffか

指定したパラメータ値がOFFに設定されているかどうかを確認します。

パラメータ値がOnか

指定したパラメータ値がONに設定されているかどうかを確認します。

パラメータ値がTrueか

指定したパラメータ値がTRUEに設定されているかどうかを確認します。

SYSまたはSYSTEMユーザーであるか

ユーザーがSYSまたはSYSTEMであるかどうかを確認します。

セキュリティ管理者であるか

ユーザーにDV_ADMINロールが付与されているかどうかを確認します。

セキュリティ所有者であるか

ユーザーにDV_OWNERロールが付与されているかどうかを確認します。

ユーザー・マネージャであるか

ユーザーにDV_ACCTMGRロールが付与されているかどうかを確認します。

ログイン・ユーザーがオブジェクト・ユーザーである

ログインしたユーザーが、現在のSQL文で変更されようとしているユーザーと同じであるかどうかを確認します。

EXEMPT ACCESS POLICYロールがない

ユーザーにEXEMPT ACCESS POLICYロールが付与されているかどうか、またはユーザーSYSであるかどうかを確認します。

エクスポート・セッションではない

廃止

True

TRUEに評価されます

新規ルールの作成

新しいルールを作成することも、デフォルトのOracle Database Vaultルールを使用することもできます。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. DBMS_MACADM.CREATE_RULE文を実行して、ルールを作成します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.CREATE_RULE(
      rule_name  => 'Is SYSADM Administrator', 
      rule_expr  =>'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SYSADM''',
      scope      => DBMS_MACUTL.G_SCOPE_LOCAL);
    END;
    /

    詳細は、次のとおりです。

    • rule_nameは、大/小文字混在の90文字以内の文字です。空白を使用できます。DBA_DV_RULEデータ・ディクショナリ・ビューには、既存のルールがリストされます。DBA_DV_RULE_SET_RULEには、ルールに関連付けられているルール・セットがリストされます。名前は動詞で始まり、ルールの目的で終わることをお薦めします。たとえば、Prevent non-admin access to SQL*Plusのようにします。ルールにはdescriptionパラメータがないため、名前は明示的なものにしてください(ただし、90文字を超えないこと)。
    • rule_exprは、PL/SQLブール式です。式に引用符が含まれる場合、二重引用符は使用しないでください。その場合は、2つの一重引用符を使用します。式全体を一重引用符で囲んでください。次に例を示します。
      'TO_CHAR(SYSDATE,''HH24'') = ''12'''

      次の要件を満たした、PL/SQL式を入力します。

      • SQLのWHERE句で有効です。

      • 次に示すような、独立していて有効なPL/SQLブール式です。

        TO_CHAR(SYSDATE,'HH24') = '12'
        
      • ブール(TRUEまたはFALSE)値と評価される必要があります。

      • 1024文字以内である必要があります。

      • 現行のデータベース・インスタンスから既存のコンパイルされたPL/SQLファンクションを含めることができます。完全修飾ファンクションであることを確認してください(schema. function_name)。その他の形式のSQL文を含めないでください。

        起動者権限プロシージャとルール式を一緒に使用できないことに注意してください。一緒に使用すると、ルール式が予想外に失敗します。定義者権限プロシージャのみルール式と組み合せて使用できます。

        アプリケーション・パッケージ・ファンクションまたはスタンドアロン・ファンクションを使用する場合は、ファンクションのEXECUTE権限のあるDVSYSアカウントを付与する必要があります。これを行うことで、新しいルールを追加するときに発生するエラーが少なくなります。

      • ルールが機能することを確認してください。SQL*Plusで次の文を実行すると、構文をテストできます。

        SELECT rule_expression FROM DUAL;
        

        たとえば、次のルール式を作成したとします。

        SYS_CONTEXT('USERENV','SESSION_USER') != 'TSMITH'
        

        この式は、次のようにテストできます。

        SELECT SYS_CONTEXT('USERENV','SESSION_USER') FROM DUAL;
        

        以前にリストしたブール例の場合、次のように入力します。

        SELECT TO_CHAR(SYSDATE,'HH24')FROM DUAL;
        
    • scopeでは、ルールがPDB (DBMS_MACUTL.G_SCOPE_LOCAL)とアプリケーション・ルート(DBMS_MACUTL.G_SCOPE_COMMON)のどちらに作成されるかを定義します。
ルールの作成後は、ルール・セットに追加できます。

既存のルールのルール・セットへの追加

1つ以上のルールを作成すると、そのルールをルール・セットに追加できます。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password
  2. DBA_DV_RULEデータ・ディクショナリ・ビューを問い合せて、ルール・セットに追加するルールを探します。
    SELECT NAME FROM DBA_DV_RULE 
    ORDER BY NAME;
  3. DBA_DV_RULE_SETデータ・ディクショナリ・ビューを問い合せて、ルールを追加するルール・セットを探します。
    SELECT RULE_SET_NAME 
    FROM DBA_DV_RULE_SET 
    ORDER BY RULE_SET_NAME;

    DBA_DV_RULE_SET_RULEデータ・ディクショナリ・ビューを問い合せると、すでにルールがルール・セットに関連付けられているかどうかを調べることもできます。

  4. DBMS_MACADM.ADD_RULE_TO_RULE_SETを実行して、ルールをルール・セットに追加します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.ADD_RULE_TO_RULE_SET(
      rule_set_name => 'Limit_DBA_Access', 
      rule_name     => 'Is SYSADM Administrator',
      rule_order    => 1,
      enabled       => DBMS_MACUTL.G_NO,
      scope         => );
    END;
    /

    詳細は、次のとおりです。

    • rule_orderは、このリリースには適用されません。ただし、ADD_RULE_TO_RULE_SETプロシージャが正常に動作するには、値が含まれている必要があります。1を入力します。
    • enabledでは、ルール・セットの評価時にルールのチェックが必要かどうかを決定します。DBMS_MACUTL.G_YES (デフォルト)。ルール・セットの評価時にルールをチェックできるようにします。DBMS_MACUTL.G_NOは、ルール・セットの評価時にルールをチェックできないようにします。
    • scopeでは、ルールがPDB (DBMS_MACUTL.G_SCOPE_LOCAL)とアプリケーション・ルート(DBMS_MACUTL.G_SCOPE_COMMON)のどちらに作成されるかを定義します。

ルール・セットの変更

DBMS_MACADM.UPDATE_RULEプロシージャを使用すると、ルールの定義を変更できます。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. ルールを検索して、その定義を確認します。
    次に例を示します。
    SELECT * FROM DBA_DV_RULE ORDER BY NAME; 
  3. DBMS_MACADM.UPDATE_RULE文を実行します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.UPDATE_RULE(
      rule_name  => 'Check UPDATE operations', 
      rule_expr  =>'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''SYSADM'' AND
                   (
                     UPPER(SYS_CONTEXT(''USERENV'',''MODULE'')) LIKE ''APPSRVR%'' OR
                     UPPER(SYS_CONTEXT(''USERENV'',''MODULE'')) LIKE ''DBAPP%'' )'
                   );
    END;
    /

ルール・セットからのルールの削除

ルール・セットからのルールの削除前に、そのルールへの参照をルール・セットから削除する必要があります。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. DBA_DV_RULEデータ・ディクショナリ・ビューを問い合せて、ルール・セットから削除するルールを見つけます。
    SELECT NAME FROM DBA_DV_RULE 
    ORDER BY NAME;
  3. DBA_DV_RULE_SET_RULEデータ・ディクショナリ・ビューを問い合せて、ルールに関連付けられているルール・セットを見つけます。
    次に例を示します。
    SELECT RULE_SET_NAME 
    FROM DBA_DV_RULE_SET_RULE 
    WHERE RULE_NAME = 'Is SYSADM Administrator';
  4. DBMS_MACADM.DELETE_RULE_FROM_RULE_SETプロシージャを実行して、ルール・セットからルールを削除します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.DELETE_RULE_FROM_RULE_SET(
      rule_set_name => 'Limit_DBA_Access', 
      rule_name     => 'Is SYSADM Administrator');
    END;
    /

ルール・セットからルールを削除しても、そのルールはまだ存在します。必要に応じて、そのルールをその他のルール・セットに関連付けることができます。DBMS_MACADM.DELETE_RULEを実行して、ルールを削除することもできます。次に例を示します。

EXEC DBMS_MACADM.DELETE_RULE('Is SYSADM Administrator');

ルール・セットの変更

DBMS_MACADM.UPDATE_RULE_SETプロシージャを使用すると、ルール・セットの定義を変更できます。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. ルール・セットを検索して、その定義を確認します。
    次に例を示します。
    SELECT * FROM DBA_DV_RULE_SET ORDER BY RULE_SET_NAME; 
  3. DBMS_MACADM.UPDATE_RULE_SET文を実行します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.UPDATE_RULE_SET(
      rule_set_name    => 'Limit_DBA_Access', 
      description      => 'DBA access through predefined processes', 
      enabled          => DBMS_MACUTL.G_NO,
      eval_options     => DBMS_MACUTL.G_RULESET_EVAL_ANY,
      audit_options    => DBMS_MACUTL.G_RULESET_AUDIT_FAIL,
      fail_options     => DBMS_MACUTL.G_RULESET_FAIL_SHOW,
      fail_message     => 'Access denied!',
      fail_code        => 20900,
      handler_options  => DBMS_MACUTL.G_RULESET_HANDLER_OFF, 
      handler          => '',
      is_static        =  TRUE);
    END;
    /

ルール・セットの削除

ルール・セットの削除前に、ルール・セットからすべてのルールを削除する必要があります。

  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとして、PDBまたはアプリケーション・ルートに接続します。
    次に例を示します。
    CONNECT c##sec_admin_owen@pdb_name
    Enter password: password

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. DBA_DV_RULE_SETデータ・ディクショナリ・ビューを問い合せて、削除するルール・セットを見つけます。
    SELECT RULE_SET_NAME 
    FROM DBA_DV_RULE_SET 
    ORDER BY RULE_SET_NAME;
  3. DBA_DV_RULE_SET_RULEデータ・ディクショナリ・ビューを問い合せて、削除するルール・セットにルールが関連付けられていないことを確認します。
    次に例を示します。
    SELECT RULE_NAME 
    FROM DBA_DV_RULE_SET_RULE 
    WHERE RULE_SET_NAME = 'Limit_DBA_Access';
  4. 必要に応じて、DBMS_MACADM.DELETE_RULE_FROM_RULE_SETを実行して、ルール・セットに関連付けられているルールを削除します。
    次に例を示します。
    BEGIN
     DBMS_MACADM.DELETE_RULE_FROM_RULE_SET(
      rule_set_name => 'Limit_DBA_Access', 
      rule_name     => 'Is SYSADM Administrator');
    END;
    /
    
  5. DBMS_MACADM.DELETE_RULE_SETプロシージャを実行して、ルール・セットを削除します。
    次に例を示します。
    EXEC DBMS_MACADM.DELETE_RULE_SET('Limit_DBA_Access');

ルール・セットの動作

ルール・セットの動作を理解すると、より効果的なルール・セットを作成できます。

Oracle Database Vaultによるルールの評価方法

ルール・セット内のルールは、式の集合として評価されます。

DBMS_MACADM.CREATE_RULE_SETプロシージャまたはDBMS_MACADM.UPDATE_RULE_SETプロシージャのeval_optionsパラメータをDBMS_MACUTL.G_RULESET_EVAL_ALLに設定しているときに、評価がfalseになるルールがあると、その時点で評価が停止され、ルール・セット内の残りのルールの評価は試行されません。同様に、eval_optionsDBMS_MACUTL.G_RULESET_EVAL_ANYに設定しているときに、評価がtrueになるルールがあると、その時点で評価が停止されます。ルール・セットが無効にされている場合、Oracle Database Vaultは、ルールを評価することなくルール・セットをTrueと評価します。

ルール・セット内でのネストされたルール

ルール・セット内に1つ以上のルールをネストできます。

たとえば、次の2つのタスクを実行するネストされたルールIs Corporate Network During Maintenanceを作成するとします。

  • データベース・セッションが企業ネットワーク内から発生した場合のみ、表の変更を制限します。

  • 午後10時から午後10時59分の間にスケジュールされているシステム・メンテナンス・ウィンドウに、表の変更を制限します。

ルールの定義は次のようになります。

DVF.F$NETWORK = 'Corporate' AND TO_CHAR(SYSDATE,'HH24') between '22' AND '23'

1人のユーザーを除く全員に適用するルールの作成

1人のユーザー(たとえば特権ユーザー)を除く全員に適用するルールを作成することも可能です。

  • 特定のユーザーを除外するルールを作成するには、SYS_CONTEXTファンクションを使用します。

次に例を示します。

SYS_CONTEXT('USERENV','SESSION_USER') = 'SUPERADMIN_USER' OR additional_rule

現行ユーザーが特権ユーザーの場合、システムでは、additional_ruleは評価されず、ルールはTrueに評価されます。現行ユーザーが特権ユーザーでない場合、ルールの評価はadditional_ruleの評価によって決まります。

チュートリアル: 二人制整合性(デュアル・キー・セキュリティ)の構成

このチュートリアルでは、Oracle Database Vaultを使用して2人のユーザーの認可を制御する方法を示します。

このチュートリアルについて

このチュートリアルでは、二人制整合性(TPI)を定義するルール・セットを構成します。

この機能は、デュアル・キー・セキュリティ、デュアル・キー接続および二人制ルール・セキュリティとも呼ばれます。このタイプのセキュリティでは、アクションの認可に、1人ではなく2人のユーザーが必要です。

あるユーザーがタスクを開始するには、別のユーザーがそのユーザーに対するセーフティ・チェックを行います。二人制整合性では、危険を伴う可能性のあるアクションに対して、追加のセキュリティの層が用意されます。このタイプのシナリオは、データベース・パッチの更新などのタスクに使用されることが多く、このチュートリアルでもこのタスクを使用します。ユーザーpatch_userがデータベース・パッチのアップグレードを実行するにはログインが必要ですが、このユーザーがログインするにはマネージャpatch_bossがログインしている必要があります。patch_userがログイン可能かどうかを制御するファンクション、ルール、ルール・セットおよびコマンド・ルールを作成します。

ステップ1: このチュートリアル用のユーザーの作成

このチュートリアルでは、2人のユーザーpatch_bossおよびpatch_userを作成する必要があります。

  • patch_bossはスーパーバイザ・ロールとして機能します。patch_bossがログインしていない場合、patch_userユーザーはログインできません。

  • patch_userは、パッチの更新の実行が割り当てられているユーザーです。ただし、このチュートリアルでは、ユーザーはpatch_user実際にはパッチの更新を実行しません。ログインを試行するのみです。

ユーザーを作成するには、次のようにします。

  1. DV_ACCTMGRロールを付与されているユーザーとしてPDBにログインします。

    次に例を示します。

    sqlplus bea_dvacctmgr@pdb_name
    Enter password: password
    

    使用可能なPDBを確認するには、DBA_PDBSデータ・ディクショナリ・ビューのPDB_NAME列を問い合せます。現在のコンテナを確認するには、show con_nameコマンドを実行します。

  2. 次のユーザーを作成し、CREATE SESSION権限を付与します。
    GRANT CREATE SESSION TO patch_boss IDENTIFIED BY password;
    GRANT CREATE SESSION TO patch_user IDENTIFIED BY password;
    

    passwordを安全なパスワードに置き換えます。

  3. SYSDBA管理権限を持つユーザーSYSとして接続します。
    CONNECT SYS@pdb_name AS SYSDBA
    Enter password: password
    
  4. 次の権限をDV_OWNERユーザーまたはDV_ADMINユーザーに付与します。

    次に例を示します。

    GRANT CREATE PROCEDURE TO leo_dvowner;
    GRANT SELECT ON V_$SESSION TO leo_dvowner;
    

    V_$SESSION表はV$SESSION動的ビューの基となる表です。

実際のシナリオでは、DV_OWNERユーザーとしてもログインし、DV_PATCH_ADMINロールをpatch_userユーザーに付与します(patch_bossには付与しません)。しかし、このチュートリアルでは、実際にはデータベース・パッチの更新を実行しないため、このロールをpatch_userユーザーに付与する必要はありません。

ステップ2: ユーザーpatch_bossがログインしているかどうかをチェックするファンクションの作成

Database Vault設定の動作は、ファンクションによって決定されます。

作成する必要があるファンクションcheck_boss_logged_inは、ユーザーpatch_userがデータベース・インスタンスへのログインを試行したときに、V$SESSIONデータ・ディクショナリ・ビューに問い合せて、ユーザーpatch_bossがログインしているかどうかを確認します。
  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてPDBに接続します。

    次に例を示します。

    CONNECT leo_dvowner@pdb_name
    Enter password: password
    
  2. check_boss_logged_inファンクションを、次のように作成します。
    CREATE OR REPLACE FUNCTION check_boss_logged_in
    return varchar2
    authid definer as 
     
    v_session_number number := 0;
    v_allow varchar2(10)    := 'TRUE';
    v_deny varchar2(10)     := 'FALSE';
     
    BEGIN
      SELECT COUNT(*) INTO v_session_number
      FROM SYS.V_$SESSION
      WHERE USERNAME = 'PATCH_BOSS'; -- Enter the user name in capital letters.
     
     IF v_session_number > 0
      THEN RETURN v_allow;
     ELSE
      RETURN v_deny;
     END IF;
    END check_boss_logged_in;
    /
    
  3. check_boss_logged_inファンクションのEXECUTE権限をDVSYSスキーマに付与します。
    GRANT EXECUTE ON check_boss_logged_in to DVSYS;

ステップ3: ユーザー・アクセスを制御するためのルール、ルール・セットおよびコマンド・ルールの作成

次に、2つのルール、それらを追加するルール・セットおよびコマンド・ルールを作成します。

このルール・セットは、ユーザーpatch_userがデータベースにログインしようとしたときに、check_boss_logged_inファンクションをトリガーします。
  1. DV_OWNERまたはDV_ADMINロールを付与されているユーザーとしてPDBに接続します。

    次に例を示します。

    CONNECT leo_dvowner@pdb_name
    Enter password: password
    
  2. patch_userユーザーがデータベースにログインしていることをチェックするCheck if Boss Is Logged Inルールを作成します。定義内のleo_dvownerを、check_boss_logged_inファンクションを作成したDVOWNERユーザーまたはDV_ADMINユーザーの名前に置き換えます。

    check_boss_logged_inファンクションがTRUEを返した場合(つまりpatch_bossは別のセッションにログインしている)、patch_userはログインできます。

    BEGIN
      DBMS_MACADM.CREATE_RULE(
       rule_name => 'Check if Boss Is Logged In',
       rule_expr => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''PATCH_USER'' and leo_dvowner.check_boss_logged_in =  ''TRUE'' ');
    END;
    /
    

    ユーザー名PATCH_USERを大文字で入力します(SESSION_USERパラメータはユーザー名を大文字で保存します)。

  3. ログインしているユーザー(patch_user)がユーザーpatch_bossでないことを確認するAllow Connect for Other Database Usersルールを作成します。他のすべての有効なユーザーのログインの許可も行います。
    BEGIN
     DBMS_MACADM.CREATE_RULE(
      rule_name => 'Allow Connect for Other Database Users',
      rule_expr => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') != ''PATCH_USER''');
    END;
    /
    COMMIT;
    
  4. Dual Connect for Boss and Patchルール・セットを作成して、このルール・セットに2つのルールを追加します。
    BEGIN
        DBMS_MACADM.CREATE_RULE_SET(
         rule_set_name     => 'Dual Connect for Boss and Patch',
         description       => 'Checks if both boss and patch users are logged in.',
         enabled           => DBMS_MACUTL.G_YES,
         eval_options      => 2,
         audit_options     => DBMS_MACUTL.G_RULESET_AUDIT_OFF,
         fail_options      => DBMS_MACUTL.G_RULESET_FAIL_SILENT,
         fail_message      =>'',
         fail_code         => NULL,
         handler_options   => DBMS_MACUTL.G_RULESET_HANDLER_OFF,
         handler           => ''
         );
    END;
    /
    
    BEGIN
        DBMS_MACADM.ADD_RULE_TO_RULE_SET(
         rule_set_name     => 'Dual Connect for Boss and Patch',
         rule_name         => 'Check if Boss Is Logged In'
       );
    END;
    /
    
    BEGIN
        DBMS_MACADM.ADD_RULE_TO_RULE_SET(
         rule_set_name     => 'Dual Connect for Boss and Patch',
         rule_name         => 'Allow Connect for Other Database Users'
       );
    END;
    /
    
  5. 次のCONNECTコマンド・ルールを作成します。このルールでは、patch_bossがログインしている場合にのみ、ユーザーpatch_userにデータベースへの接続を許可します。
    BEGIN
       DBMS_MACADM.CREATE_COMMAND_RULE(
        command            => 'CONNECT',
        rule_set_name      => 'Dual Connect for Boss and Patch',
        object_owner       => '%',
        object_name        => '%',
        enabled            => DBMS_MACUTL.G_YES);
    END;
    /
    COMMIT;

ステップ4: ユーザーのアクセスのテスト

ルールを作成すると、テストする準備ができます。

  1. SQL*Plusを終了します。
    EXIT
    
  2. 次のように2つ目のシェルを作成します。
    xterm &
    
  3. 最初のシェルで、ユーザーpatch_userとしてログインします。
    sqlplus patch_user@pdb_name
    Enter password: password
    
    ERROR:
    ORA-47400: Command Rule violation for CONNECT on LOGON
    
    Enter user-name:
    

    patch_bossがログインするまで、ユーザーpatch_userはログインできません。(まだEnter user-nameプロンプトを試さないでください。)

  4. 2つ目のシェルで、ユーザーpatch_bossとしてログインします。
    sqlplus patch_boss@pdb_name
    Enter password: password
    Connected. 
    

    ユーザーpatch_bossはログインできます。

  5. 最初のシェルに戻って、ユーザーpatch_userとしてログインを再試行します。
    Enter user_name: patch_user
    Enter password: password
    

    ユーザーpatch_userは有効なユーザーとみなされ、ログインできます。

ステップ5: この例で使用したコンポーネントの削除

コンポーネントが不要になった場合、このチュートリアルで作成したコンポーネントを削除できます。

  1. ユーザーpatch_bossのセッションで、SQL*Plusを終了してシェルを閉じます。
    EXIT
    
  2. 最初のシェルで、ユーザーDV_ACCTMGRを接続し、作成したユーザーを削除します。
    CONNECT bea_dvacctmgr@pdb_name
    Enter password: password
    
    DROP USER patch_boss;
    DROP USER patch_user;
    
  3. SYSDBA管理権限を持つユーザーSYSとして接続して、DV_OWNERまたはDV_ADMINユーザーに付与した権限を取り消します。
    CONNECT SYS@pdb_name AS SYSDBA
    Enter password: password
    
    REVOKE CREATE PROCEDURE FROM leo_dvowner;
    REVOKE SELECT ON V_$SESSION FROM leo_dvowner;
    
  4. DV_OWNERまたはDV_ADMINユーザーとして接続し、ルール、ルール・セットおよびコマンド・ルールを示した順に削除します。
    CONNECT leo_dvowner@pdb_name
    Enter password: password
    
    DROP FUNCTION check_boss_logged_in;
    EXEC DBMS_MACADM.DELETE_COMMAND_RULE('CONNECT', '%', '%');
    EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('Dual Connect for Boss and Patch', 'Check if Boss Is Logged In');
    EXEC DBMS_MACADM.DELETE_RULE_FROM_RULE_SET('Dual Connect for Boss and Patch', 'Allow Connect for Other Database Users');
    EXEC DBMS_MACADM.DELETE_RULE('Check if Boss Is Logged In');
    EXEC DBMS_MACADM.DELETE_RULE('Allow Connect for Other Database Users');
    EXEC DBMS_MACADM.DELETE_RULE_SET('Dual Connect for Boss and Patch');
    COMMIT;

ルール・セット設計のガイドライン

Oracleでは、ルール・セット設計のガイドラインを提供しています。

  • ルールは、複数のルール・セット間で共有できます。これにより、再利用可能なルール式のライブラリを作成できます。個別で式の目的が1つであるルールを設計することをお薦めします。

  • 評価が静的な、すなわちユーザー・セッション中に1回のみ評価されるルール・セットを設計できます。あるいは、ルール・セットにアクセスするたびに評価できます。ルール・セットの評価が1回のみの場合、ルール・セットにアクセスするたびに、評価された値がユーザー・セッション全体で再利用されます。静的な評価の使用は、ルール・セットに複数回アクセスする必要があるが、ルール・セットが依存する条件はセッション中に変化しない場合に便利です。その例として、SELECTコマンド・ルールに、同じSELECT文が複数回実行されるときには、評価された値の再使用が可能であれば、SELECTの実行のたびにルール・セットを評価しないというルール・セットを関連付けます。

    ルール・セットの静的な評価を制御するには、DBMS_MACADM PL/SQLパッケージのCREATE_RULE_SETまたはUPDATE_RULE_SETプロシージャのis_staticパラメータを設定します。詳細は、「DBMS_MACADMのルール・セット・プロシージャ」を参照してください。

  • 再利用性とルール式で使用される値の信頼性を実現するために、ルール式にはOracle Database Vaultファクタを使用します。ファクタにはルール式で使用可能なコンテキスト情報が用意されています。

  • カスタム・イベント・ハンドラを使用して、Oracle Database Vaultセキュリティ・ポリシーを拡張し、エラー処理またはアラート通知のための外部システムを統合できます。このような統合を行うには、UTL_TCPUTL_HTTPUTL_MAILUTL_SMTPまたはDBMS_AQなどのOracleユーティリティ・パッケージを使用すると便利です。

  • 機密データを保護するレルムやコマンド・ルールにルール・セットを適用する前に、テスト・データベース、または機密データ以外のデータ用のテスト・レルムやコマンド・ルール上で、様々なアカウントやシナリオに関してルール・セットを十分にテストします。次のSQL文を使用して、ルール式を直接テストできます。

    SQL> SELECT SYSDATE from DUAL where rule expression
    
  • 単一のルールにルール式をネストできます。これにより、ルールのサブセットに論理的AND、およびその他のルールに論理的ORが必要になる複雑な状況を作成できます。たとえば、次の2つのタスクを実行するネストされたルールを作成するとします。

    • 表の変更は、データベース・セッションが企業ネットワーク内から開始された場合に限定します
    • 表の変更は、午後10時00分から午後10時59分の間にスケジュールされているシステム・メンテナンス・ウィンドウに制限します

    このシナリオのルール定義は、次のようになります。

    DVF.F$NETWORK = 'Corporate' AND TO_CHAR(SYSDATE,'HH24') between '22' AND '23'
  • 起動者権限プロシージャとルール式を組み合せて使用できません。定義者権限プロシージャのみルール式と組み合せて使用できます。

ルール・セットのパフォーマンスへの影響

ルールの数および複雑さにより、データベースのパフォーマンスが低下する場合があります。

ルール・セットにより、特定の操作の実行パフォーマンスが管理されます。たとえば、SELECT文を制御するルール・セットに大量のルールが含まれる場合は、パフォーマンスが大幅に低下する可能性があります。

多数のルールが必要なルール・セットがある場合、すべてのルールを単一のPL/SQLスタンドアロンまたはパッケージ・ファンクションに定義されているロジックに移動すると、パフォーマンスが向上します。ただし、ルールが他のルール・セットに使用されている場合、システムのパフォーマンスにはほとんど影響ありません。

可能であれば、静的な評価を使用するようにルール・セットを設定することを検討してください(関連付けられているコマンド・ルールの使用と互換性があると想定して)。詳細は、「ルール・セット設計のガイドライン」を参照してください。

システム・パフォーマンスを確認するには、Oracle Enterprise Manager(Oracle Databaseと一緒にデフォルトでインストールされるOracle Enterprise Manager Cloud Controlを含む)、自動ワークロード・リポジトリ(AWR)およびTKPROFなどのツールを実行します。

ルール・セットとルールに関連するレポートおよびデータ・ディクショナリ・ビュー

Oracle Database Vaultには、ルール・セットおよびそれらに含まれるルールの分析に役立つ、レポートとデータ・ディクショナリ・ビューが用意されています。

表5-2では、Oracle Database Vaultレポートを示します。

表5-2 ルール・セットに関連するレポート

レポート 説明

「ルール・セット構成の問題」レポート

ルールが定義されていない、または有効でないルール・セットが表示されます。

「セキュア・アプリケーション構成の問題」レポート

不完全または無効なルール・セットのあるセキュア・アプリケーション・ロールが表示されます。

「コマンド・ルール構成の問題」レポート

不完全または無効なルール・セットが表示されます。

表5-3に、既存のルールおよびルール・セットに関する情報を提供するデータ・ディクショナリ・ビューを示します。

表5-3 ルールおよびルール・セットに使用されるデータ・ディクショナリ・ビュー

データ・ディクショナリ・ビュー 説明

DBA_DV_RULE

定義済のルールが表示されます。

DBA_DV_RULE_SET

作成済のルール・セットが表示されます。

DBA_DV_RULE_SET_RULE

既存のルール・セットに関連付けられているルールが表示されます。