プライマリ・コンテンツに移動
Oracle® Audit Vault and Database Firewall開発者ガイド
リリース12.2.0
E70387-11
目次へ移動
目次
索引へ移動
索引

前
次

3 監査収集プラグイン

監査収集プラグイン、およびそれらをOracle Audit Vault用に作成する方法について学習します。

3.1 監査収集プラグインについて

収集プラグインは、コードの記述を必要とせずにデータベース表またはXMLファイルの監査証跡に格納されている監査データを取得できます。

収集プラグインは、テンプレートベースの汎用コレクタです。ユーザーはマッパー・ファイルを指定して、証跡から監査データを収集する必要があります。

Audit Vault Serverフィールドへのセキュア・ターゲット・フィールドのマッピング情報、およびセキュア・ターゲット・タイプと監査証跡の他の詳細を指定するXMLマッパー・ファイルを準備することで、収集プラグインが作成されます。

このプロセスは、コーディングの必要はありません。Audit Vaultは、マッパー・ファイルの解釈に必要なすべてのコードを含み、それらを使用して監査証跡から監査データを適切に収集します。

収集プラグインは、2つのタイプの監査証跡をサポートします。

  • データベース表: データベース表の収集プラグインは、マッパー・ファイルの情報を使用して、監査表から監査データを収集できます。

  • XMLファイル: XMLファイルの収集プラグインは、マッパー・ファイルの情報を使用して、単一のディレクトリに存在するXML監査ファイルから監査データを収集できます。

データベース表またはXMLファイル証跡の収集プラグインを使用するには、次のステップを実行します。

  1. セキュア・ターゲットの監査証跡のXMLマッパー・ファイルを作成します。この章では、一般的なマッパー・ファイルについて説明し、その作成に焦点を当てています。

  2. このセキュア・ターゲット・タイプのplugin-manifestファイルを作成します。

  3. マッパー・ファイルおよびplugin-manifestファイルをパッケージ化して、収集プラグインを作成します。

セキュア・ターゲットおよびそのセキュア・ターゲットに必要な収集属性を追加した後に、Audit Vault Serverでこの収集プラグインをデプロイし、これを使用して監査データを収集できます。

3.2 マッパー・ファイルについて

マッパー・ファイルは、主に監査証跡から収集する必要があるセキュア・ターゲット・フィールド、およびこれらのセキュア・ターゲットのOracle Audit Vault Serverフィールドへのマップ方法の情報を含むXMLファイルです。

マッパー・ファイルはセキュア・ターゲット・タイプに固有であり、securedTargetType,やsecuredTargetVersionなどのセキュア・ターゲット情報を含みます。

マッパー・ファイルには次のような詳細情報を記述します。

  • サポートされているセキュア・ターゲット名およびセキュア・ターゲット・バージョン。
  • セキュア・ターゲット・フィールドからAudit Vault Serverフィールドへのマッピング情報。
  • 各監査レコードを一意に識別するマーカーを作成するセキュア・ターゲット・フィールド。
  • 監査証跡タイプがデータベース表である場合の監査表およびデータソース・クラス名。
  • 監査証跡タイプがXMLファイルである場合のイベント時間のタイムスタンプ形式。

収集プラグインの一部としてマッパー・ファイルをパッケージ化します。プラグインのパッケージ化プロセス時に、マッパー・ファイルをtemplatesフォルダに配置します。

3.3 データベース表の収集プラグイン

Oracle Audit Vaultを使用して監査データを証跡表タイプから収集するには、データベース表の収集プラグインを使用できます

データベース表の収集プラグインは、表タイプの証跡からの監査データの収集をサポートします。単一の監査表から監査データを収集します。マッパー・ファイルで監査表の詳細を指定できます。これらのマッパー・ファイルは、スキーマに準拠する必要があります。

3.3.1 データベース表の収集プラグインの要件

ターゲット・データベース表から監査証跡を読み取るためにデータベース表の収集プラグインを使用するには、データがOracle Audit Vault and Database Firewall要件を満たす必要があります。

データが収集の要件を満たしている場合、ターゲット・データベース表から監査証跡を読み取るためにデータベース表の収集プラグインを使用できます。

Oracle Audit Vault and Database Firewallへの表収集プラグインのデータ要件

  • 監査データは、単一のデータベース表に格納する必要があります。

  • ターゲット・システムには、この表に格納されている監査データを読み取る権限を持つユーザーが存在します。

  • 監査表の列を様々なAudit Vaultコア・フィールドおよびラージ・フィールドにマップできます。

    また、単一または複数のフィールドを拡張およびマーカー・フィールドにマップできます。Audit Vaultコア・フィールド、拡張フィールドおよびマーカー・フィールドにマップされるフィールドは、Stringデータ型であるか、Stringに変換できる必要があります。CLOBなどのラージ・データ型は使用できません。CLOBデータ型を指定した列は、CommandTextCommandParamなどのAudit Vaultラージ・フィールドを使用する必要があります。

  • 監査証跡は、CommandClass Audit Vaultコア・フィールドにマップされるフィールドを含む必要があります。

    CommandClassコア・フィールドの値は、NULL以外である必要があります。NULLである場合、レコードが無効なレコードとみなされるため、適切なマッピングを指定する必要があります。

  • 監査ファイルは、UserNameコア・フィールドにマップできるフィールドを持つ必要があります。レコードがNULLのUserNameフィールドを持つ場合、レコードは無効とみなされます。

  • 収集プラグインは、ラージ・フィールドの発行されたコマンドのテキストおよびコマンドに渡されるパラメータを収集できます。他のフィールドは、Audit Vault and Database Firewallのラージ・フィールドにはマップできません。

  • 監査証跡は、各監査レコードを一意に識別する単一の列または列のグループを含む必要があります。

  • 監査証跡は、単調に増加する、つまり新しい監査レコードが証跡に挿入されるたびにフィールドの値が増加するタイプTimestampのフィールドを含む必要があります。このフィールドはマッパー・ファイルのEventTimeUTCコア・フィールドにマップする必要があります。任意の監査レコードでこのフィールド値がNULLになると、コレクタは異常な状況とみなして停止します。

