A Oracle Database Vaultの監査

ポリシー構成への変更など、Oracle Database Vaultのアクティビティを監査できます。

A.1 Oracle Database Vaultでの監査について

Oracle Database Vaultのすべてのアクティビティは、Database Vault Administratorのアクティビティを含めて監査できます。

A.1.1 統合監査を使用したOracle Database Vaultの監査

Oracleでは、Oracle Database Vaultのすべての監査ポリシーを統合監査に移行することをお薦めします。

Oracle Database Vaultで新しい監査ポリシーを作成するには、統合監査を使用する必要があります。従来の監査は、Oracle Database 23cでは新しい監査設定ではサポートされなくなりましたが、現在存在する従来の監査設定は引き続き適用されます。

統合監査証跡では、Oracle Database Vaultの統合監査ポリシー・レコードおよび必須のOracle Database Vault監査が取得されます。

この機能に加えて、統合監査には、一般的に使用されるDatabase Vault監査のニーズに合わせて設計された次の2つの事前定義済ポリシーが用意されています。

  • ORA_DV_SCHEMA_CHANGES (以前の名称はORA_DV_AUDPOL)では、Oracle Database Vaultのスキーマ・オブジェクトDVSYSおよびLBACSYSを監査します。
  • ORA_DV_DEFAULT_PROTECTION (以前の名称はORA_DV_AUDPOL2)では、Oracle Database Vaultのデフォルト・レルムとコマンド・ルールを監査します。

新しいOracle Databaseインストールでは、ORA_DV_SCHEMA_CHANGESおよびORA_DV_DEFAULT_PROTECTIONポリシーがデフォルトで有効になっています。アップグレードされたOracleデータベースでは、これらのポリシーはデフォルトで有効になっていません。

統合監査を使用すると、Database Vault APIの監査機能(audit_optionsパラメータ)は無効になります。該当する監査レコードは、アーカイブしてからパージする必要があります。それ以降、統合監査ポリシーのSQL文によってDatabase Vault監査ポリシーを管理できます。

Database Vaultへの構成変更はすべて強制的に監査され、これらの監査レコードが統合監査証跡に書き込まれます。これには、権限のないユーザーがDatabase Vaultポリシーを変更しようとするアクションが含まれます。

Oracle Database Vaultの統合監査ポリシーの例の検索など、統合監査ポリシーの作成方法については、Oracle Databaseセキュリティ・ガイドを参照してください。

A.1.2 従来の監査を使用したOracle Database Vaultの監査

従来の監査はサポートされませんが、アップグレードされたデータベースでの従来の監査設定をいくつかの制限付きで使用できます。

従来の監査設定は、レルム、ルール・セットおよびファクタを作成または変更するときに、audit_optionsパラメータによって制御されます。監査は、ユーザーのアクションの成功(ポリシーによってユーザーがタスクを実現できたかどうか)、またはユーザーのアクションの失敗(ポリシー違反したかどうか)のいずれかを示します。Database Vault APIは、このパラメータを使用して監査レコードを収集し、これらの監査レコードをOracle Database Vaultのデータ・ディクショナリ・ビューおよびレポートに書き込みます。Oracle Databaseリリース23c以降では従来の監査はサポートされませんが、現在存在するOracle Database Vaultの従来の監査設定は引き続き適用されます。ただし、新しい従来の監査設定は作成できません。既存の従来の監査設定は削除できます。たとえば、以前のリリースでレルムを作成し、このレルムが従来の監査を使用しているとします。レルムの監査設定を更新する場合、audit_optionsパラメータで使用可能なオプションはOFFオプションのみです。レルムの監査を追跡するには、統合監査ポリシーを作成します。audit_optionsパラメータを更新しない場合、つまりレルムを更新しない場合、またはレルムを更新するときにNULLまたは現在の既存設定と同じaudit_options設定を使用する場合は、audit_optionsで定義された従来の監査設定はそのままになり、引き続き機能します。

新しいデータベースをインストールして、Oracle Database Vaultを使用するようにそのデータベースを構成すると、デフォルトで統合監査のみが使用されます。以前のリリースからアップグレードした場合、Database Vaultは、そのリリースで使用できた監査を使用します。

従来の監査のサポート終了の仕組みの詳細は、Oracle Databaseセキュリティ・ガイドを参照してください。

A.2 Oracle Database Vault固有の監査イベント

Oracle Database Vaultの従来の(非統合)監査イベントは、レルムで試行されたアクションが成功したかどうかなど、アクティビティを追跡します。

A.2.1 Oracle Database Vaultポリシーの監査イベント

