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 の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Tomcat サーバーに Bindplane エージェントをインストールしてログファイルを収集する
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
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
/path/to/tomcat/logs
を置き換えます。<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Tomcat で JSON アクセスログを構成する
$CATALINA_BASE/conf/server.xml
にある Tomcat ファイルを開きます。<Host> タグを見つけて、その中に以下を追加します。
<Valve className="org.apache.catalina.valves.JsonAccessLogValve" directory="logs" prefix="access-log" suffix=".json" rotatable="true" maxDays="7"/>
Tomcat を再起動して変更を適用します。
cd /path/to/tomcat bin/catalina.sh stop bin/catalina.sh start
新しい 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.ip 、observer.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.severity 、security_result.severity_details 、security_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 のプロフェッショナルから回答を得ることができます。