跳转到内容
搜索文档

GraphQL 分析

最后更新 查看 MarkdownAgent 设置

使用 GraphQL Analytics API 查看与匹配您流量的规则相关的 Cloudflare Network Firewall 网络流量数据。这既包含您在 Cloudflare Network Firewall 仪表板中配置的规则,也包含由 Cloudflare 作为 Cloudflare Network Firewall 托管规则Cloudflare Network Firewall IDS 功能的一部分进行管理的规则。

在开始之前,您必须拥有一个 API 令牌。有关 GraphQL Analytics 入门的更多帮助,请参阅 GraphQL Analytics API

获取 Cloudflare 账户 ID

要为对象构建 Network Firewall GraphQL 查询,您将需要 Cloudflare 账户 ID。

获取您的 Cloudflare 账户 ID

  1. 登录到 Cloudflare 仪表板,然后选择您的账户。
  2. 浏览器地址栏中的 URL 应显示 https://dash.cloudflare.com/ 后跟一个十六进制字符串。该十六进制字符串就是您的 Cloudflare 账户 ID。

获取防火墙规则的规则 ID

要构建查询以收集特定规则的分析数据,您需要每个防火墙规则的规则 ID。

  1. 在 Cloudflare 仪表板中,转到 **Cloudflare Network Firewall(Cloudflare Network Firewall)**页面。

    Go to Firewall policies ↗
  2. 在 **Custom rules(自定义规则)**选项卡中,从列表中找到您需要其规则 ID 的规则,然后选择三个点 > Edit(编辑)

  3. 找到 **Rule ID(规则 ID)**并选择复制按钮。

  4. 选择 **Cancel(取消)**返回到 **Cloudflare Network Firewall(Cloudflare Network Firewall)**页面。

通过 Cloudflare Network Firewall 查询示例探索 GraphQL 架构

在本节中,您将运行一个测试查询,以检索每五分钟间隔内所有已配置的 Cloudflare Network Firewall 规则的五分钟计数。您可以将以下代码复制并粘贴到 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 示例查询

获取特定规则的分析数据

使用下面的示例显示过去一小时内前十个疑似恶意流量流的数据包和比特总数。收到结果后,您可以按五分钟平均数据包速率进行排序。

对于每个流,显示:

  • 源和目标 IP 地址
  • 接收该流量的入站 Cloudflare 数据中心
  • 在一小时内接收的总流量(以比特和数据包为单位)
  • 防火墙规则采取的操作
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 分析数据

使用下面的示例显示 Cloudflare Network Firewall IDS 在过去一小时内检测到的前 10 个流量流的数据包和比特总数。

通过将 verdict 设置为 drop 并将 outcome 设置为 pass,我们正在过滤被标记为检测到(即判定为丢弃)但未被实际丢弃(例如,结果为 pass)的流量。这是因为目前,Cloudflare Network Firewall IDS 仅检测恶意流量而不丢弃流量。

对于每个流,显示:

  • 源和目标 IP 地址。
  • 接收该流量的入站 Cloudflare 数据中心。
  • 在一小时内接收的总流量(以比特和数据包为单位)。
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
				}
			}
		}
	}
}

或者,要检查分析的所有流量,但将其分为恶意流量和其他流量,可以使用下面的示例。对于每个五分钟时间戳,响应将包含两个条目。对于恶意流量,verdict 将设置为 drop,而对于不匹配任何 IDS 规则的流量,verdict 将设置为 pass

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
				}
			}
		}
	}
}

这篇文档对您有帮助吗?