Oracle Database Vaultでは、監査イベントを使用して、構成アクティビティを追跡します(従来の非統合監査を使用)。

これらのアクティビティは、次のとおりです。

  • レルムの監査。レルムの作成時に設定した監査オプションに基づいて、正常終了したアクションおよび失敗したアクションの両方を監査できます。ただし、スキーマ所有者によって実行されたアクションは監査できません。

  • ルール・セットの監査。ルール・セットの処理結果を監査します。正常終了した処理および失敗した処理の両方を監査できます。レルム認可は、ルール・セットを使用して管理できます。ルール・セットの処理結果を監査できます。ファクタ割当ておよびセキュア・アプリケーション・ロール監査は、ルール・セットを使用して管理できます。

  • ファクタの監査。正常終了したファクタ処理および失敗したファクタ処理の両方を監査できます。失敗したファクタ処理の場合、「取得エラー」、「取得がNULL」、「検証エラー」、「検証がFalse」、「信頼レベルがNULL」、「信頼レベルがゼロ未満」のすべてまたはいずれかについて監査できます。

  • Oracle Label Securityセッション初期化の失敗。Oracle Label Securityセッションの初期化に失敗したインスタンスを監査します。

  • Oracle Label Securityセッション・ラベル・アップグレード試行の失敗。Oracle Label Securityコンポーネントによって最大セッション・ラベルを超えるラベルの設定が妨げられているセッションのインスタンスを監査します。

A.2.2 Oracle Database Vault監査証跡レコードの書式

DVSYS.AUDIT_TRAIL$表には、従来の監査証跡レコードが格納されます。

Oracle Database 23c以降、従来の監査はサポートされなくなりました。ただし、現在実施されている従来の監査設定は引き続き適用されます。レルム、ルール・セットまたは以前のリリースのファクタのaudit_options設定は、引き続きDVSYS.AUDIT_TRAIL$表に書き込まれます。

DV_OWNERDV_ADMINDV_SECANALYSTまたはDV_MONITORロールが付与されているユーザーは、DVSYS.AUDIT_TRAIL$$表に直接問い合せることができます。

表A-1に、DVSYS.AUDIT_TRAIL$表の形式を示します。

表A-1 Oracle Database Vault監査証跡の書式

データ型 Null 説明

ID#

NUMBER

NOT NULL

監査レコードごとの数値識別子。

OS_USERNAME

VARCHAR2(255)

NULL

アクションが監査対象となったユーザーのオペレーティング・システムのログイン・ユーザー名。

USERNAME

VARCHAR2(30)

NULL

アクションが監査対象となったデータベース・ユーザーの名前。

USERHOST

VARCHAR2(128)

NULL

クライアント・コンピュータ名。

TERMINAL

VARCHAR2(255)

NULL

ユーザーの端末に対する識別子。

TIMESTAMP

DATE

NULL

監査証跡エントリの作成日時(ローカル・データベース・セッションのタイムゾーン)。

OWNER

VARCHAR2(30)

NULL

アクションの影響を受けるオブジェクトの作成者、常時DVSYS(DVSYSでオブジェクトが作成されるため)

OBJ_NAME

VARCHAR2(128)

NULL

アクションの影響を受けるオブジェクトの名前。想定値は次のとおりです。

  • ROLE$

  • REALM$

  • CODE$

  • FACTOR$

ACTION

NUMBER

NOT NULL

数値のアクション・タイプ・コード。アクション・タイプに対応する名前は、ACTION_NAME列に示されます。予想されるACTIONACTION_NAMEの値のリストについては、表24-3を参照してください。

ACTION_NAME

VARCHAR2(128)

NULL

ACTION列の数値コードに対応するアクション・タイプの名前

ACTION_OBJECT_ID

NUMBER

NULL

OBJ_NAMEに指定された表のレコードの一意の識別子。レルムの場合、このフィールドには、「失敗時に監査」監査オプションのあるすべてのレルムIDのカンマ区切りの値のリストが含まれます。

ACTION_OBJECT_NAME

VARCHAR2(128)

NULL

OBJ_NAMEに指定された表のレコードの一意の名前または固有のキー。レルムの場合、このフィールドには、「失敗時に監査」監査オプションのあるすべてのレルム名のカンマ区切りの値のリストが含まれます。

ACTION_COMMAND

VARCHAR2(4000)

NULL

実行された結果、監査イベントがトリガーされたコマンド・プロシージャのSQLテキスト

AUDIT_OPTION

VARCHAR2(4000)

NULL

結果として監査イベントがトリガーされたレコードに指定されたすべての監査オプションのラベル。たとえば、失敗またはNULLになったときに監査することになっているファクタ設定操作では、これら2つのオプションを指します。