関連トピック

3.3.2 データベース表の収集プラグインの監査証跡の例

この項には、章全体でサンプルのマッパー・ファイルの作成および構造を示すために使用される監査証跡の列の詳細が含まれます。

表3-1に、表AUDの監査データを生成および格納する仮のセキュア・ターゲット・タイプDBSOURCEの構造を示します。

表3-1 AUD監査表データ・フィールドおよびマッピング

セキュア・ターゲット・フィールド データ型 Audit Vault Serverフィールド マップするフィールド・タイプ

USER_ID

varchar

UserName

コア・フィールド

OS_USER_ID

varchar

OSUserName

コア・フィールド

ACTION

int

CommandClass

コア・フィールド

STATUS

int

EventStatus

コア・フィールド

EVENT_TIME

timestamp

EventTimeUTC

コア・フィールド

OBJ_NAME

varchar

TargetObject

コア・フィールド

OBJ_CREATOR

varchar

TargetOwner

コア・フィールド

USER_HOST

varchar

ClientHostName

コア・フィールド

SQL_TEXT

clob

CommandText

コア・フィールド

SQL_BIND

clob

CommandParam

コア・フィールド

TERMINAL

varchar

TerminalName

拡張フィールド

DB_ID

varchar

拡張フィールド

拡張フィールド

INSTANCE

varchar

拡張フィールド

拡張フィールド

PROCESS

int

拡張フィールド

拡張フィールド

SESSION_ID

int

マーカー・フィールド

マーカー・フィールド

ENTRY_ID

int

マーカー・フィールド

マーカー・フィールド

すべてのセキュア・ターゲット・フィールドがコア・フィールドにマップされるわけではありません。コア・フィールドにマップされないセキュア・ターゲット・フィールドは、拡張フィールドまたは監査レコードの一意性をテストする、指定したマーカー・フィールドにマップされます。

3.3.3 データベース表のマッパー・ファイルの作成

この項では、データベース表の収集プラグインのXMLマッパー・ファイルの作成方法について説明します。このタイプのマッパー・ファイルに使用される各XML要素および属性について簡単に説明します。

関連項目:

