Cloudflare WAF のログを収集する
以下でサポートされています。
Google SecOpsSIEM
このパーサーは、Cloudflare ウェブ アプリケーション ファイアウォール(WAF)JSON ログからフィールドを抽出し、変換して統合データモデル(UDM)にマッピングします。さまざまな Cloudflare アクションを処理し、メタデータとネットワーク情報でデータを拡充してから出力を UDM 形式に構造化します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Google Cloudへの特権アクセス権があることを確認します。
- Cloudflare Enterprise プランがあることを確認します。
- Cloudflare への特権アクセス権があることを確認します。
Google Cloud Storage バケットの作成
- Google Cloud コンソールにログインする
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
バケットを構成します。
- 名前: バケット名の要件を満たす一意の名前を入力します(cloudflare-waf など)。
- データの保存場所の選択: ロケーションを選択します。
- データのストレージ クラスを選択する: バケットの [デフォルトのストレージ クラス] を選択するか、ストレージ クラスの自動管理に [Autoclass] を選択します。
- オブジェクトへのアクセスを制御する方法を選択する: [なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
- ストレージ クラス: 必要に応じて選択します(Standard など)。
[作成] をクリックします。
Cloudflare IAM ユーザーにバケット権限を付与する
- Google Cloudで、[ストレージ] > [ブラウザ] > [バケット] > [権限] に移動します。
- ストレージ オブジェクト管理者権限を持つアカウント logpush@cloudflare-data.iam.gserviceaccount.com を追加します。
Cloudflare UI を使用して WAF ログの Logpush ジョブを作成する
- Cloudflare にログインします。
- [Analytics & Logs] > [Logpush] に移動します。
- [Create a Logpush job] を選択します。
- [宛先を選択してください] で [Google Cloud ストレージ] を選択します。
- 次の宛先の詳細情報を入力します。
- バケット: Google Cloud ストレージ バケット名
- パス: ストレージ コンテナ内のバケットの場所
- [Organize logs into daily subfolders] を選択します。
- [続行] をクリックします。
- ストレージに push する Security(WAF)データセットを選択します。
- logpush ジョブを構成します。
- [ジョブ名] を入力します。
- [If logs match] で、ログに含めるイベントやログから削除するイベントを選択できます。詳しくは、フィルタをご覧ください。すべてのデータセットでこのオプションを使用できるわけではありません。
- [Send the following] フィールドで、すべてのログをストレージの宛先に push するか、push するログを選択するかを選択できます。
- [送信] をクリックします。
Cloudflare WAF ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Cloudflare WAF ログ)。
- [Source type] として [Google Cloud Storage] を選択します。
- [Log type] として [Cloudflare WAF] を選択します。
- [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- GCS URI: Cloud Storage の URL。
- URI is a: [サブディレクトリを含むディレクトリ] を選択します。
- Source deletion options: 必要に応じて削除オプションを選択します。
- Asset namespace: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | 論理 |
---|---|---|
Action |
security_result.action_details |
元のログの Action の値が、この UDM フィールドに直接割り当てられます。 |
Action |
security_result.action |
このフィールドの値は、元のログの Action フィールドから取得されます。Action が「allow」の場合、UDM フィールドは ALLOW に設定されます。Action が「challengeSolved」、「jschallengeSolved」、「managedchallengenoninteractivesolved」、「managedchallengeinteractivesolved」の場合、UDM フィールドは ALLOW_WITH_MODIFICATION に設定されます。Action が「drop」、「block」、「connectionclose」の場合、UDM フィールドは BLOCK に設定されます。Action が「challengefailed」または「jschallengefailed」の場合、UDM フィールドは FAIL に設定されます。それ以外の場合は UNKNOWN_ACTION に設定されます。 |
ClientASN |
network.asn |
未加工ログの ClientASN の値は、文字列に変換された後、この UDM フィールドに直接割り当てられます。 |
ClientASNDescription |
additional.fields.key |
このキーは静的に「ClientASNDescription」に設定されています。 |
ClientASNDescription |
additional.fields.value.string_value |
未加工ログの ClientASNDescription の値が、この UDM フィールドに直接割り当てられます。 |
ClientCountry |
principal.location.country_or_region |
未加工ログの ClientCountry の値が、この UDM フィールドに直接割り当てられます。 |
ClientIP |
principal.ip |
未加工ログの ClientIP の値が、この UDM フィールドに直接割り当てられます。 |
ClientRefererHost |
intermediary.hostname |
未加工ログの ClientRefererHost の値が、この UDM フィールドに直接割り当てられます。 |
ClientRefererPath |
network.http.referral_url |
未加工ログの ClientRefererPath の値が、この UDM フィールドに直接割り当てられます。 |
ClientRequestHost |
target.hostname |
未加工ログの ClientRequestHost の値が、この UDM フィールドに直接割り当てられます。 |
ClientRequestMethod |
network.http.method |
未加工ログの ClientRequestMethod の値が、この UDM フィールドに直接割り当てられます。 |
ClientRequestPath |
target.file.full_path |
未加工ログの ClientRequestPath の値が、この UDM フィールドに直接割り当てられます。 |
ClientRequestProtocol |
network.application_protocol |
ClientRequestProtocol のプロトコル部分(例: 「HTTP/1.1」の「HTTP」)が grok を使用して抽出され、大文字に変換されてこの UDM フィールドに割り当てられます。 |
ClientRequestUserAgent |
network.http.user_agent |
未加工ログの ClientRequestUserAgent の値が、この UDM フィールドに直接割り当てられます。 |
Datetime |
metadata.event_timestamp |
未加工ログの Datetime の値は RFC 3339 タイムスタンプとして解析され、この UDM フィールドに割り当てられます。 |
EdgeColoCode |
additional.fields.key |
このキーは「EdgeColoCode」に静的に設定されています。 |
EdgeColoCode |
additional.fields.value.string_value |
未加工ログの EdgeColoCode の値が、この UDM フィールドに直接割り当てられます。 |
EdgeResponseStatus |
network.http.response_code |
未加工ログの EdgeResponseStatus の値は、この UDM フィールドに直接割り当てられ、整数に変換されます。 |
Kind |
metadata.product_event_type |
未加工ログの Kind の値が、この UDM フィールドに直接割り当てられます。 |
Metadata.filter |
target.resource.attribute.labels.value |
未加工ログの Metadata.filter の値は、target.resource.attribute.labels 内のラベルの value フィールドに割り当てられます。このラベルの key は、静的に「メタデータ フィルタ」に設定されています。 |
Metadata.type |
target.resource.attribute.labels.value |
未加工ログの Metadata.type の値は、target.resource.attribute.labels 内のラベルの value フィールドに割り当てられます。このラベルの key は、静的に「メタデータ タイプ」に設定されています。このフィールドの値は、ClientIP 、ClientRequestHost 、app_protocol の存在と値に基づいて導出されます。具体的なロジックについては、パーサーコードをご覧ください。静的に「Cloudflare」に設定されます。静的に「Cloudflare log Aggregator」に設定されます。静的に「CLOUDFLARE_WAF」に設定されます。 |
RayID |
metadata.product_log_id |
未加工ログの RayID の値が、この UDM フィールドに直接割り当てられます。 |
RuleID |
security_result.rule_id |
未加工ログの RuleID の値が、この UDM フィールドに直接割り当てられます。 |
Source |
security_result.rule_name |
未加工ログの Source の値が、この UDM フィールドに直接割り当てられます。 |
timestamp |
metadata.event_timestamp 、events.timestamp |
未加工ログの timestamp の値が、これらの UDM フィールドに直接割り当てられます。 |
変更
2024-08-08
- 「ClientRequestHost」と「ClientRequestURI」からデータを抽出し、統合して結果を「target.url」にマッピングしました。
2023-08-30
- フィールド「ClientRequestPath」を初期化しました。
2023-02-02
- イベントに統合する前に「security_result」値を検証しました。
2022-09-16
- フィールド「Action」を「security_result.action_details」にマッピングしました。
- アクションに「challengeSolved」、「jschallengeSolved」、「managedchallengenoninteractivesolved」、「managedchallengeinteractivesolved」が含まれている場合、「security_result.action」を「ALLOW_WITH_MODIFICATION」にマッピングしました。
- アクションに「drop」、「block」、「connectionclose」が含まれている場合に、「security_result.action」を「BLOCK」にマッピングしました。
- アクションに「challengefailed」、「jschallengefailed」が含まれている場合、「security_result.action」を「FAIL」にマッピングしました。
2022-07-25
- 新しく作成されたパーサー
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。