RULE_SET_ID

NUMBER

NULL

実行された結果、監査イベントがトリガーされたルール・セットの一意の識別子。

RULE_SET_NAME

VARCHAR2(30)

NULL

実行された結果、監査イベントがトリガーされたルール・セットの一意の名前。

RULE_ID

NUMBER

NULL

使用されていません。

RULE_NAME

VARCHAR2(30)

NULL

使用されていません。

FACTOR_CONTEXT

VARCHAR2(4000)

NULL

監査イベントがトリガーされた時点での、現行セッションに対するすべてのファクタ識別子を含むXML文書。

COMMENT_TEXT

VARCHAR2(4000)

NULL

監査対象となった文の詳細を示す、監査証跡エントリについてのテキスト・コメント。

SESSIONID

NUMBER

NOT NULL

Oracleセッションごとの数値識別子。

ENTRYID

NUMBER

NOT NULL

ID#列の値と同じ。

STATEMENTID

NUMBER

NOT NULL

起動された結果、監査イベントが生成された文の数値識別子。ほとんどのOracle Database Vaultイベントの場合、このパラメータは空です。

RETURNCODE

NUMBER

NOT NULL

アクションによって生成されたOracleエラー・コード。起動された結果、監査イベントが生成された文またはプロシージャに対するエラー・コード。ほとんどのOracle Database Vaultイベントの場合、このパラメータは空です。

EXTENDED_TIMESTAMP

TIMESTAMP(6)WITH TIME ZONE

NULL

UTC(協定世界時)タイムゾーンの、監査証跡エントリの作成時のタイムスタンプ(エントリに対するユーザー・ログインのタイムスタンプ)。

PROXY_SESSIONID

NUMBER

NULL

エンタープライズ・ユーザーがプロキシ機構を介してログインした場合の、プロキシ・セッションのシリアル番号

GLOBAL_UID

VARCHAR2(32)

NULL

ユーザーがエンタープライズ・ユーザーとしてログインした場合の、ユーザーのグローバル・ユーザー識別子。

INSTANCE_NUMBER

NUMBER

NULL

INSTANCE_NUMBER初期化パラメータによって指定されるインスタンス番号

OS_PROCESS

VARCHAR2(16)

NULL

Oracleプロセスのオペレーティング・システム・プロセス識別子

CREATED_BY

VARCHAR2(30)

NULL

アクションが監査対象となったユーザーのデータベースのログイン・ユーザー名。

CREATE_DATE

DATE

NULL

SYSDATEの日付を基にした、アクションが発生した日付。

UPDATED_BY

VARCHAR2(30)

NULL

CREATED_BY列の値と同じ。

UPDATE_DATE

DATE

NULL

UPDATED_BY列の値と同じ。

A.3 Oracle Database Vault監査証跡のアーカイブおよびパージ

統合監査に移行していない場合、Oracle Database Vault監査証跡を定期的にアーカイブおよびパージする必要があります。

A.3.1 Oracle Database Vault監査証跡のアーカイブおよびパージについて

従来の非統合監査環境では、DVSYS.AUDIT_TRAIL$表をダンプ・ファイルにエクスポートすることで、Oracle Database Vault監査証跡をアーカイブできます。

監査証跡は、大きくなりすぎないように定期的にアーカイブし、パージする必要があります。

統合監査に移行するように選択する場合、移行の完了後、このプロシージャを使用してDatabase Vault監査証跡レコードをアーカイブおよびパージします。統合監査がレコードの収集を開始すると、新しいレコードは、UNIFIED_AUDIT_TRAILAUDSYS.DV$CONFIGURATION_AUDITおよびAUDSYS.DV$ENFORCEMENT_AUDITデータ・ディクショナリ・ビューの表示に使用できるようになります。

A.3.2 Oracle Database Vault監査証跡のアーカイブ

SQL*PlusおよびOracle Data Pumpを使用して、Oracle Database Vault監査証跡をルートまたはPDBからアーカイブできます。

