ルール違反は、ブラウザーが コンテンツセキュリティルール のいずれにも含まれないリソースを読み込んだときに発生します。ログルールでは、リソースは通常どおり読み込まれ、報告だけされます。許可ルールでは、ブラウザーがリソースをブロックします。
コンテンツセキュリティルールを設定すると、まもなく Cloudflare ダッシュボードにそれらのルールの違反が表示されます。この情報は、Allow と Log のいずれのアクション のルールでも利用できます。
ルール違反の情報は GraphQL API と Logpush でも取得できます。
ルール違反の情報を確認する手順は次のとおりです。
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
(任意)Content security rules で絞り込みます。
表示される情報は次のとおりです。
- ルール名の横にあるスパークライン。過去 7 日間の違反を示します。
- 違反があるコンテンツセキュリティルールでは、各ルールの詳細を展開できます。違反イベントに含まれる上位リソースと、上位リソースごとのスパークラインが表示されます。
Cloudflare GraphQL API を使い、次のデータセットからルール違反の情報を取得します。
pageShieldReportsAdaptiveGroups
過去 30 日以内に発生したルール違反を、このデータセットに対してクエリできます。
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 @-Cloudflare Logpush は、ログをストレージサービス、SIEM システム、ログ管理プロバイダーへ送信できます。
ルール違反の情報は page_shield_events データセット にあります。
Logpush ジョブの設定について詳しくは、Logpush のドキュメントを参照してください。