使用 GraphQL Analytics API 查看与匹配您流量的规则相关的 Cloudflare Network Firewall(前称 Magic Firewall)网络流量数据。这包含了您在 Network Firewall 仪表板中配置的自定义规则,以及作为 Network Firewall 托管规则 和 Network Firewall IDS 功能一部分由 Cloudflare 托管的规则。
在开始之前,您必须拥有 API 令牌。关于 GraphQL Analytics 快速入门的更多帮助,请参阅 GraphQL Analytics API。
要为对象构建 Network Firewall GraphQL 查询,您需要一个 Cloudflare 账户 ID (Account ID)。
- 登录到 Cloudflare 仪表板 ↗,然后选择您的账户。
- 您浏览器地址栏中的 URL 应该显示
https://dash.cloudflare.com/,后跟一个十六进制字符串。该十六进制字符串即为您的 Cloudflare 账户 ID。
要构建查询以收集特定规则的分析数据,您需要每条防火墙规则的规则 ID。
- 在 Cloudflare 仪表板中,前往 Firewall Policies (防火墙策略) ↗ 页面。
- 在 Custom policies(自定义策略) 选项卡中,在列表中找到您需要获取其规则 ID 的规则,然后选择三个点图标 > Edit(编辑)。
- 找到 ID 并选择复制按钮。
- 选择 Cancel(取消) 返回 Firewall Policies(防火墙策略) 页面。
在本节中,您将运行一个测试查询,以获取在 5 分钟时间间隔内所有已配置的 Network Firewall 规则的 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
}
}
}
}
}使用下面的示例显示在过去一小时内前 10 个疑似恶意流量流的数据包和比特总数。在收到结果后,您可以按 5 分钟平均数据包速率进行排序。
对于每个流量流,显示以下信息:
- 源和目标 IP 地址
- 接收该流量的入站 (Ingress) Cloudflare 数据中心
- 在一小时内接收的总流量体积(以比特和数据包为单位)
- 防火墙规则采取的操作 (Actions)
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
}
}
}
}
}使用下面的示例显示 Network Firewall IDS 在过去一小时内检测到的前 10 个流量流的数据包和比特总数。
通过将 verdict 设置为 drop 并且将 outcome 设置为 pass,我们正在过滤被标记为检测到(即 verdict 为 drop)但未被丢弃(例如,outcome 为 pass)的流量。这是因为目前 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
}
}
}
}
}或者,要检查所有被分析过的流量(但分为恶意流量和其他流量),可以使用下面的示例。响应将为每个 5 分钟时间戳包含两个条目。对于恶意流量,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
}
}
}
}
}