Cloudflare のログを収集する

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

このドキュメントでは、Webhook(HTTP 宛先)または Google Cloud Storage を使用して Cloudflare ログを Google Security Operations に取り込む方法について説明します。Cloudflare は、DNS、HTTP、監査、ゼロトラスト、CASB のログ形式で運用データを生成します。この統合により、これらのログを Google SecOps に送信して分析とモニタリングを行うことができます。パーサーは、まず空のフィールドのセットを初期化し、JSON 形式の Cloudflare ログを解析して、有効な JSON ではないメッセージを削除します。次に、コードは特定のフィールドの有無と値に基づいて条件付きロジックを使用して Cloudflare プロダクトとイベントタイプを特定し、それに応じて統合データモデル(UDM)フィールドに入力します。

始める前に

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

  • Google SecOps インスタンス。
  • LogPush が有効になっている Cloudflare Enterprise アカウント。
  • Webhook メソッドの場合: Google Cloud コンソールへの特権アクセス。
  • Google Cloud Storage メソッドの場合: Google Cloud Storage への特権アクセス権。

方法 1: Webhook(HTTP 宛先)を使用して Cloudflare ログのエクスポートを構成する

この方法では、中間ストレージを使用せずに Cloudflare ログを Google SecOps に直接ストリーミングできます。

Google SecOps で Webhook フィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Cloudflare Webhook)。
  4. [Source type] として [Webhook] を選択します。
  5. [ログタイプ] として [Cloudflare] を選択します。
  6. [次へ] をクリックします。
  7. 次の入力パラメータの値を指定します。
    • 分割区切り文字: \n
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. このシークレットは再び表示できないため、秘密鍵をコピーして保存します。
  12. [詳細] タブに移動します。
  13. [エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。
  14. [完了] をクリックします。

Webhook フィード用の API キーを作成する

  1. Google Cloud コンソール > [API とサービス] > [認証情報] に移動します。
  2. [認証情報を作成] をクリックして [API キー] を選択します。
  3. [API キーを編集] をクリックします。
  4. [API の制限] で [キーを制限] を選択します。
  5. リストから [Google SecOps API] を選択します。
  6. [保存] をクリックします。
  7. API キーの値をコピーします。

Cloudflare LogPush HTTP 転送先を構成する

  1. Cloudflare ダッシュボードにログインします。
  2. LogPush で使用するエンタープライズ アカウントまたはドメインを選択します。
  3. [Analytics & Logs > Logpush] に移動します。
  4. [Create a Logpush job] をクリックします。
  5. [宛先を選択してください] で [HTTP 宛先] を選択します。
  6. 認証パラメータを含む HTTP エンドポイント URL を入力します。

    <ENDPOINT_URL>?header_X-goog-api-key=<API_KEY>&header_X-Webhook-Access-Key=<SECRET_KEY>
    

    次のように置き換えます。

    • <ENDPOINT_URL>: Google SecOps のフィード エンドポイント URL。
    • <API_KEY>: Google Cloud コンソールの API キー(特殊文字が含まれている場合は URL エンコード)。
    • <SECRET_KEY>: Webhook フィードのシークレット キー(特殊文字が含まれている場合は URL エンコード)。
  7. [続行] をクリックします。

  8. プッシュするデータセット(HTTP リクエストDNS監査ゼロトラストCASB など)を選択します。

  9. ログプッシュ ジョブを構成します。

    • [ジョブ名] を入力します。
    • 省略可: [ログが一致する場合] で、フィルタを構成します。
    • [次のフィールドを送信] で、含めるフィールドを選択します。
    • タイムスタンプ形式を選択します(RFC3 339 を推奨)。
    • 必要に応じてサンプリング レートを構成します。
  10. [送信] をクリックして、ログプッシュ ジョブを作成します。

Webhook 統合を確認する

構成後、ログは数分以内に Google SecOps に表示されます。確認する方法を次に示します。

  1. [Investigation] > [SIEM Search] に移動します。
  2. 構成した取り込みラベルでログを検索します。
  3. Cloudflare ログが正しく解析されていることを確認します。

方法 2: Google Cloud Storage を使用して Cloudflare ログのエクスポートを構成する

Cloudflare にログを push するように構成します。これには、Cloudflare に必要な権限を付与する必要があります。

Google Cloud バケットを作成する

  1. Google Cloud コンソールにログインします。
  2. [Cloud Storage バケット] のページに移動します。
  3. [作成] をクリックします。
  4. [バケットの作成] ページで、バケット情報を入力します。
    • 名前: バケット名の要件を満たす一意の名前を入力します(例: cloudflare-data)。
    • ロケーション タイプ: ロケーション タイプとリージョンを選択します。
    • 階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] を開き、[このバケットで階層的な名前空間を有効にする] を選択します。
  5. [作成] をクリックします。