次に、データベース表の収集プラグインのマッパー・ファイルの作成方法を示す段階的な例を示します。

  • 最上位要素

    <AVTableCollectorTemplate securedTargetType="DBSOURCE" minSecuredTargetVersion="10.2.0"
               maxSecuredTargetVersion="11.0" version="1.0" > 
    

    AVTableCollectorTemplateは、マッパー・ファイルの開始をマークする最上位要素です。securedTargetTypemaxSecuredTargetVersionおよびversion属性は必須です。minSecuredTargetVersion属性はオプションです。

    minSecuredTargetVersionmaxSecuredTargetVersionおよびversion属性の受け入れられる形式は、12.2、10.3.2、11.2.3.0などのピリオドで区切られた数値を使用します。

  • 表名情報

    <TableName>AUD</TableName>  
    

    監査表のTableNameを指定する必要があります。これは必須フィールドです。

    このファイルのTableNameフィールドは、「監査証跡の追加」画面の証跡の場所と一致する必要があります。

    ノート:

    コレクタは、証跡の場所がマッパー・ファイルで指定されたTableNameと一致するかどうかを確認し、一致しない場合は起動しません。

    コレクタは、セキュア・ターゲットの収集属性av.collector.securedtargetversionのバージョンを検証し、そのバージョンがその最上位要素minSecuredTargetVersionおよびmaxSecuredTargetVersion属性で指定された範囲内かどうかを検証して、テンプレート・フォルダ内の適切なマッパー・ファイルを選択します。

    たとえば、セキュア・ターゲットの収集属性av.collector.securedtargetversionが11.1.0.0の場合、コレクタは、指定されたバージョン内の範囲の最上位要素を持つマッパー・ファイルを選択します。

    <AVTableCollectorTemplate securedTargetType="Oracle Database" minSecuredTargetVersion="10.2.0" maxSecuredTargetVersion="12.3" version="1.0">

    これにより、同じプラグインの複数のバージョン(テンプレート・フォルダ内の異なるマッパー・ファイル)が、異なるセキュア・ターゲット・バージョンに対応できます。

  • セキュア・ターゲット接続情報

    <ConnectionInfo>
       <DataSource>platform.jdbc.dbsource.DBSourceDataSource</DataSource>
    </ConnectionInfo>  
    

    javax.sql.DataSourceインタフェースを実装するデータソース・クラスのフル・ネームを指定する必要があります。これは必須フィールドです。

  • フィールド・マッピング情報

    <FieldMappingInfo>  
    

    FieldMappingInfoは、セキュア・ターゲット・フィールドから様々なAudit Vaultフィールドへのマッピング情報および値変換(存在する場合)を指定する必要があります。これは必須要素です。

    フィールド・マッピングには、セキュア・ターゲット・フィールド名を保持する<Name>要素を含む<Map>要素およびセキュア・ターゲットがマップされるAudit Valueフィールド名を保持する<MapTo>要素が含まれます。

    セキュア・ターゲット・フィールドからAudit Vault Serverフィールドへの多対1のマッピングは指定しないでください。たとえば、次の例は無効です。

    <!-- Invalid code
    <Map>
        <Name>USER_ID</Name>
        <MapTo>UserName</MapTo>
    </Map>     
    <Map>
        <Name>OS_USER_ID</Name>
        <MapTo>UserName</MapTo>
    </Map>  -->
          

    次の項では、コア、ラージ、拡張およびマーカー・フィールドのマッピングについて説明します。

    • コア・フィールド

      <CoreFields>
      

      CoreFieldsは、セキュア・ターゲット・フィールドからAudit Vault Serverのコア・フィールドへのマッピングを提供します。指定されたセキュア・ターゲット・フィールドのデータ型は、SQL stringデータ型またはStringに変換できるデータ型に属する必要があります。

      次の要素にはコア・フィールドが含まれます。

      <Map>
        <Name>EVENT_TIME</Name>
        <MapTo>EventTimeUTC</MapTo>
      </Map>
      

      EventTimeUTCは、イベント時間のマッピング情報を提供します。このフィールドは必須です。

      EVENT_TIMEセキュア・ターゲット・フィールドは、SQLデータ型Timestampである必要があります。

      <Map>
        <Name>USER_ID</Name>
        <MapTo>UserName</MapTo>
      </Map>   
        

      UserNameは、アクションを実行するユーザーを表します。マッピングが提供されていない場合、監査データ収集は引き続き正常に開始されますが、各監査レコードは無効とみなされます。

      <Map>
        <Name>OS_USER_ID</Name>
        <MapTo>OSUserName</MapTo>
      </Map>  
          
      <Map>
        <Name>ACTION</Name>
        <MapTo>CommandClass</MapTo>
      </Map>  
      

      CommandClassは、イベントのアクションを表します。マッピングが提供されていない場合、監査データ収集は引き続き正常に開始されますが、すべての監査レコードは無効とみなされます。

      <Transformation>
                <ValueTransformation from="1" to="CREATE"/>
                <ValueTransformation from="2" to="INSERT"/>
                <ValueTransformation from="3" to="SELECT"/>
                <ValueTransformation from="4" to="CREATE"/>
                <ValueTransformation from="15" to="READ"/>
                <ValueTransformation from="30" to="LOGON"/>
                <ValueTransformation from="34" to="LOGOFF"/>
                <ValueTransformation from="35" to="ACQUIRE"/>
              </Transformation>
            </Map>    
        

      CommandClassは、セキュア・ターゲットからAudit Vault CommandClassフィールドへのValueTransformation値を持つTransformationフィールドを含みます。これらの変換は必須です。

      to属性は、CommandClassフィールドの値です。イベントをこれらの値のいずれかに意味的にマップできる場合は、そうすることをお薦めします。できない場合は、監査イベントを生成したアクションを適切に反映する値を使用します。

      <Map>
        <Name> OBJ_NAME</Name>
        <MapTo>TargetObject</MapTo>
      </Map>
      
      
      <Map>
         <Name>TERMINAL</Name>
         <MapTo>TerminalName</MapTo>
      </Map> 
      
      <Map>
        <Name>USER_HOST</Name>
        <MapTo>ClientHostName</MapTo>
      </Map>
      
      <Map>
        <Name>OBJ_CREATOR</Name>
        <MapTo>TargetOwner</MapTo>
       </Map>
      
      <Map>
        <Name>STATUS</Name>
        <MapTo>EventStatus</MapTo>
              <Transformation>          
                <ValueTransformation from="0" to="FAILURE"/>
                <ValueTransformation from="1" to="SUCCESS"/>
                <ValueTransformation from="2" to="UNKNOWN"/>
              </Transformation>
       </Map>
      

      EventStatusは、セキュア・ターゲットからAudit Vault EventStatusフィールドへのValueTransformation値を持つTransformationフィールドを含みます。これらの変換は必須です。

      </CoreFields>   
       
    • ラージ・フィールド情報

      <LargeFields>     
        <Map>
          <Name>SQL_TEXT</Name>
          <MapTo>CommandText</MapTo>
       </Map>
       <Map>
         <Name>COMMAND_PARAMETER</Name>
         <MapTo>CommandParam</MapTo>
       </Map>        
      </LargeFields>
        

      LargeFieldsは、CommandTextCommandParamなどのAudit Vault Serverのラージ・フィールドにマップされるセキュア・ターゲット・フィールドです。指定されたセキュア・ターゲット・フィールドは、SQLデータ型CLOBまたはStringであるか、Stringに変換できる必要があります。

    • 拡張フィールド

      <ExtensionField>      
         <Name>DB_ID</Name>
         <Name>INSTANCE</Name>
         <Name>PROCESS</Name>
      </ExtensionField>  
        

      ExtensionFieldは、Audit Vault Serverの拡張フィールドに名前/値ペアとして格納する必要があるセキュア・ターゲット・フィールド名です。ここで指定されるセキュア・ターゲット列は、String値または情報を失わずにStringに変換できる値を持つ必要があります。

    • マーカー・フィールド

      <MarkerField>       
        <Name>SESSION_ID</Name>  
        <Name>ENTRY_ID</Name>
      </MarkerField> 
       

      MarkerFieldは、各監査レコードを一意に識別するセキュア・ターゲット・フィールド名のリストを含みます。指定されたセキュア・ターゲット・フィールドは、SQLデータ型Stringであるか、Stringに変換できる必要があります。MarkerFieldは必須です。

    • 終了タグ

      ファイルを有効にするため、フィールド・タグを適切に閉じる必要があります。フィールド終了タグの例は次のとおりです。

      </FieldMappingInfo>
      
      </AVTableCollectorTemplate>
      

