Cloudflare Page Shield ログを収集する

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

このドキュメントでは、Amazon S3 を使用して Cloudflare Page Shield ログを Google Security Operations に取り込む方法について説明します。

Page Shield は、ウェブサイト訪問者が読み込んだリソース(スクリプト、接続、Cookie など)を管理し、リソースが変更された場合や悪意のあるリソースと見なされた場合にアラート通知をトリガーします。

始める前に

  • Google SecOps インスタンス
  • Page Shield が有効になっている Cloudflare アカウント
  • Cloudflare ダッシュボードへの特権アクセス
  • AWS(S3、IAM)への特権アクセス

このオプションでは、Cloudflare Logpush を使用して Page Shield イベントを Amazon S3 にエクスポートし、Google SecOps が取り込みます。

Page Shield を有効にする

  1. Cloudflare ダッシュボードにログインします。
  2. アカウントとドメインを選択します。
  3. [セキュリティ> Page Shield] に移動します。
  4. [Page Shield を有効にする] をクリックします。

Amazon S3 バケットを作成する

  1. Amazon S3 コンソールを開きます。
  2. [バケットを作成] をクリックします。
  3. 次の構成の詳細を指定します。
    • バケット名: バケットのわかりやすい名前を入力します(例: cloudflare-pageshield-logs)。
    • リージョン: 使用する AWS リージョン(us-east-1 など)を選択します。
  4. [作成] をクリックします。
  5. バケット名とリージョンを保存して、後で参照できるようにします。

S3 アクセス権を持つ IAM ユーザーを作成する

  1. IAM コンソールを開きます。
  2. [ユーザー] > [ユーザーを追加] をクリックします。
  3. ユーザー名を入力します(例: chronicle-s3-user)。
  4. [プログラムによるアクセス] を選択します。
  5. [Next: Permissions] をクリックします。
  6. [既存のポリシーを直接アタッチする] を選択します。
  7. AmazonS3FullAccess ポリシーを検索して選択します。
  8. [Next: Tags] をクリックします。
  9. [次へ: 確認] をクリックします。
  10. [Create user] をクリックします。
  11. [.csv ファイルをダウンロード] をクリックして、[アクセスキー ID] と [シークレット アクセスキー] を保存します。