バケットに権限を付与する

  1. Cloud Storage コンソールで、前に作成したバケットを選択します。
  2. [権限] タブをクリックします。
  3. [アクセス権を付与] をクリックします。
  4. Storage オブジェクト管理者権限を持つアカウント logpush@cloudflare-data.iam.gserviceaccount.com を追加します。
  5. [保存] をクリックします。

Cloudflare LogPush を Google Cloud Storage に構成する

  1. Cloudflare ダッシュボードにログインします。
  2. LogPush で使用するエンタープライズ アカウントまたはドメインを選択します。
  3. [Analytics & Logs > Logpush] に移動します。
  4. [Create a Logpush job] をクリックします。
  5. [宛先を選択してください] で [Google Cloud Storage] を選択します。
  6. Google Cloud Storage バケットのパス(gs://cloudflare-data/logs/ など)を入力します。
  7. [続行] をクリックします。

  8. [所有権トークン] を入力し、[続行] をクリックします。

  9. ストレージに push するデータセットを選択します。

  10. ログプッシュ ジョブを構成します。

    • [ジョブ名] を入力します。
    • [If logs match] で、ログに含めるイベントやログから削除するイベントを選択できます。
    • [Send the following fields] で、push するログを選択します。
    • タイムスタンプ形式を選択します(RFC 339 を推奨)。
    • 必要に応じてサンプリング レートを構成します。
  11. [送信] をクリックします。

Google Cloud Storage から Cloudflare のログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM Settings] > [Feeds] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: Cloudflare GCS Logs)。
  4. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  5. [ログタイプ] として [Cloudflare] を選択します。
  6. [サービス アカウントを取得する] をクリックします。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • Storage Bucket URI:gs://my-bucket/<value>/ 形式の Google Cloud バケット URL。この URL は、末尾にスラッシュ(/)が付いている必要があります。
    • Source deletion options: 必要に応じて削除オプションを選択します。
    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
    • アセットの名前空間: アセットの名前空間
    • Ingestion labels: このフィードのイベントに適用されるラベル。
  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
ClientIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
値は ClientIP フィールドから取得されます。
ClientRequestHost read_only_udm.target.asset.hostname
read_only_udm.target.hostname
値は ClientRequestHost フィールドから取得されます。
ClientRequestMethod read_only_udm.network.http.method 値は ClientRequestMethod フィールドから取得されます。
ClientRequestURI read_only_udm.target.url 値は ClientRequestURI フィールドから取得されます。ClientRequestHost フィールドが空でない場合、値は ClientRequestHost フィールドと連結されます。
ClientSrcPort read_only_udm.principal.port 値は ClientSrcPort フィールドから取得されます。
ClientRequestUserAgent read_only_udm.network.http.user_agent 値は ClientRequestUserAgent フィールドから取得されます。
ClientSSLCipher read_only_udm.network.tls.cipher 値は ClientSSLCipher フィールドから取得されます。
ClientSSLProtocol read_only_udm.network.tls.version 値は ClientSSLProtocol フィールドから取得されます。
read_only_udm.target.location.country_or_region 値は [国] フィールドから取得されます。
CreatedAt read_only_udm.metadata.event_timestamp 値は CreatedAt フィールドから取得されます。
日時 read_only_udm.metadata.event_timestamp 値は Datetime フィールドから取得されます。
DestinationIP read_only_udm.target.asset.ip
read_only_udm.target.ip
値は DestinationIP フィールドから取得されます。
DestinationPort read_only_udm.target.port 値は DestinationPort フィールドから取得されます。
DeviceID read_only_udm.principal.asset_id 値は DeviceID フィールドから取得され、「Cloudflare:」という接頭辞が付いています。
DeviceName read_only_udm.principal.asset.hostname
read_only_udm.principal.hostname
値は DeviceName フィールドから取得されます。
DstIP read_only_udm.target.asset.ip
read_only_udm.target.ip
値は DstIP フィールドから取得されます。
DstPort read_only_udm.target.port 値は DstPort フィールドから取得されます。
EdgeResponseBytes read_only_udm.network.received_bytes 値は EdgeResponseBytes フィールドから取得されます。
EdgeResponseStatus read_only_udm.network.http.response_code 値は EdgeResponseStatus フィールドから取得されます。
EdgeServerIP read_only_udm.target.asset.ip
read_only_udm.target.ip
値は EdgeServerIP フィールドから取得されます。
メール read_only_udm.principal.user.email_addresses
read_only_udm.target.user.email_addresses
値は [メールアドレス] フィールドから取得されます。
FirewallMatchesActions read_only_udm.security_result.action FirewallMatchesAction フィールドが「allow」、「Allow」、「ALLOW」、「skip」、「SKIP」、「Skip」の場合、値は「ALLOW」に設定されます。FirewallMatchesAction フィールドが「challengeSolved」または「jschallengeSolved」の場合、「ALLOW_WITH_MODIFICATION」に設定されます。FirewallMatchesAction フィールドが「drop」または「block」の場合、「BLOCK」に設定されます。FirewallMatchesAction フィールドが空でない場合、「UNKNOWN_ACTION」に設定されます。
FirewallMatchesRuleIDs read_only_udm.security_result.rule_id 値は FirewallMatchesRuleIDs フィールドから取得されます。
FirewallMatchesSources read_only_udm.security_result.rule_name 値は FirewallMatchesSources フィールドから取得されます。
HTTPMethod read_only_udm.network.http.method 値は HTTPMethod フィールドから取得されます。
HTTPHost read_only_udm.target.hostname 値は HTTPHost フィールドから取得されます。
HTTPVersion read_only_udm.network.application_protocol 値は HTTPVersion フィールドから取得されます。値に「HTTP」が含まれている場合は、「HTTP」に置き換えられます。
IPAddress read_only_udm.target.asset.ip
read_only_udm.target.ip
値は IPAddress フィールドから取得されます。
IsIsolated read_only_udm.about.labels
read_only_udm.security_result.about.resource.attribute.labels
値は IsIsolated フィールドから取得され、文字列に変換されます。
場所 read_only_udm.principal.location.name 値は [Location] フィールドから取得されます。
OriginIP read_only_udm.intermediary.ip
read_only_udm.target.asset.ip
read_only_udm.target.ip
値は OriginIP フィールドから取得されます。
OriginPort read_only_udm.target.port 値は OriginPort フィールドから取得されます。
OwnerID read_only_udm.target.user.product_object_id 値は OwnerID フィールドから取得されます。
ポリシー read_only_udm.security_result.rule_name 値は Policy フィールドから取得されます。
PolicyID read_only_udm.security_result.rule_id 値は PolicyID フィールドから取得されます。
PolicyName read_only_udm.security_result.rule_name 値は PolicyName フィールドから取得されます。
プロトコル read_only_udm.network.ip_protocol 値は Protocol フィールドから取得され、大文字に変換されます。
QueryCategoryIDs read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
値は QueryCategoryIDs フィールドから取得されます。
QueryName read_only_udm.network.dns.questions.name 値は QueryName フィールドから取得されます。
QueryNameReversed read_only_udm.network.dns.questions.name 値は QueryNameReversed フィールドから取得されます。
QuerySize read_only_udm.network.sent_bytes 値は QuerySize フィールドから取得されます。
QueryType read_only_udm.network.dns.questions.type 値は QueryType フィールドから取得されます。値が既知の DNS レコードタイプのいずれかである場合、対応する数値にマッピングされます。それ以外の場合、値は文字列に変換されます。
RData read_only_udm.network.dns.answers 値は RData フィールドから取得されます。type フィールドは符号なし整数に変換されます。
RayID read_only_udm.metadata.product_log_id 値は RayID フィールドから取得されます。
リファラー read_only_udm.network.http.referral_url 値は Referer フィールドから取得されます。
RequestID read_only_udm.metadata.product_log_id 値は RequestID フィールドから取得されます。
ResolverDecision read_only_udm.security_result.summary 値は ResolverDecision フィールドから取得されます。
ResourceID read_only_udm.target.resource.id
read_only_udm.target.resource.product_object_id
値は ResourceID フィールドから取得されます。
ResourceType read_only_udm.target.resource.resource_subtype 値は ResourceType フィールドから取得されます。
SNI read_only_udm.network.tls.client.server_name 値は SNI フィールドから取得されます。
SecurityAction read_only_udm.security_result.action SecurityAction フィールドが空または sec_action フィールドが空の場合、値は「ALLOW」に設定されます。SecurityAction フィールドが「challengeSolved」または「jschallengeSolved」の場合、「ALLOW_WITH_MODIFICATION」に設定されます。SecurityAction フィールドが「drop」または「block」の場合、「BLOCK」に設定されます。
SecurityLevel read_only_udm.security_result.severity 値は SecurityLevel フィールドから取得され、対応する UDM 重大度値にマッピングされます。
SessionID read_only_udm.network.session_id 値は SessionID フィールドから取得されます。
SessionStartTime read_only_udm.metadata.event_timestamp 値は SessionStartTime フィールドから取得されます。
SourceIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
read_only_udm.src.asset.ip
read_only_udm.src.ip
値は SourceIP フィールドから取得されます。
SourcePort read_only_udm.principal.port
read_only_udm.src.port
値は SourcePort フィールドから取得されます。
SrcIP read_only_udm.principal.asset.ip
read_only_udm.principal.ip
値は SrcIP フィールドから取得されます。
SrcPort read_only_udm.principal.port 値は SrcPort フィールドから取得されます。
TemporaryAccessDuration read_only_udm.network.session_duration.seconds 値は TemporaryAccessDuration フィールドから取得されます。
タイムスタンプ read_only_udm.metadata.event_timestamp 値は Timestamp フィールドから取得されます。
トランスポート read_only_udm.network.ip_protocol 値は Transport フィールドから取得され、大文字に変換されます。
URL read_only_udm.target.url 値は URL フィールドから取得されます。
UserAgent read_only_udm.network.http.user_agent 値は UserAgent フィールドから取得されます。
UserID read_only_udm.principal.user.product_object_id 値は UserID フィールドから取得されます。
UserUID read_only_udm.target.user.product_object_id 値は UserUID フィールドから取得されます。
VirtualNetworkID read_only_udm.principal.resource.product_object_id 値は VirtualNetworkID フィールドから取得されます。
WAFAction read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
値は WAFAction フィールドから取得されます。
WAFAttackScore read_only_udm.security_result.about.resource.attribute.labels 値は WAFAttackScore フィールドから取得されます。
WAFFlags read_only_udm.security_result.about.resource.attribute.labels 値は WAFFlags フィールドから取得されます。
WAFProfile read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
値は WAFProfile フィールドから取得されます。
WAFRCEAttackScore read_only_udm.security_result.about.resource.attribute.labels 値は WAFRCEAttackScore フィールドから取得されます。
WAFRuleID read_only_udm.security_result.about.labels
read_only_udm.security_result.about.resource.attribute.labels
read_only_udm.security_result.threat_id
値は WAFRuleID フィールドから取得されます。
WAFRuleMessage read_only_udm.security_result.rule_name
read_only_udm.security_result.threat_name
値は WAFRuleMessage フィールドから取得されます。
WAFSQLiAttackScore read_only_udm.security_result.about.resource.attribute.labels 値は WAFSQLiAttackScore フィールドから取得されます。
WAFXSSAttackScore read_only_udm.security_result.about.resource.attribute.labels 値は WAFXSSAttackScore フィールドから取得されます。
ZoneID read_only_udm.additional.fields 値は ZoneID フィールドから取得されます。
read_only_udm.metadata.log_type 値は「CLOUDFLARE」に設定されます。
read_only_udm.metadata.product_name ログが DNS ログの場合は「Cloudflare Gateway DNS」、ログが Gateway HTTP ログの場合は「Cloudflare Gateway HTTP」、ログが監査ログの場合は「Cloudflare Audit」、それ以外の場合は「Web Application Firewall」に設定されます。
read_only_udm.metadata.vendor_name 値は「Cloudflare」に設定されます。
read_only_udm.network.application_protocol ログが DNS ログの場合は「DNS」、HTTPVersion フィールドに「HTTP」が含まれている場合は「HTTP」、Protocol フィールドが空でなく、「tls」または「TLS」でない場合は、Protocol フィールドの値を大文字に変換した値が設定されます。
read_only_udm.network.direction EgressIP フィールドが空でない場合、値は「OUTBOUND」に設定されます。
read_only_udm.network.http.parsed_user_agent 値は UserAgent フィールドまたは ClientRequestUserAgent フィールドから取得され、parseduseragent フィルタを使用して解析されます。
read_only_udm.extensions.auth.type Action フィールドが「login」または「logout」の場合、値は「MACHINE」に設定されます。
read_only_udm.metadata.event_type ログが DNS ログの場合は「NETWORK_DNS」、ログが Gateway HTTP ログの場合は「NETWORK_CONNECTION」、ログが監査ログで ActorIP フィールドと ActorEmail フィールドが空の場合は「USER_RESOURCE_ACCESS」、ログが監査ログで ResourceType フィールドと newvalue フィールドが空でない場合は「USER_RESOURCE_UPDATE_CONTENT」、Action フィールドが「login」の場合は「USER_LOGIN」、Action フィールドが「logout」の場合は「USER_LOGOUT」、Email フィールドが空でなくメールアドレス形式と一致する場合は「USER_RESOURCE_ACCESS」、EgressIP フィールドと SourceIP フィールドが空でないか OriginIP フィールドと SourceIP フィールドが空でない場合は「NETWORK_CONNECTION」に設定されます。
read_only_udm.target.file.mime_type 値は EdgeResponseContentType フィールドから取得されます。
read_only_udm.target.location.country_or_region 値は [国] フィールドから取得されます。
read_only_udm.target.resource.id 値は、AccountID フィールドまたは ResourceID フィールドから取得されます。
read_only_udm.target.resource.product_object_id 値は、AccountID フィールド、AppUUID フィールド、または ResourceID フィールドから取得されます。
read_only_udm.target.user.product_object_id 値は OwnerID フィールドまたは UserUID フィールドから取得されます。

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