次の手順を使用して、Oracle Database Vaultの従来の非統合監査証跡をアーカイブします。
  1. SYSDBA管理権限を持つユーザーSYSとして、ルートまたはPDBにログインします。
  2. アーカイブを実行するユーザーに適切な権限があることを確認します。
    たとえば:
    GRANT CREATE ANY DIRECTORY, EXP_FULL_DATABASE, UNLIMITED TABLESPACE TO psmith;
    
  3. DV_OWNERまたはDV_AUDIT_CLEANUPロールを付与されているユーザーとしてルートまたはPDBに接続します。
  4. アーカイブを実行するユーザーに適切な権限があることを確認します。
    GRANT CREATE ANY DIRECTORY, EXP_FULL_DATABASE, UNLIMITED TABLESPACE TO user_name;
    
  5. DV_OWNERまたはDV_AUDIT_CLEANUPロールを付与されているユーザーとしてルートまたはPDBに接続します。
  6. Oracle Database Vault監査証跡を、該当するスキーマの新しい表にアーカイブします。
    たとえば:
    CREATE TABLE psmith.dv_audit_trail nologging \
    AS SELECT * FROM DVSYS.AUDIT_TRAIL$;
    
  7. スキーマがレルムによってすでに保護されている場合、担当者またはエクスポート操作を実行するユーザーに、Database Vault環境でOracle Data Pumpを使用する適切な認可が付与されていることを確認します。
    たとえば、ユーザーpsmithが独自のスキーマに対してData Pump操作を実行できるように、このユーザーを認可するとします。
    EXEC DBMS_MACADM.AUTHORIZE_DATAPUMP_USER('PSMITH', 'PSMITH');
    
  8. Data PumpユーザーとしてルートまたはPDBに接続します。
  9. Database Vault監査証跡用のディレクトリを作成します。
    CREATE DIRECTORY dv_audit_dir AS 'dv_audit_trail_directory';
    
  10. SQL*Plusを終了します。
    EXIT
    
  11. Data Pumpを使用して、Database Vault監査証跡を、作成したディレクトリ・オブジェクトにエクスポートします。
    expdp psmith directory=dv_audit_dir tables=psmith.dv_audit_trail \
    dumpfile=dv_audit.dmp log=dv_audit_exp.log
    
  12. DV_OWNERロールを付与されているユーザーとしてルートまたはPDBに接続します。
  13. このようにしなかった場合、Database Vault監査証跡を含むスキーマの周辺にレルムを作成します。
    1. レルムを作成します。たとえば:
      BEGIN
       DBMS_MACADM.CREATE_REALM(
        realm_name    => 'DV Audit Trail Realm', 
        description   => 'Realm to protect the DV audit trail', 
        enabled       => DBMS_MACUTL.G_YES, 
        audit_options => DBMS_MACUTL.G_REALM_AUDIT_ON,
        realm_type    => 1);
      END; 
      /
      
    2. 監査証跡を含むスキーマをこのレルムに追加します。たとえば:
      BEGIN
       DBMS_MACADM.ADD_OBJECT_TO_REALM(
        realm_name   => 'DV Audit Trail Realm', 
        object_owner => 'psmith', 
        object_name  => '%', 
        object_type  => '%'); 
      END;
      /
      
    3. このレルムに対して信頼されるユーザーを認可します。
      BEGIN
       DBMS_MACADM.ADD_AUTH_TO_REALM(
        realm_name  => 'DV Audit Trail Realm', 
        grantee     => 'PSMITH',
        auth_options => DBMS_MACUTL.G_REALM_AUTH_OWNER);
      END;
      /

A.3.3 Oracle Database Vault監査証跡のパージ

ルートまたはPDBから、(従来の非統合監査の) Oracle Database Vault監査証跡をパージできます。

  1. DV_OWNERロールまたはDV_AUDIT_CLEANUPロールを付与されたユーザーとして、ルートまたはPDBにログインします。
  2. Database Vault監査証跡をパージします。
    DELETE FROM DVSYS.AUDIT_TRAIL$;

A.4 Oracle Database Vaultの事前定義の統合監査ポリシー

Oracle Databaseには、Oracle Database Vault用の2つの事前定義済統合監査ポリシー(ORA_DV_SCHEMA_CHANGESおよびORA_DV_DEFAULT_PROTECTION)が用意されています。

  • ORA_DV_SCHEMA_CHANGESでは、Oracle Database Vaultのスキーマ・オブジェクトDVSYSおよびLBACSYSを監査します。この事前定義済ポリシーの詳細は、Oracle Databaseセキュリティ・ガイドを参照してください。
  • ORA_DV_DEFAULT_PROTECTIONでは、Oracle Database Vaultのデフォルト・レルムとコマンド・ルールを監査します。この事前定義済ポリシーの詳細は、Oracle Databaseセキュリティ・ガイドを参照してください。

これらのポリシーの定義は、AUDIT_UNIFIED_POLICIESデータ・ディクショナリ・ビューを問い合せることで検索できます。policy_nameパラメータには、ORA_DV_SCHEMA_CHANGESまたはORA_DV_DEFAULT_PROTECTIONを指定します。