3.4 XMLファイルの収集プラグイン

Oracle Data Vault XMLファイルの収集プラグインを使用して、監査データをXMLファイル・タイプの証跡から収集する方法を学習します。

XMLファイルの収集プラグインは、XMLファイル・タイプの証跡からの監査データの収集をサポートします。これらのXML監査ファイルは、すべて単一のディレクトリに存在する必要があります。マッパー・ファイルでXML監査データの詳細を指定できます。XMLマッパー・ファイルは、スキーマに準拠する必要があります。

3.4.1 XMLファイルの収集プラグインの要件

XMLファイルが次の基準を満たしている場合、XML監査レコード・ファイルから監査証跡を読み取る収集プラグインを使用できます。

  • 監査証跡は、単一のディレクトリ・パスの1つ以上のXMLファイルに格納する必要があります。

  • ユーザーは、XML監査ファイルを含むディレクトリの読取り権限を持つ必要があります。

  • このディレクトリのXMLファイルは、XML 1.0仕様の制約内の有効な正しい形式のXMLドキュメントである必要があります。

  • ファイルおよびレコード開始要素は、マッパー・ファイルで指定されたとおりである必要があります。

  • すべての監査レコード要素は、監査XMLファイルの同じレベルである必要があります。

  • 監査XMLファイルのすべての監査レコード要素は同じである必要があります。

  • 各監査レコード要素下では、すべてのフィールド要素が同じレベルであるか、監査レコード開始要素の1つ下のレベルである必要があります。

  • XML監査ファイルは、CommandClassコア・フィールドにマップできる要素値を持つ必要があります。レコードがNULLのCommandClassフィールドを持つ場合、レコードは無効とみなされます。

  • XML監査ファイルは、UserNameコア・フィールドにマップできる要素値を持つ必要があります。レコードがNULLのUserNameフィールドを持つ場合、レコードは無効とみなされます。

  • XMLファイルでは、各監査レコードは、要素値のいずれかとしてタイムスタンプを持つ必要があります。

    タイムスタンプ要素の値は、単調に増加する、つまりフィールドの値が新しい監査レコードが証跡に挿入されるたびに増加する必要があります。タイムスタンプ値は、必ずNot Nullである必要があります。タイムスタンプ形式は、SimpleDateFormat Javaクラスに従う必要があります。

    このフィールドはマッパー・ファイルのEventTimeUTCコア・フィールドにマップする必要があります。イベント時間のマッピングがマッパー・ファイルに指定されていない場合は、収集プラグインがシャットダウンします。監査レコードのイベント時間のフィールド値がnullであることがわかった場合、収集プラグインは同じXML監査ファイルから最後に送信されたレコードの時間を取得します。

  • 監査証跡は、XML監査ファイルの各監査レコードを一意に識別する監査レコードの単一の要素値または要素値のグループを含む必要があります。

  • XMLファイルのすべての監査レコードで共有される共通情報は、監査レコード要素と同じレベルのファイル開始要素の下にあるXMLファイルの先頭に存在する必要があります。

  • 監査データのセキュア・ターゲットが複数のXML形式を持つ監査ファイルを作成する場合、ユーザーは、異なる開始要素を持つ各監査ファイル形式の個別のマッパー・ファイルを指定する必要があります。

  • 次の例で説明するように、このディレクトリのXMLファイルは、エージェントと同じロケールおよびエンコーディングである必要があります。

    • 有効: ユーザーは中国語のロケール(env)のエージェントを持っています。XMLファイルも中国語のロケールで同じエンコーディング(たとえば、ZHS16GBK)で生成されています。この設定は有効です。

    • 無効: ユーザーはドイツ語のロケール(env)のエージェントを持っています。XMLファイルは、中国語でエンコードされた別のコンピュータから生成/移動されています。この場合、エンコーディングおよびロケールが一致しないため、コレクタの開始に失敗します。この設定は無効です。

3.4.2 XMLファイルの収集プラグインの監査証跡の例

この項には、章全体でXMLファイルの収集プラグインのサンプルのマッパー・ファイルの作成および構造に使用される監査証跡の例が含まれます。

表3-2に、XML監査ファイルの監査データを生成および格納する仮のセキュア・ターゲット・タイプXMLSOURCEの監査レコード構造およびAudit Vault Serverフィールドへのマッピングを示します。

表3-2 XML監査レコードの監査データ・フィールドおよびマッピング

セキュア・ターゲット・フィールド Audit Vault Serverフィールド マップするフィールド・タイプ

USER_ID

UserName

コア・フィールド

OS_USER_ID

OSUserName

コア・フィールド

ACTION

CommandClass

コア・フィールド

STATUS

EventStatus

コア・フィールド

EVENT_TIME

EventTimeUTC

コア・フィールド

OBJ_NAME

TargetObject

コア・フィールド

OBJ_CREATOR

TargetOwner

コア・フィールド

USER_HOST

ClientHostName

コア・フィールド

SQL_TEXT

CommandText

コア・フィールド

SQL_BIND

CommandParam

コア・フィールド

TERMINAL

TerminalName

拡張フィールド

DB_ID

拡張フィールド

拡張フィールド

INSTANCE

拡張フィールド

拡張フィールド

PROCESS

