Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

コンテンツセキュリティルールの違反

最終更新 Markdown で表示Agent セットアップ

ルール違反は、ブラウザーが コンテンツセキュリティルール のいずれにも含まれないリソースを読み込んだときに発生します。ログルールでは、リソースは通常どおり読み込まれ、報告だけされます。許可ルールでは、ブラウザーがリソースをブロックします。

コンテンツセキュリティルールを設定すると、まもなく Cloudflare ダッシュボードにそれらのルールの違反が表示されます。この情報は、AllowLog のいずれのアクション のルールでも利用できます。

ルール違反の情報は GraphQL APILogpush でも取得できます。

ダッシュボードでルール違反を確認する

ルール違反の情報を確認する手順は次のとおりです。

  1. Cloudflare ダッシュボードで Security rules ページを開きます。

    Security rules を開く ↗
  2. (任意)Content security rules で絞り込みます。

表示される情報は次のとおりです。

  • ルール名の横にあるスパークライン。過去 7 日間の違反を示します。
  • 違反があるコンテンツセキュリティルールでは、各ルールの詳細を展開できます。違反イベントに含まれる上位リソースと、上位リソースごとのスパークラインが表示されます。

GraphQL API でルール違反を取得する

Cloudflare GraphQL API を使い、次のデータセットからルール違反の情報を取得します。

  • pageShieldReportsAdaptiveGroups

過去 30 日以内に発生したルール違反を、このデータセットに対してクエリできます。

GraphQL スキーマで利用できるフィールドは、イントロスペクション で調べます。詳しくは GraphQL スキーマを調べる を参照してください。

GraphQL クエリの入門は、クエリの基本 を参照してください。

GraphQL クエリの例graphql
query PageShieldReports(
	$zoneTag: string
	$datetimeStart: Time
	$datetimeEnd: Time
) {
	viewer {
		zones(filter: { zoneTag: $zoneTag }) {
			pageShieldReportsAdaptiveGroups(
				limit: 100
				orderBy: [datetime_ASC]
				filter: { datetime_geq: $datetimeStart, datetime_leq: $datetimeEnd }
			) {
				avg {
					sampleInterval
				}
				count
				dimensions {
					policyID
					datetime
					datetimeMinute
					datetimeFiveMinutes
					datetimeFifteenMinutes
					datetimeHalfOfHour
					datetimeHour
					url
					urlHost
					host
					resourceType
					pageURL
					action
				}
			}
		}
	}
}

curl リクエストの例

echo '{ "query":
  "query PageShieldReports($zoneTag: string, $datetimeStart: string, $datetimeEnd: string) {
    viewer {
      zones(filter: {zoneTag: $zoneTag}) {
        pageShieldReportsAdaptiveGroups(limit: 100,  orderBy: [datetime_ASC], filter: {datetime_geq:$datetimeStart, datetime_leq:$datetimeEnd}) {
          avg {
            sampleInterval
          }
          count
          dimensions {
            policyID
            datetime
            datetimeMinute
            datetimeFiveMinutes
            datetimeFifteenMinutes
            datetimeHalfOfHour
            datetimeHour
            url
            urlHost
            host
            resourceType
            pageURL
            action
          }
        }
      }
    }
  }",
  "variables": {
    "zoneTag": "<CLOUDFLARE_ZONE_ID>",
    "datetimeStart": "2023-04-17T11:00:00Z",
    "datetimeEnd": "2023-04-24T12:00:00Z"
  }
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--header "Content-Type: application/json" \
--data @-

Logpush でルール違反を取得する

Cloudflare Logpush は、ログをストレージサービス、SIEM システム、ログ管理プロバイダーへ送信できます。

ルール違反の情報は page_shield_events データセット にあります。

Logpush ジョブの設定について詳しくは、Logpush のドキュメントを参照してください。

役に立ちましたか?