Skip to content

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

GraphQL Analytics

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

GraphQL Analytics API を使い、トラフィックに一致したルールに関連する Cloudflare Network Firewall のネットワークトラフィックデータを確認します。対象には、Cloudflare Network Firewall ダッシュボードで設定したルールと、Cloudflare Network Firewall Managed rules および Cloudflare Network Firewall IDS の一部として Cloudflare が管理するルールの両方が含まれます。

始める前に、API トークン が必要です。GraphQL Analytics の始め方の詳細は、GraphQL Analytics API を参照してください。

Cloudflare Account ID を取得する

オブジェクト向けの Network Firewall GraphQL クエリを組み立てるには、Cloudflare Account ID が必要です。

Cloudflare Account ID を取得する

  1. Cloudflare ダッシュボード にログインし、アカウントを選びます。
  2. ブラウザーのアドレスバーの URL は https://dash.cloudflare.com/ のあとに 16 進文字列が続きます。この 16 進文字列が Cloudflare Account ID です。

ファイアウォールルールのルール ID を取得する

特定のルールの分析を集めるクエリを組み立てるには、各ファイアウォールルールのルール ID が必要です。

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

    Firewall policies を開く ↗
  2. Custom rules タブで、ルール ID が必要なルールを一覧から探し、三点メニュー > Edit を選びます。

  3. Rule ID を探して、コピーボタンを選びます。

  4. Cancel を選び、Cloudflare Network Firewall ページに戻ります。

Cloudflare Network Firewall のクエリ例で GraphQL スキーマを調べる

このセクションでは、設定済みのすべての Cloudflare Network Firewall ルールについて、5 分間隔の 5 分間カウントを取得するテストクエリを実行します。次のコードを GraphiQL にコピーして貼り付けられます。

Analytics スキーマの詳細は、GraphiQL で Analytics スキーマを調べる を参照してください。

query MagicFirewallExample($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicFirewallSamplesAdaptiveGroups(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 2
				orderBy: [datetimeFiveMinute_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					datetimeFiveMinute
					ruleId
				}
			}
		}
	}
}

Cloudflare Network Firewall 向けのクエリ例

特定のルールの分析を取得する

次の例を使い、直近 1 時間における、悪意がある疑いのある上位 10 件のトラフィックストリームについて、パケット数とビット数の合計を表示します。結果を受け取ったあと、5 分間平均のパケットレートで並べ替えられます。

各ストリームについて、次を表示します。

  • 送信元 IP アドレスと宛先 IP アドレス
  • それを受信した Ingress の Cloudflare データセンター
  • 1 時間以内に受信したビット数とパケット数の合計トラフィック量
  • ファイアウォールルールが取ったアクション
query MagicFirewallObtainRules(
	$accountId: string!
	$ruleId: string
	$start: Time
	$end: Time
) {
	viewer {
		accounts(filter: { accountTag: $accountId }) {
			magicFirewallNetworkAnalyticsAdaptiveGroups(
				filter: { ruleId: $ruleId, datetime_geq: $start, datetime_leq: $end }
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
					outcome
				}
			}
		}
	}
}

IDS 分析を取得する

次の例を使い、直近 1 時間に Cloudflare Network Firewall IDS が検出した上位 10 件のトラフィックストリームについて、パケット数とビット数の合計を表示します。

verdictdropoutcomepass に設定すると、検出としてマークされた(つまり verdict が drop)一方でドロップされなかった(たとえば outcome が pass)トラフィックを絞り込んでいます。現時点では、Cloudflare Network Firewall IDS は悪意のあるトラフィックを検出するだけで、トラフィックはドロップしないためです。

各ストリームについて、次を表示します。

  • 送信元 IP アドレスと宛先 IP アドレス。
  • それを受信した Ingress の Cloudflare データセンター。
  • 1 時間以内に受信したビット数とパケット数の合計トラフィック量。
query MagicFirewallObtainIDS($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicIDPSNetworkAnalyticsAdaptiveGroups(
				filter: {
					datetime_geq: $start
					datetime_leq: $end
					verdict: drop
					outcome: pass
				}
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
				}
			}
		}
	}
}

あるいは、分析対象のすべてのトラフィックを調べつつ、悪意のあるトラフィックとその他のトラフィックにグループ化する場合は、次の例を使えます。レスポンスには、5 分ごとのタイムスタンプにつき 2 件のエントリが含まれます。悪意のあるトラフィックでは verdictdrop になり、いずれの IDS ルールにも一致しなかったトラフィックでは verdictpass になります。

query MagicFirewallTraffic($accountTag: string!, $start: Time, $end: Time) {
	viewer {
		accounts(filter: { accountTag: $accountTag }) {
			magicIDPSNetworkAnalyticsAdaptiveGroups(
				filter: { datetime_geq: $start, datetime_leq: $end }
				limit: 10
				orderBy: [avg_packetRateFiveMinutes_DESC]
			) {
				sum {
					bits
					packets
				}
				dimensions {
					coloCity
					ipDestinationAddress
					ipSourceAddress
					verdict
				}
			}
		}
	}
}

役に立ちましたか?