拡張フィールド

拡張フィールド

SESSION_ID

マーカー・フィールド

マーカー・フィールド

ENTRY_ID

マーカー・フィールド

マーカー・フィールド

例3-1 XML監査レコードのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<Audit>
    <AuditRecord>
        <Audit_type>1</Audit_type>
        <User_id>scott</User_id>
        <Os_user_id>usr1</Os_user_id>
        <Action>select</Action>
        <Status>0</Status>
        <Event_time>2010-11-11 12:23:59.166</Event_time>
        <Obj_name>emp</Obj_name>
        <Terminal>t1</Terminal>
        <Db_id>136</Db_id>
        <Session_id>170191</Session_id>
        <Entry_id>1</Entry_id>
    </AuditRecord>
    <AuditRecord>
        <Audit_type>3</Audit_type>
        <User_id>scott</User_id>
        <Os_user_id>usr1</Os_user_id>
        <Action>delete</Action>
        <Status>1</Status>
        <Event_time>2010-11-11 12:33:59.166</Event_time>
        <Obj_name>emp</Obj_name>
        <Terminal>t1</Terminal>
        <Db_id>136</Db_id>
        <Session_id>170191</Session_id>
        <Entry_id>2</Entry_id>
    </AuditRecord>
</Audit>

3.4.3 XMLファイルの監査収集のマッパー・ファイルの作成

XMLファイルの収集プラグインのマッパー・ファイルを作成するには、Oracle Audit Vault and Database Firewallの標準に従って、このマッパー・ファイルに収集プラグイン・マッピングを記述する必要があります。

このマッパー・ファイルの収集プラグインのマッピングを次のように指定する必要があります。

Oracle Audit Vault and Database Firewall用のマッパー・ファイルの収集プラグイン・マッピングの標準

  • 最上位要素

    <AVXMLCollectorTemplate securedTargetType="XMLSOURCE"
        maxSecuredTargetVersion="11.0" version="1.0">
    

    AVXMLCollectorTemplateは最上位要素です。securedTargetTypemaxSecuredTargetVersionおよびversion属性は必須です。minSecuredTargetVersion属性はオプションです。

    minSecuredTargetVersionmaxSecuredTargetVersionおよびversion属性の受け入れられる形式は、12.2,10.3.2、11.2.3.0などのピリオドで区切られた数値を使用します。

  • ヘッダー情報

    <HeaderInfo>
      <StartTag>Audit</StartTag>
    </HeaderInfo>  
      

    HeaderInfoは必須です。監査レコード・ファイルの最上位要素の名前を付ける1つの子要素StartTagを含みます。

  • レコード情報

    <RecordInfo>
      <StartTag>AuditRecord</StartTag>    
    </RecordInfo>
    

    RecordInfoは、XML監査ファイルの監査レコードの開始要素を提供します。RecordInfoは必須です。

    StartTagは、XML監査ファイルの各監査レコードの開始要素です。

  • フィールド・マッピング情報

    <FieldMappingInfo>  
    

    FieldMappingInfoは、子要素CoreFieldsLargeFieldsExtensionFieldおよびMarkerFieldに含まれるセキュア・ターゲット・フィールドから様々なAudit Vaultフィールドへのマッピング情報を提供します。

    フィールド・マッピングには、セキュア・ターゲット・フィールド名を保持する<Name>要素を含む<Map>要素およびセキュア・ターゲットがマップされるAudit Valueフィールド名を保持する<MapTo>要素が含まれます。

    セキュア・ターゲット・フィールドからAudit Vault Serverフィールドへの多対1のマッピングは指定しないでください。たとえば、次の例は無効です。

    <!-- Invalid code
    <Map>
        <Name>USER_ID</Name>
        <MapTo>UserName</MapTo>
    </Map>     
    <Map>
        <Name>OS_USER_ID</Name>
        <MapTo>UserName</MapTo>
    </Map>  -->
          
    • コア・フィールド

      <CoreFields>
      

      CoreFieldsは、セキュア・ターゲット・フィールドからAudit Vault Serverのコア・フィールドへのマッピングを提供します。コア・フィールド・マッピングに指定されたセキュア・ターゲット・フィールドは、SQLデータ型の、文字列型または文字列に変換できるデータ型である必要があります。

      次の要素にはコア・フィールドが含まれます。

      <Map>
       <Name>EVENT_TIME</Name>
        <MapTo>EventTimeUTC</MapTo>
        <TimestampPattern>yyyy-MM-dd HH:mm:ss.SSS</TimestampPattern>
      </Map>
      

      EventTimeUTCは、イベント時間のマッピング情報を提供します。TimestampPatternの値は、イベント時間のタイムスタンプ形式を指定します。EventTimeUTCおよびTimestampPatternは必須です。

      TimestampPatternを指定する際には、Oracle Database固有のパターンではなく、Java SimpleDateFormatクラスでサポートされているパターンおよび文字を使用します。

      中国語などのマルチバイト文字の場合は、月など特定の文字をSimpleDateFormatの文字としてパターンに追加する必要があります。AMおよびPMインジケータはロケールに基づいて取得されますが、マッパー・ファイルに指定するTimestampPatternに明示的に指定する必要があります。

      <Map>
        <Name>USER_ID</Name>
        <MapTo>UserName</MapTo>
      </Map>   
        

      UserNameは、アクションを実行したユーザーを表します。マッピングが提供されていない場合、監査データ収集は引き続き正常に開始されますが、各監査レコードは無効とみなされます。

      <Map>
        <Name>OS_USER_ID</Name>
        <MapTo>OSUserName</MapTo>
      </Map>  
       <Map>
        <Name>ACTION</Name>
        <MapTo>CommandClass</MapTo>
      </Map>    

      CommandClassは、イベントのアクションを表します。マッピングが提供されていない場合、監査データ収集は引き続き正常に開始されますが、すべての監査レコードは無効とみなされます。

              <Transformation>
                <ValueTransformation from="1" to="CREATE"/>
                <ValueTransformation from="2" to="INSERT"/>
                <ValueTransformation from="3" to="SELECT"/>
                <ValueTransformation from="4" to="CREATE"/>
                <ValueTransformation from="15" to="READ"/>
                <ValueTransformation from="30" to="LOGON"/>
                <ValueTransformation from="34" to="LOGOFF"/>
                <ValueTransformation from="35" to="ACQUIRE"/>
              </Transformation>   
        

      CommandClassは、セキュア・ターゲットからAudit Vault Server CommandClassフィールドへのValueTransformation値を持つTransformationフィールドを含みます。これらの変換は必須です。

      to属性は、CommandClassフィールドの値です。イベントをこれらの値のいずれかに意味的にマップできる場合は、そうすることをお薦めします。できない場合は、監査イベントを生成したアクションを適切に反映する値を使用します。

      <Map>
        <Name>OBJ_NAME</Name>
        <MapTo>TargetObject</MapTo>
      </Map>
      <Map>
        <Name>USER_HOST</Name>
        <MapTo>ClientHostName</MapTo>
      </Map>
      
      <Map>
         <Name>TERMINAL</Name>
         <MapTo>TerminalName</MapTo>
      </Map> 
      <Map>
        <Name>OBJ_CREATOR</Name>
        <MapTo>TargetOwner</MapTo>
      </Map>
      <Map>
        <Name>STATUS</Name>
        <MapTo>EventStatus</MapTo>
              <Transformation>          
                <ValueTransformation from="0" to="FAILURE"/>
                <ValueTransformation from="1" to="SUCCESS"/>
                <ValueTransformation from="2" to="UNKNOWN"/>
              </Transformation>
      </Map>
      

      EventStatusは、セキュア・ターゲットからAudit Vault EventStatusフィールドへのValueTransformation値を持つTransformationフィールドを含みます。これらの変換は必須です。

      </CoreFields>   
       
    • ラージ・フィールド情報

      <LargeFields>     
        <Map>
          <Name>SQL_TEXT</Name>
          <MapTo>CommandText</MapTo>
        </Map>
      <Map>
         <Name>COMMAND_PARAMETER</Name>
         <MapTo>CommandParam</MapTo>
        </Map>        
      </LargeFields>

      LargeFieldsは、Audit Vault Serverのラージ・フィールドにマップされるセキュア・ターゲット・フィールドです。指定されたセキュア・ターゲット・フィールドは、SQLデータ型CLOBまたはStringであるか、Stringに変換できる必要があります。

    • 拡張フィールド

      <ExtensionField>      
         <Name>DB_ID</Name>
         <Name>INSTANCE</Name>
         <Name>PROCESS</Name>
      </ExtensionField>  
        

      ExtensionFieldは、Audit Vault Serverの拡張フィールドに名前/値ペアとして格納する必要があるセキュア・ターゲット・フィールド名です。指定されたセキュア・ターゲット・フィールドは、SQLデータ型CLOBまたはStringであるか、Stringに変換できる必要があります。

    • マーカー・フィールド

      <MarkerField>       
        <Name>SESSION_ID</Name>  
        <Name>ENTRY_ID</Name>
      </MarkerField> 
       

      MarkerFieldは、各監査レコードを一意に識別するセキュア・ターゲット・フィールドのリストを含みます。指定されたセキュア・ターゲット・フィールドは、SQLデータ型CLOBまたはStringであるか、Stringに変換できる必要があります。MarkerFieldは必須です。

