Cloudflare Page Shield のログを収集する
パーサーのバージョン: 1.0
このドキュメントでは、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 を有効にする
- Cloudflare ダッシュボードにログインします。
- アカウントとドメインを選択します。
- [Security] > [Page Shield] に移動します。
- [Enable Page Shield] をクリックします。
Amazon S3 バケットを作成する
- Amazon S3 コンソールを開きます。
- [バケットを作成] をクリックします。
- 次の構成情報を指定します。
- バケット名: バケットにわかりやすい名前を入力します(例:
cloudflare-pageshield-logs)。 - リージョン: 任意の AWS リージョン(
us-east-1など)を選択します。
- バケット名: バケットにわかりやすい名前を入力します(例:
- [作成] をクリックします。
- 後で参照できるように、バケット名とリージョンを保存します。
S3 アクセス権を持つ IAM ユーザーを作成する
- IAM コンソールを開きます。
- [ユーザー] > [ユーザーを追加] をクリックします。
- ユーザー名を入力します(例:
chronicle-s3-user)。 - [プログラマティック アクセス] を選択します。
- [Next: Permissions] をクリックします。
- [既存のポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索して選択します。
- [Next: Tags] をクリックします。
- [次へ: 確認] をクリックします。
- [Create user] をクリックします。
- [.csv ファイルをダウンロード] をクリックして、[アクセスキー ID] と [シークレット アクセスキー] を保存します。
Cloudflare の S3 バケット ポリシーを構成する
- Amazon S3 コンソールで、バケットを選択します。
- [権限] > [バケット ポリシー] をクリックします。
- [編集] をクリックします。
次のポリシーを貼り付けます。
<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"] } } ] }[変更を保存] をクリックします。
Cloudflare Logpush ジョブを作成する
- Cloudflare ダッシュボードにログインします。
- アカウントとドメインを選択します。
- [Analytics & Logs] > [Logs] に移動します。
- [Create a Logpush job] をクリックします。
- [Select a destination] で [Amazon S3] を選択します。
- 次の宛先情報を入力します。
- バケット名: S3 バケット名を入力します(例:
cloudflare-pageshield-logs)。 - バケットのリージョン: S3 バケットに一致するリージョンを選択します。
- バケットパス(省略可): パス接頭辞を入力します(例:
pageshield/)。
- バケット名: S3 バケット名を入力します(例:
- [続行] をクリックします。
- 所有権を証明するため、Cloudflare から指定された宛先にファイルが送信されます。トークンを確認するには、所有権の確認ファイルの [Overview] タブで [Open] ボタンを選択し、Cloudflare ダッシュボードに貼り付けて、バケットへのアクセス権を確認します。所有権トークンを入力し、[Continue] を選択します。
- [データセットを選択] で、[Page Shield イベント] を選択します。
- [次へ] をクリックします。
- Logpush ジョブを構成します。
- ジョブ名: わかりやすい名前を入力します(例:
pageshield-to-s3)。 - If logs match: すべてのイベントを含める場合は空のままにします。必要に応じてフィルタを構成します。
- 次のフィールドを送信: [すべてのフィールド] を選択するか、特定のフィールドを選択します。
- ジョブ名: わかりやすい名前を入力します(例:
- [送信] をクリックします。
Page Shield のログを取り込むように Google SecOps でフィードを構成する
- [設定] > [データ管理] > [フィード] に移動します。SIEM のみのプラットフォームを使用している場合は、[設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを構成する] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Cloudflare Page Shield S3)。 - [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [Cloudflare Page Shield] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
S3 URI: バケット URI を
s3://<BUCKET_NAME>/<BUCKET_PATH>/の形式で入力します。Source deletion option: 必要に応じて削除オプションを選択します。
- なし: 転送後にファイルを削除しません。
- 転送されたファイルを削除する: 転送が完了した後にファイルを削除します。
- 転送されたファイルと空のディレクトリを削除する: 転送が成功した後にファイルと空のディレクトリを削除します。
ファイルの最長存続期間: 過去数日間に変更されたファイルを含めます。デフォルトは 180 日です。
アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー。
シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー。
Asset namespace: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
[次へ] をクリックします。
[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 から取得した値。キー「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 のプロフェッショナルから回答を得ることができます。