Cloudflare 用に S3 バケット ポリシーを構成する

  1. Amazon S3 コンソールで、バケットを選択します。
  2. [権限> バケット ポリシー] をクリックします。
  3. [編集] をクリックします。
  4. 次のポリシーを貼り付けます。<BUCKET_NAME> はバケット名に置き換えます。

    {
      "Id": "Policy1506627184792",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1506627150918",
          "Action": ["s3:PutObject"],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::<BUCKET_NAME>/*",
          "Principal": {
            "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"]
          }
        }
      ]
    }
    
  5. [変更を保存] をクリックします。

Cloudflare Logpush ジョブを作成する

  1. Cloudflare ダッシュボードにログインします。
  2. アカウントとドメインを選択します。
  3. [Analytics & Logs] > [Logs] に移動します。
  4. [Create a Logpush job] をクリックします。
  5. [Select a destination] で、[Amazon S3] を選択します。
  6. 次の宛先情報を入力します。
    • バケット名: S3 バケット名(cloudflare-pageshield-logs など)を入力します。
    • バケット リージョン: S3 バケットと一致するリージョンを選択します。
    • バケットパス(省略可): パス接頭辞(pageshield/ など)を入力します。
  7. [続行] をクリックします。
  8. 所有権を証明するため、Cloudflare は指定された宛先にファイルを送信します。トークンを確認するには、所有権の確認ファイルの [概要] タブで [開く] ボタンを選択し、Cloudflare ダッシュボードに貼り付けて、バケットへのアクセス権を確認します。所有権トークンを入力し、[Continue] を選択します。
  9. [データセットを選択] で、[Page Shield イベント] を選択します。
  10. [次へ] をクリックします。
  11. ログプッシュ ジョブを構成します。
    • ジョブ名: わかりやすい名前を入力します(例: pageshield-to-s3)。
    • ログが一致する場合: すべてのイベントを含める場合は空白のままにします。必要に応じてフィルタを構成します。
    • Send the following fields: [All fields] を選択するか、特定のフィールドを選択します。
  12. [送信] をクリックします。

Page Shield のログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. 次のページで [単一のフィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: Cloudflare Page Shield S3)。
  5. [ソースタイプ] として [Amazon S3 V2] を選択します。
  6. [Log type] として [Cloudflare Page Shield] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • S3 URI: バケット URI を s3://<BUCKET_NAME>/<BUCKET_PATH>/ の形式で入力します。

    • Source deletion option: 必要に応じて削除オプションを選択します。

      • なし: 転送後にファイルを削除しません。
      • 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。
    • ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。

    • アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。

    • シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。

    • アセットの名前空間: アセットの名前空間

    • Ingestion labels: このフィードのイベントに適用されるラベル。

  9. [次へ] をクリックします。

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

UDM マッピング テーブル

ログフィールド UDM マッピング 論理
URLContainsCDNCGIPath event.idm.read_only_udm.additional.fields.CGI_label URLContainsCDNCGIPath から取得した値。キー「CGI」を持つラベルの string_value として設定
アクション event.idm.read_only_udm.additional.fields.action_label Action から値を取得し、キーが「action」のラベルで string_value として設定
resource.first_page_url event.idm.read_only_udm.additional.fields.first_page_label resource.first_page_url から取得した値。キー「first_page_url」を持つラベルの string_value として設定
resource.last_page_url event.idm.read_only_udm.additional.fields.last_page_label resource.last_page_url から取得した値。キー「last_page_url」のラベルの string_value として設定
name event.idm.read_only_udm.additional.fields.name_label 名前から取得した値。キー「name」のラベルの string_value として設定
ts event.idm.read_only_udm.metadata.event_timestamp ts(UNIX)からタイムスタンプに変換
event.idm.read_only_udm.metadata.event_type has_principal、has_target、has_target_user に基づいて派生します。プリンシパルとターゲットの両方が存在する場合は NETWORK_CONNECTION、target_user が存在する場合は USER_UNCATEGORIZED、プリンシパルが存在する場合は STATUS_UPDATE、それ以外の場合は GENERIC_EVENT
resource.url event.idm.read_only_udm.network.http.referral_url resource.url から取得された値
ホスト event.idm.read_only_udm.principal.asset.hostname Host または host.hostname から取得した値
ホスト event.idm.read_only_udm.principal.hostname Host または host.hostname から取得した値
alert_type event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label alert_type から取得した値。キー「alert_type」のラベルの値として設定
resource.cryptomining_score event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label resource.cryptomining_score から取得した値。キー「cryptominingscore%{index2}」のラベルの値として設定
resource.dataflow_score event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label resource.dataflow_score から取得した値。キー「dataflowscore%{index2}」のラベルの値として設定
policie.description event.idm.read_only_udm.principal.resource.attribute.labels.desc_label policie.description から取得した値。キー「description_%{index}」のラベルの値として設定
version.fetched_at event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label version.fetched_at から取得した値。キー「fetchedat%{index2}」のラベルの値として設定
version.hash event.idm.read_only_udm.principal.resource.attribute.labels.hash_label version.hash から取得した値。キー「hash_%{index2}」のラベルの値として設定
policie.id event.idm.read_only_udm.principal.resource.attribute.labels.id_label policie.id から取得した値。キー「policyid%{index}」のラベルの値として設定
data.options.remove_dashboard_links event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label data.options.remove_dashboard_links から取得した値。キー「remove_dashboard_links」のラベルの値として設定
resource.resource_type event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label resource.resource_type から取得した値。キー「resourcetype%{index2}」のラベルの値として設定
data.type event.idm.read_only_udm.principal.resource.attribute.labels.type_label data.type から取得した値。キー「type」のラベルの値として設定
data.zones event.idm.read_only_udm.principal.resource.attribute.labels.zones_label data.zones から取得した値。キー「zones」のラベルの値として設定
resource.id event.idm.read_only_udm.principal.resource.id resource.id から取得した値
PageURL event.idm.read_only_udm.principal.url PageURL から取得された値
account_id event.idm.read_only_udm.principal.user.product_object_id account_id から取得された値
policy_id event.idm.read_only_udm.security_result.detection_fields.policy_id_label policy_id から取得した値。キー「policy_id」のラベルの値として設定
policy_name event.idm.read_only_udm.security_result.detection_fields.policy_name_label policy_name から取得された値。キー「policy_name」のラベルの値として設定
テキスト event.idm.read_only_udm.security_result.description テキストから取得した値
resource.first_seen_at event.idm.read_only_udm.security_result.first_discovered_time resource.first_seen_at から ISO8601 タイムスタンプに変換
PolicyID event.idm.read_only_udm.security_result.rule_name PolicyID から取得した値
data.severity event.idm.read_only_udm.security_result.severity data.severity から派生します。「INFO」の場合は「INFORMATIONAL」、「WARN」の場合は「MEDIUM」、それ以外の場合は「UNKNOWN_SEVERITY」
URL event.idm.read_only_udm.target.url URL から取得された値
URLHost event.idm.read_only_udm.target.user.email_addresses メール パターンと一致する場合、URLHost から取得された値

ご不明な点がございましたら、コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。