3.4.4 非標準監査レコードに対するXML変換

非標準監査データ形式の監査レコードがある場合は、XSLを使用してXML監査レコードにXML変換を適用できます。

監査レコードに対してXML変換を適用するには、監査データを元の形式からXMLファイル収集プラグインに現在指定されている形式に変換できるXSLファイルを指定します。このようにすることで、様々なXML監査データ形式をサポートするようにファイル収集プラグインを拡張できます。

3.4.4.1 XSLを使用するXML変換の追加要件

非標準監査レコードを現在の形式に変換するには、次のことが必要です。

変換プログラムは、増分の順序で監査ファイルに書き込む、つまり最大サイズに達するまで1つの監査ファイルに書き込んでから、別のファイルに移動する必要があります。そのため、1回にアクティブにできるのは1つのファイルのみになります。複数の不完全なXML監査ファイルが変換プログラムで検出されると、XMLファイル収集プラグインは停止します。

3.4.4.2 非標準監査レコードを変換するために必要な変更

非標準監査レコードを変換するためには、次のステップを実行する必要があります。

  1. マッパー・ファイルの<RecordInfo>の後に次のようなセクションを追加し、変換に使用するXSLファイルの名前を指定して、SourceFileStartTagに変換するファイルを指定します。
    <XslTransformation>
        <XslFile>test_template.xsl</XslFile>
        <SourceFileStartTag>AUDIT</SourceFileStartTag>
    </XslTransformation>
    
  2. XSLファイルを指定して、プラグイン・ディレクトリのtemplatesフォルダに置きます。
  3. XSLファイル内からJavaの機能を呼び出すこともできます。これを実行するには、作成したjarファイルをプラグイン・ディレクトリのjarsフォルダに置きます。

