Apache Tomcat のログを収集する

以下でサポートされています。

このドキュメントでは、Bindplane を使用して Apache Tomcat ログを Google Security Operations に取り込む方法について説明します。パーサーは、JSON 形式のログからフィールドを抽出し、Unified Data Model(UDM)に変換します。デフォルト値を初期化し、JSON ペイロードを解析して、JSON 解析エラーの可能性を処理します。また、メタデータ、プリンシパル、オブザーバー、セキュリティ結果情報など、未加工ログのさまざまなフィールドを対応する UDM フィールドにマッピングし、環境コンテキストのカスタムラベルも追加します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
  • Apache Tomcat バージョン 9.0.70 以降
  • $CATALINA_BASE/conf$CATALINA_BASE/logs への書き込みアクセス権

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Tomcat サーバーに Bindplane エージェントをインストールしてログファイルを収集する

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows のインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

その他のインストール オプションについては、インストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

  1. 構成ファイルにアクセスします。
    • config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリに、Windows ではインストール ディレクトリにあります。
    • テキスト エディタ(nanovi、メモ帳など)を使用してファイルを開きます。
  2. config.yaml ファイルを次のように編集します。

    receivers:
        filelog/tomcat:
        include: [ /path/to/tomcat/logs/access-log.*.json ]
        start_at: beginning
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds_file_path: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            log_type: 'TOMCAT'
            raw_log_field: body
            ingestion_labels:
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - filelog/tomcat
                exporters:
                    - chronicle/chronicle_w_labels
    

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart bindplane-agent
    
  • Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Tomcat で JSON アクセスログを構成する

  1. $CATALINA_BASE/conf/server.xml にある Tomcat ファイルを開きます。
  2. <Host> タグを見つけて、その中に以下を追加します。

    <Valve className="org.apache.catalina.valves.JsonAccessLogValve"
          directory="logs"
          prefix="access-log"
          suffix=".json"
          rotatable="true"
          maxDays="7"/>
    
  3. Tomcat を再起動して変更を適用します。

    cd /path/to/tomcat
    bin/catalina.sh stop
    bin/catalina.sh start
    
  4. 新しい JSON ログファイルが毎日表示されます(例: logs/access-log.2025-07-02.json)。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
@timestamp metadata.event_timestamp 未加工ログの @timestamp の値は、この UDM フィールドに直接マッピングされます。イベントが発生した時間を表します。
agent.ephemeral_id additional.fields[ephemeral_id].value.string_value エージェントからの一時 ID が additional フィールドに Key-Value ペアとして追加されます。
agent.hostname observer.hostname エージェントのホスト名がオブザーバーのホスト名として使用されます。
agent.id observer.asset_id エージェント ID はエージェント タイプと組み合わされて、オブザーバー アセット ID が作成されます(例: filebeat: <agent_id>)。
agent.type observer.application エージェント タイプはオブザーバー アプリケーションとして使用されます。
agent.version observer.platform_version エージェント バージョンはオブザーバー プラットフォーム バージョンとして使用されます。
host.hostname principal.hostname ホストのホスト名がプリンシパル ホスト名として使用されます。
host.id principal.asset.asset_id ホスト ID の先頭に Host Id: が付加され、プリンシパル アセット ID が作成されます。
host.ip principal.ipobserver.ip ホストの IP アドレスは、プリンシパル IP とオブザーバー IP の両方に使用されます。複数の IP が存在する場合は、配列に統合されます。
host.mac principal.mac ホストの MAC アドレスがプリンシパル MAC アドレスとして使用されます。複数の MAC が存在する場合は、配列に統合されます。
host.os.family principal.platform ホスト OS ファミリーが rhel または redhat の場合、プリンシパル プラットフォームは LINUX に設定されます。
host.os.kernel principal.platform_patch_level ホスト OS のカーネル バージョンが、プリンシパル プラットフォームのパッチレベルとして使用されます。
host.os.name additional.fields[os_name].value.string_value ホスト OS 名は、additional フィールドに Key-Value ペアとして追加されます。
host.os.version principal.platform_version ホスト OS のバージョンが、プリンシパル プラットフォームのバージョンとして使用されます。
log.file.path principal.process.file.full_path ログパスは、プリンシパル プロセス ファイルのフルパスとして使用されます。
log_level security_result.severitysecurity_result.severity_detailssecurity_result.action ログレベルは、セキュリティ結果の重大度、重大度の詳細、アクションを判断するために使用されます。DEBUG、INFO、AUDIT は、INFORMATIONAL の重大度と ALLOW アクションにマッピングされます。ERROR は、ERROR 重大度と BLOCK アクションにマッピングされます。WARNING と WARN は、MEDIUM の重大度と BLOCK アクションにマッピングされます。未加工の log_level 値も severity_details にマッピングされます。
logstash.irm_environment additional.fields[irm_environment].value.string_value Logstash の Iron Mountain 環境は、additional フィールドに Key-Value ペアとして追加されます。
logstash.irm_region additional.fields[irm_region].value.string_value Logstash の Iron Mountain リージョンは、additional フィールドに Key-Value ペアとして追加されます。
logstash.irm_site additional.fields[irm_site].value.string_value Logstash の Iron Mountain サイトは、additional フィールドに Key-Value ペアとして追加されます。
logstash.process.host intermediary.hostname Logstash 処理ホストは、仲介ホスト名として使用されます。
logstash.process.timestamp metadata.collected_timestamp Logstash 処理タイムスタンプが収集タイムスタンプとして使用されます。
logstash.xyz_environment additional.fields[xyz_environment].value.string_value Logstash の xyz 環境が additional フィールドに Key-Value ペアとして追加されます。
logstash.xyz_region additional.fields[xyz_region].value.string_value Logstash の xyz リージョンは、additional フィールドに Key-Value ペアとして追加されます。
logstash.xyz_site additional.fields[xyz_site].value.string_value Logstash の xyz サイトは、additional フィールドに Key-Value ペアとして追加されます。
message metadata.description メッセージ フィールドは JSON として解析され、その event_message フィールドはメタデータの説明として使用されます。仲介アプリケーションは logstash にハードコードされています。メタデータ イベントタイプは USER_UNCATEGORIZED にハードコードされています。メタデータ ログタイプは、未加工ログの batch.type または batch.log_type から TOMCAT に設定されます。メタデータ プロダクト名は Tomcat にハードコードされています。メタデータのベンダー名は Tomcat にハードコードされています。
user principal.user.userid 未加工ログのユーザー フィールドがプリンシパル ユーザー ID として使用されます。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。