3.4.4.3 非標準XML監査データ・レコードのサンプル

このセクションには、XMLファイル収集プラグインに必要な正しいXML形式に変換する必要があるXMLデータ・レコードのサンプルが含まれています。ご使用のソース・システムでは、異なる外観の監査レコードが作成される場合があります。

例3-2 Audit.xml: XML監査レコードのサンプル

<?xml version="1.0" encoding="UTF-8"?>
<AUDIT>
 
   <AUDIT_RECORD TIMESTAMP="2013-06-07T08:27:53" NAME="Audit" 
   SERVER_ID="0" VERSION="1" STARTUP_OPTIONS="C:/Program Files/MySQL/MySQL
   Server 5.6/bin\mysqld --defaults-file=C:\ProgramData\MySQL\MySQL Server
   5.6\my.ini" OS_VERSION="x86_64-Win64" MYSQL_VERSION=
   "5.6.11-enterprise-commercial-advanced"/>
 
   <AUDIT_RECORD TIMESTAMP="2013-06-07T08:30:46" NAME="Connect" CONNECTION_ID="1"
   STATUS="0" USER="root" PRIV_USER="root" OS_LOGIN="" PROXY_USER=""  
   HOST="localhost" IP="127.0.0.1" DB=""/>
 
   <AUDIT_RECORD TIMESTAMP="2013-06-07T08:31:21" NAME="Query" CONNECTION_ID="1"
   STATUS="0" SQLTEXT="CREATE USER 'admin'@'localhost' IDENTIFIED BY 
   'welcome_1'"/>
 
</AUDIT>

3.4.4.4 変換用のXSLファイルの作成

これは、変換ルールを定義するXSL変換ファイルの例です。システムで作成されるソース監査レコードを変換できるバージョンを作成して、プラグインのtemplatesフォルダに置く必要があります。

次のファイルは、ご使用のフォルダには存在しません。これは、例3-3のXSL変換ファイルを使用してAudit.xmlファイルを必要なXML形式に変換した結果を示す例にすぎません。

例3-3 test_template.xsl

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes" />
     <xsl:template match="/">
        <ROOT_DEST>
          <xsl:for-each select="AUDIT/AUDIT_RECORD">
            <Record_Dest>
                <USER><xsl:value-of select="@USER"/></USER>
                <PRIV_USER><xsl:value-of select="@PRIV_USER"/></PRIV_USER>
                <OS_LOGIN><xsl:value-of select="@OS_LOGIN"/></OS_LOGIN>
                <PROXY_USER><xsl:value-of select="@PROXY_USER"/></PROXY_USER>
                <HOST><xsl:value-of select="@HOST"/></HOST>
                <IP><xsl:value-of select="@IP"/></IP>
                <DB><xsl:value-of select="@DB"/></DB>
                <SQLTEXT><xsl:value-of select="@SQLTEXT"/></SQLTEXT>
                <CONNECTION_ID><xsl:value-of select= 
                      "@CONNECTION_ID"/></CONNECTION_ID>
                <STATUS><xsl:value-of select="@STATUS"/></STATUS>
                <TIMESTAMP><xsl:value-of select="@TIMESTAMP"/></TIMESTAMP>
                <NAME><xsl:value-of select="@NAME"/></NAME>
                <SERVER_ID><xsl:value-of select="@SERVER_ID"/></SERVER_ID>
                <VERSION><xsl:value-of select="@VERSION" /></VERSION>
   <STARTUP_OPTIONS><xsl:value-of select="@STARTUP_OPTIONS"/> </STARTUP_OPTIONS>
                <OS_VERSION><xsl:value-of select="@OS_VERSION"/></OS_VERSION>
                <MYSQL_VERSION><xsl:value-of select="@MYSQL_VERSION"/>
                    </MYSQL_VERSION>
            </Record_Dest>
          </xsl:for-each>
         </ROOT_DEST>
        </xsl:template>
  </xsl:stylesheet>
 

例3-4 変換済監査レコード・ファイル

<ROOT_DEST>
     <Record_Dest>
         <USER></USER>
         <PRIV_USER></PRIV_USER>
         <OS_LOGIN></OS_LOGIN>
         <PROXY_USER></PROXY_USER>
         <HOST></HOST>
         <IP></IP>
         <DB></DB>
         <SQLTEXT></SQLTEXT>
         <CONNECTION_ID></CONNECTION_ID>
         <STATUS></STATUS>
         <TIMESTAMP>2013-06-07T08:27:53</TIMESTAMP>
         <NAME>Audit</NAME>
         <SERVER_ID>0</SERVER_ID>
         <VERSION>1</VERSION>
         <STARTUP_OPTIONS>C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld
             --defaults-file=C:\ProgramData\MySQL\MySQL Server
             5.6\my.ini</STARTUP_OPTIONS>
         <OS_VERSION>x86_64-Win64</OS_VERSION>
         <MYSQL_VERSION>5.6.11-enterprise-commercial-advanced</MYSQL_VERSION>
     </Record_Dest>
     <Record_Dest>
         <USER>root</USER>
         <PRIV_USER>root</PRIV_USER>
         <OS_LOGIN></OS_LOGIN>
         <PROXY_USER></PROXY_USER>
         <HOST>localhost</HOST>
         <IP>127.0.0.1</IP>
         <DB></DB>
         <SQLTEXT></SQLTEXT>
         <CONNECTION_ID>1</CONNECTION_ID>
         <STATUS>0</STATUS>
         <TIMESTAMP>2013-06-07T08:30:46</TIMESTAMP>
         <NAME>Connect</NAME>
         <SERVER_ID></SERVER_ID>
         <VERSION></VERSION>
         <STARTUP_OPTIONS></STARTUP_OPTIONS>
         <OS_VERSION></OS_VERSION>
         <MYSQL_VERSION></MYSQL_VERSION>
     </Record_Dest>
     <Record_Dest>
         <USER></USER>
         <PRIV_USER></PRIV_USER>
         <OS_LOGIN></OS_LOGIN>
         <PROXY_USER></PROXY_USER>
         <HOST></HOST>
         <IP></IP>
         <DB></DB>
         <SQLTEXT>CREATE USER 'admin'@'localhost' IDENTIFIED BY 
                 'welcome_1'</SQLTEXT>
         <CONNECTION_ID>1</CONNECTION_ID>
         <STATUS>0</STATUS>
         <TIMESTAMP>2013-06-07T08:31:21</TIMESTAMP>
         <NAME>Query</NAME>
         <SERVER_ID></SERVER_ID>
         <VERSION></VERSION>
         <STARTUP_OPTIONS></STARTUP_OPTIONS>
         <OS_VERSION></OS_VERSION>
         <MYSQL_VERSION></MYSQL_VERSION>
     </Record_Dest>
</ROOT_DEST>

3.5 セキュア・ターゲットの収集属性

Oracle Data Vaultプラグインを使用して監査証跡から収集する前に、収集属性を定義する必要があります。

データベース表およびXMLファイル収集プラグインの場合は、Audit Vault Serverに収集プラグインをデプロイしてセキュア・ターゲットを登録した後、プラグインが監査証跡から収集を開始する前に、セキュア・ターゲットの収集属性を設定する必要があります。

AVCLIコマンドALTER SECURED TARGETを使用して、収集属性を定義します。

必要なセキュア・ターゲット属性は次のとおりです。

  • av.collector.securedtargetversion (必須): セキュア・ターゲットの現在のバージョン。このバージョン情報により、収集プラグインのtemplatesディレクトリに複数のマッパー・ファイルがある場合、監査証跡の正しいマッパー・ファイルを選択できます。

  • av.collector.atcintervaltime: 収集プラグインは、監査データが証跡から収集された最後の時間をファイルに書き込みます。このファイルは、エージェント・ホームのav/atcディレクトリに配置されます。また、このファイルにはUTCタイムゾーンの時間も含まれています。この情報は、証跡から監査データをクリーンアップする一部のサード・パーティ・ユーティリティに役立ちます。収集プラグインは監査データのクリーンアップは行わず、この情報をファイルに書き込むだけであることに注意してください。atcintervaltimeには、収集プラグインがファイルの時間情報を更新する頻度を指定します。属性の値は分単位です。

  • av.collector.timezoneoffset (必須): UTCタイムゾーンからのセキュア・ターゲットのイベント時間のオフセット。これにより、コレクタがタイムゾーンを調整してイベント時間をAudit Vault Serverに正しく報告できます。イベント時間自体にタイムゾーン情報が含まれる場合、この属性はXMLファイルの収集プラグインには必要ありません。この設定の例は次のとおりです。

    av.collector.TimeZoneOffset = +5:30

  • av.collector.enableArchivedTime(オプション):この属性は、Oracle表証跡にのみ適用できます。これはデフォルトではtrueに設定されています。enableArchivedTimetrueに設定されており、INIT_CLEANUPプロシージャが証跡のために呼び出された場合、dbms_audit_mgmtパッケージの最終アーカイブ・タイムスタンプはATC間隔時間に基づいて現在のチェックポイント時刻に更新されます。falseに設定されている場合、証跡の最終アーカイブ・タイムスタンプはセキュア・ターゲット・データベースで更新されません。その場合、ユーザーは、チェックポイント時刻よりも前のタイムスタンプを持つ監査レコードが監査表から削除されないようにする必要があります。ユーザーはAVSYSスキーマのAudit Vault Serverデータベース・チェックポイント表を表示して、レコードが収集されるまでの証跡のチェックポイント時刻を確認できます。属性値を変更する必要がある場合は、属性が更新された後に証跡を再起動する必要があります。

3.6 監査データの前処理

Oracle Data Vault収集プラグインを使用するための要件について学習します。

一般に、収集プラグインは、この章で示される要件に準拠する監査証跡を収集するためにのみ使用できます。

その他の監査証跡については、Audit Vault Java APIを使用できます。

ただし、収集プラグインを使用して監査レコードを直接収集できない理由は他にもありますが、レコードは間接的に収集できます。

これらの監査証跡の前処理をして、収集プラグインで収集できる形式でデータベース表またはXMLファイルのエントリを生成できる場合があります。たとえば、Linux、UnixおよびMicrosoft WindowsのIBM DB2では、db2auditプログラムを実行して、固有のバイナリ形式からテキスト・ファイルに監査レコードを抽出する必要があります。新しいレコードを抽出するには、DB2ソフトウェアを所有するユーザーとしてこのプログラムを定期的に実行する必要があります。

収集プラグインを定義してファイルを直接読み取ることはできませんが、ファイルを定期的に読み取り、新しい監査レコードを抽出し、ディレクトリ内の新しいXMLファイルに書き込むプログラムを作成できます。このプログラムを実行するたびに、新しいレコードのみを含む新しいXMLファイルを作成できます。収集プラグインを定義してこれらのXMLファイルを読み取り、監査レコードをOracle Audit Vault Serverに収集できます。