跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

HTTP 策略

最后更新 查看 MarkdownAgent 设置

HTTP 策略允许你根据 URL、主机名、HTTP 方法、文件类型和其他请求属性过滤所有 HTTP 和 HTTPS 请求。与在第 4 层(TCP/UDP)运行的网络策略不同,HTTP 策略在第 7 层运行,可以检查 Web 流量的完整内容。

默认情况下,Gateway 检查端口 80 上的 HTTP 流量,并在开启 TLS 解密 时检查端口 443 上的 HTTPS 流量。你还可以将 Gateway 配置为在所有端口上检查 HTTP/HTTPS 流量。开启 UDP 代理 后,Gateway 支持 HTTP/3 检查。

HTTP 策略由一个操作(Action) 和一个确定策略范围的逻辑表达式组成。要构建表达式,请选择选择器(Selector) 和运算符(Operator),然后在值(Value) 字段中输入一个值或值范围。你可以使用 And(且) 和 Or(或) 逻辑运算符来评估多个条件。

如果表达式中的条件结合了 query 属性(例如 Source IP)和响应属性(例如 Resolved IP),则该条件将在收到响应时进行评估。

操作

HTTP 策略中的操作允许你选择对给定的一组元素(域名、IP 地址、文件类型等)执行什么处理。每个策略只能分配一个操作。

Allow

API 值:allow

可用选择器

流量

身份

设备状况

Allow(允许)操作允许出站流量到达你在选择器和值字段中指定的目标。例如,以下配置允许流量到达我们归类为 Education(教育)内容类别的所有网站:

选择器 运算符 值 操作
Content Categories(内容类别) in(属于) Education Allow(允许)

不受信任的证书

Untrusted certificate action(不受信任的证书操作) 决定如何处理不安全的请求。

选项 操作
Error(错误) 显示 Gateway 错误页面。与未配置操作时的默认行为匹配。
Block(拦截) 显示在 Cloudflare 仪表板中设置的拦截页面。
Pass through(直通) 绕过不安全连接警告并无缝连接到上游。有关绕过的状态码,请参阅 排查 Gateway。

自定义标头

Allow 策略可以在将流量转发到目标之前修改 HTTP 请求标头。你可以添加、覆盖或删除标头,并使用动态变量将身份、设备和网络上下文注入标头值。

有关更多信息,请参阅自定义标头。

Block

API 值:block

可用选择器

流量

身份

设备状况

Block(拦截)操作阻止出站流量到达你在选择器和值字段中指定的目标。例如,以下配置阻止用户向 Google Drive 上传任何文件类型:

选择器 运算符 值 逻辑 操作
Application(应用程序) in(属于) Google Drive And(且) Block(拦截)
Upload Mime Type(上传 Mime 类型) matches regex(匹配正则表达式) .*

Cloudflare One Client 拦截通知

功能可用性

客户端模式 Zero Trust 计划 ↗
  • 流量和 DNS 模式
  • 仅流量模式
Enterprise
系统 可用性 最低客户端版本
Windows ✅ 2024.1.159.0
macOS ✅ 2024.1.160.0
Linux ❌
iOS ✅ 1.7
Android ✅ 1.4
ChromeOS ✅ 1.4

开启 Display block notification for Cloudflare One Client 以显示 Gateway 拦截事件的通知。被拦截的用户将收到来自 Cloudflare One 客户端的操作系统通知,其中包含您设置的自定义消息。如果您没有设置自定义消息,Cloudflare One 客户端将显示默认消息。自定义消息长度必须在 100 个字符或以内。Cloudflare One 客户端每分钟只会显示一条通知。

选择该通知后,Cloudflare One 客户端将引导您的用户访问您配置的 Gateway 拦截页面。或者,您也可以将用户引导至自定义 URL,例如内部支持表单。

开启发送策略上下文 时,Gateway 会将匹配请求的详细信息作为查询字符串附加到重定向的 URL 中。并非每个上下文字段都会被包含。可能包含的策略上下文字段包括:

策略上下文字段

字段 定义 示例
User email(用户电子邮件) 发起查询的用户的电子邮件。 &[email protected]
Site URL 原始 HTTP 请求的完整 URL,或 DNS 查询中的域名。 &cf_site_uri=https%3A%2F%2Fmalware.testcategory.com%2F
URL category 要重定向的 URL 的域类别。 &cf_request_categories=New%20Domains,Newly%20Seen%20Domains
Original HTTP referer 对于 HTTP 流量,则是 HTTP 请求的原始 HTTP referer 标头。 &cf_referer=https%3A%2F%2Fexample.com%2F
Rule ID 与请求匹配的 Gateway 策略的 ID。 &cf_rule_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Source IP 匹配策略的设备的源 IP 地址。 &cf_source_ip=203.0.113.5
Device ID 匹配策略的设备的 UUID。 &cf_device_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Application names 重定向的域所对应的应用程序名称(如果有)。 &cf_application_name=Salesforce
Filter 触发拦截的流量类型过滤器。 &cf_filter=http, &cf_filter=dns, &cf_filter=av, or &cf_filter=l4
Account ID 关联的 Zero Trust 账户的 Cloudflare 账户 ID。 &cf_account_id=d57c3de47a013c03ca7e237dd3e61d7d
Query ID 重定向对其生效的 DNS 查询的 ID。 &cf_query_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Connection ID 重定向对其生效的代理连接的 ID。 &cf_connection_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Request ID 重定向对其生效的 HTTP 请求的 ID。 &cf_request_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3

确保您的操作系统允许 Cloudflare One 客户端发送通知。如果启用了专注模式、勿扰模式或屏幕共享设置,您的设备可能不会显示通知。要在运行 DisplayLink 软件的 macOS 设备上启用客户端通知,您可能需要在镜像显示器时允许系统通知。有关更多信息,请参阅 macOS 文档 ↗。

Redirect

API 值:redirect

可用选择器

流量

身份

Device Posture(设备状况)

Redirect(重定向)操作允许你将匹配的 HTTP 请求重定向到你指定的其他 URL。例如,如果用户浏览到 SaaS 应用的公共网页,你可以将他们重定向到你自己托管的实例、单点登录页面或内部策略页面。

要使用 Block 操作和拦截页面重定向 URL,请参阅重定向到拦截页面。

策略设置

在 Policy URL redirect(策略 URL 重定向) 中,你可以定义将匹配请求重定向到的 URL。重定向 URL 可以包含路径和查询。例如,你可以将 example.com 重定向到 cloudflare.com/path/to/page?querystring=x。

开启发送策略上下文 时,Gateway 会将匹配请求的详细信息作为查询字符串附加到重定向的 URL 中。并非每个上下文字段都会被包含。可能包含的策略上下文字段包括:

策略上下文字段

字段 定义 示例
User email(用户电子邮件) 发起查询的用户的电子邮件。 &[email protected]
Site URL 原始 HTTP 请求的完整 URL,或 DNS 查询中的域名。 &cf_site_uri=https%3A%2F%2Fmalware.testcategory.com%2F
URL category 要重定向的 URL 的域类别。 &cf_request_categories=New%20Domains,Newly%20Seen%20Domains
Original HTTP referer 对于 HTTP 流量,则是 HTTP 请求的原始 HTTP referer 标头。 &cf_referer=https%3A%2F%2Fexample.com%2F
Rule ID 与请求匹配的 Gateway 策略的 ID。 &cf_rule_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Source IP 匹配策略的设备的源 IP 地址。 &cf_source_ip=203.0.113.5
Device ID 匹配策略的设备的 UUID。 &cf_device_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Application names 重定向的域所对应的应用程序名称(如果有)。 &cf_application_name=Salesforce
Filter 触发拦截的流量类型过滤器。 &cf_filter=http, &cf_filter=dns, &cf_filter=av, or &cf_filter=l4
Account ID 关联的 Zero Trust 账户的 Cloudflare 账户 ID。 &cf_account_id=d57c3de47a013c03ca7e237dd3e61d7d
Query ID 重定向对其生效的 DNS 查询的 ID。 &cf_query_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Connection ID 重定向对其生效的代理连接的 ID。 &cf_connection_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Request ID 重定向对其生效的 HTTP 请求的 ID。 &cf_request_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3

当你开启 Preserve original path and query string(保留原始路径和查询字符串) 时,Gateway 会将原始路径和查询字符串追加到重定向 URL。重定向 URL 中的路径和查询优先于原始 URL。例如,如果原始 URL 是 example.com/path/to/page?querystring=X,重定向 URL 是 cloudflare.com/redirect-path?querystring=Y,Gateway 会将请求重定向到:

cloudflare.com/redirect-path/path/to/page?querystring=Y

当两个选项都开启时,Gateway 会保留原始路径和查询字符串,然后将策略上下文追加到重定向 URL 末尾。例如,如果原始 URL 是 example.com/path/to/page?querystring=X&k=1,重定向 URL 是 cloudflare.com/redirect-path?querystring=Y,Gateway 会将请求重定向到:

cloudflare.com/redirect-path/path/to/page?querystring=Y&k=1&[email protected]

Forward Beta

API 值:forward

Forward(转发)会在允许的 HTTP 流量上调用 Worker。Worker 可以在将请求发送到原始目标之前修改请求、转换响应、返回合成响应,或运行后台工作。

Forward 策略在 HTTP 请求策略之后、请求体策略和检查之前的单独阶段运行。Gateway 按优先级顺序调用第一条匹配的 Forward 策略所选择的 Worker。

Gateway 在将原始请求体交给 Worker 之前对其进行检查。来自请求体检查的 Block 决定可以中断 Worker。

Allow 决定不会跳过 Forward 阶段。Forward 策略不会覆盖 Block 决定。

使用请求元数据选择器、身份和设备状况条件来选择流量。请求体检查结果、DLP 匹配和响应选择器无法选择 Worker。

HTTPS 流量需要 TLS 解密。Do Not Inspect 流量会绕过 Forward。Gateway 不会为 CONNECT 隧道、协议升级或 trailer 调用 Worker。WebSocket 流量直接连接到原始上游服务并绕过 Worker。有关协议限制和其他约束,请参阅已知限制。

有关设置、Worker 入口点和检查顺序,请参阅转发流量。可从 Worker 模板开始,用于通知、捕获或转换。

Isolate

API 值:isolate

可用选择器

流量

身份

Device Posture(设备状况)

Isolate(隔离)操作通过 Cloudflare Browser Isolation 向用户提供匹配的流量。有关此操作的更多信息,请参阅隔离策略。

Do Not Inspect

API 值:off

可用选择器

流量

身份

Device Posture(设备状况)

Do Not Inspect(不检测)允许你绕过对某些元素的检查。要阻止 Gateway 解密和检查 HTTPS 流量,策略必须匹配 TLS 标头中的 Server Name Indication(SNI)。在浏览器中访问 Do Not Inspect 站点时,浏览器可能会显示 Your connection is not private(你的连接不是专用连接) 警告,你可以继续以完成连接。有关可能需要 Do Not Inspect 策略的应用程序的更多信息,请参阅 TLS 解密限制。

Do Not Isolate

API 值:noisolate

可用选择器

流量

身份

Device Posture(设备状况)

Do Not Isolate(不隔离)操作为匹配流量关闭浏览器隔离。有关此操作的更多信息,请参阅隔离策略。

Do Not Scan

API 值:noscan

可用选择器

流量

身份

Device Posture(设备状况)

当管理员为上传和/或下载启用 AV 扫描时,Gateway 会扫描每个受支持的文件。管理员可以利用 HTTP 规则选择性地关闭扫描。例如,要防止对上传到或从 example.com 下载的文件进行 AV 扫描,管理员可以配置以下规则:

选择器 运算符 值 操作
Hostname(主机名) matches regex(匹配正则表达式) .*example.com Do Not Scan(不扫描)

当 Do Not Scan 规则匹配时,无论文件大小或文件类型是否受支持,都不会进行扫描。

Quarantine

API 值:quarantine

可用选择器

流量

身份

Device Posture(设备状况)

Quarantine(隔离)操作将匹配请求中的文件发送到文件沙箱以扫描恶意软件。Gateway 只会隔离文件沙箱中此前未见过的文件。有关此操作的更多信息,请参阅文件沙箱。

沙箱文件类型

在 Sandbox file types(沙箱文件类型) 中,你可以选择策略要隔离的文件类型。你必须至少选择一种文件类型。

文件沙箱支持扫描以下文件类型:

支持沙箱扫描的文件类型

  • .exe
  • .pdf
  • .doc
  • .docm
  • .docx
  • .rtf
  • .ppt
  • .pptx
  • .xls
  • .xlsm
  • .xlsx
  • .zip
  • .rar

选择器

Gateway 根据以下选择器或条件匹配 HTTP 流量:

Access Infrastructure Target

由 Access 基础设施应用程序 保护的所有 目标。

UI 名称 API 示例
Access Infrastructure Target(Access 基础设施目标) access.target

Access Private App

由 Access 自托管私有应用程序 保护的所有目标 IP 和主机名。

UI 名称 API 示例
Self-hosted Access App with Private Address(具有私有地址的自托管 Access 应用程序) access.private_app

Application Approval Status

来自 Shadow IT Discovery 或应用程序库的应用程序审核批准状态。有关更多信息,请参阅审核应用程序。

UI 名称 API 示例
Application Status(应用程序状态) any(app.statuses[*] == "approved")

Application

您可以使用同一个应用程序选择器,将 HTTP 策略应用于 Cloudflare 管理的应用程序以及在您账户中创建的自定义应用程序。有关详细信息,请参阅应用程序和应用类型。

UI 名称 API 示例
Application(应用程序) any(app.ids[*] in {505})

对于自定义应用程序,主机名或目标 IP 必须与应用程序定义匹配。配置的端口和协议会进一步限制匹配范围。请参阅自定义应用程序匹配。

细粒度控制

将 is(是) 运算符与 Application(应用程序) 选择器一起使用时,你可以使用应用程序细粒度控制来选择匹配应用程序流量的特定操作和 Operations。例如,你可以拦截向 ChatGPT 上传文件,而不拦截所有 ChatGPT 流量:

选择器 运算符 值 控制 操作
Application(应用程序) is(是) ChatGPT Upload(上传) Block(拦截)

你可以根据将多个用户操作组合在一起的 Application Controls(应用程序控制) 匹配流量,或根据允许对应用程序支持的 API 级操作进行细粒度控制的 Operations(操作) 匹配流量。

有关更多信息,请参阅应用程序细粒度控制。

Body Phase

HTTP 请求的阶段。你可以使用此选择器指定是扫描发送到用户设备的 HTTP 请求中的数据,还是从用户设备发送到目标的数据。没有此选择器的策略会同时扫描 HTTP 请求体和响应体。

UI 名称 API 示例
Body Phase http.body_phase == \"download\"

Browser Isolation Beta

当前会话是否在 Remote Browser Isolation 中运行。使用此选择器对隔离和非隔离流量应用不同的策略行为。

UI 名称 API 示例
Browser Isolation net.is_isolated == true

Content Categories

属于特定安全类别的应用,这些类别由 Cloudflare Radar划分。

UI 名称 API 示例
Content Categories(内容类别) any(http.request.uri.content_category[*] in {1})

Destination Continent

请求发往的大陆。地理位置由目标 IP 地址决定。要指定大陆,请在 Value(值) 字段中输入其两位字母代码:

大陆 代码
非洲 AF
南极洲 AN
亚洲 AS
欧洲 EU
北美洲 NA
大洋洲 OC
南美洲 SA
UI 名称 API 示例
Destination Continent IP Geolocation(目标大陆 IP 地理位置) http.dst_ip.geo.continent == "EU"

Destination Country

请求发往的国家。地理位置由目标 IP 地址决定。要指定国家,请在 Value(值) 字段中输入其 ISO 3166-1 Alpha 2 代码 ↗。

UI 名称 API 示例
Destination Country IP Geolocation(目标国家/地区 IP 地理位置) http.dst_ip.geo.country == "RU"

Destination IP

请求目标的 IP 地址。

UI 名称 API 示例
Destination IP(目标 IP) any(http.conn.dst_ip[*] in {10.0.0.0/8})

Device Posture

通过设备状态 (Device Posture) 选择器,管理员可以使用来自最终用户设备的信号来保护对其内部和外部资源的访问。例如,安全管理员可以根据设备上是否安装了特定软件以及/或者设备或软件是否以特定方式配置,来选择限制对内部应用程序的所有访问。

有关设备状态检测的更多信息,请参阅 设备状态 (Device posture)。

UI 名称 API 示例
Passed Device Posture Checks(已通过的设备状况检查) any(device_posture.checks.failed[*] in {"1308749e-fcfb-4ebc-b051-fe022b632644"}), any(device_posture.checks.passed[*] in {"1308749e-fcfb-4ebc-b051-fe022b632644"})"

Domain

使用此选择器可匹配某个域名及其所有子域名。例如,您可以匹配 example.com 及其子域名,如 www.example.com。

UI 名称 API 示例
Domain(域名) any(http.request.domains[*] == "example.com")

Gateway 策略不支持直接使用包含非拉丁字符的 domain。要使用包含非拉丁字符的 domain,请将其添加到列表中。

Download and Upload File Size

使用这些选择器限制上传或下载事务的文件大小。文件大小以 mebibyte(MiB)为单位。

UI 名称 API 示例
Download File Size (MiB) http.download.file.size >= 10
UI 名称 API 示例
Upload File Size (MiB) http.upload.file.size < 10

Download and Upload File Types

这些选择器会扫描 HTTP 正文中的文件签名。你可以从文件类别或特定文件类型中选择,例如可执行文件、归档和压缩文件、无法扫描的文件、Microsoft 365/Office 文档和 Adobe 文件。

UI 名称 API 示例
Download File Types any(http.download.file.types[*] in {"docx" "7z"})
UI 名称 API 示例
Upload File Types any(http.upload.file.types[*] in {"compressed"})

受支持的文件类型

Gateway 支持将以下文件类型与 Download File Types 和 Upload File Types 选择器一起使用:

Compressed(压缩)

  • 7-Zip 归档文件 (.7z)
  • bzip2 归档文件 (.bz2)
  • GNU Gzip 归档文件 (.gz)
  • Microsoft Cabinet 文件 (.cab)
  • Microsoft 编译的 HTML 帮助文件 (.chm)
  • RAR 归档文件 (.rar)
  • xz 归档文件 (.xz)
  • ZIP 归档文件 (.zip)

Documents(文档)

  • Microsoft Office/365 文件
    • Word 文档 (.doc, .docx, .docm)
    • Excel 电子表格 (.xls, .xlsx, .xlsm)
    • PowerPoint 演示文稿 (.ppt, .pptx, .pptm)
  • PDF 文档 (.pdf)

Executable(可执行文件)

  • Apple 软件包 (.pkg)
  • 动态链接库 (DLL) 文件 (.dll)
  • 可执行与可链接格式 (ELF) 文件 (.elf)
  • Java 归档 (JAR) 包 (.jar)
  • Java 类文件 (.class)
  • Mach 对象 (Mach-O) 文件 (.macho)
  • Microsoft Windows 安装程序 (.msi)
  • Microsoft 软件安装程序 (.msix, .appx)
  • Microsoft Windows 可执行文件 (.exe)

Image(图像)

  • Adobe Photoshop 文档 (.psd)
  • 位图图像 (.bmp)
  • GIF 图像 (.gif)
  • 图标文件 (.ico)
  • JPEG 图像 (.jpg, .jpeg)
  • PNG 图像 (.png)
  • WebP 图像 (.webp)

Other(其他)

  • BitTorrent 文件 (.torrent)

System(系统)

  • Apple 磁盘映像 (.dmg)

Unscannable(无法扫描)

  • 受密码保护的 Microsoft Office 文档
  • 受密码保护的 PDF
  • 受密码保护的 ZIP 压缩包
  • 无法扫描的 ZIP 压缩包

Download and Upload Mime Type

这些选择器依赖于请求(用于上传)或响应(用于下载)中存在 Content-Type 标头。MIME 类型值必须与 Content-Type 标头中使用的格式匹配(例如 image/png、application/pdf)。

UI 名称 API 示例
Download Mime Type http.download.mime == "image/png"
UI 名称 API 示例
Upload Mime Type http.upload.mime == "image/png"

DLP Profile

使用 Cloudflare 数据丢失防护(DLP)扫描 HTTP 流量中是否存在个人身份信息(PII)或源代码等敏感数据。你必须先配置 DLP 配置文件,才能在策略中使用此选择器。

UI 名称 API 示例
DLP Profile any(dlp.profiles[*] in {\"a0cabf16-7491-4c9a-ac02-f64cabc66394\"})

Is MCP Beta

HTTP 请求是否被识别为 Model Context Protocol (MCP) ↗ 流量。Gateway 通过检查协议特定的标头和有效负载特征来检测 MCP 流量。使用此选择器构建允许、拦截或隔离整个网络中 MCP 流量的策略。

UI 名称 API 示例
Is MCP experimental.is_mcp == true

例如,以下策略拦截未通过 MCP 门户到达的 MCP 流量:

选择器 运算符 值 逻辑 操作
Is MCP is(是) True And(且) Block(拦截)
Traffic Source(流量来源) is not(不是) MCP portal

Host

使用此选择器仅匹配指定的主机名。例如,您可以匹配 test.example.com,但不能匹配 example.com 或 www.test.example.com。

UI 名称 API 示例
Host(主机) http.request.host == "example.com"

Gateway 策略不支持直接使用包含非拉丁字符的 hostname。要使用包含非拉丁字符的 hostname,请将其添加到列表中。

HTTP Method

流量中使用的 HTTP 请求方法。

UI 名称 API 示例
HTTP Method http.request.method == "GET"

HTTP Response

流量收到的 HTTP 响应状态码。

UI 名称 API 示例
URL http.response.status_code == "200"

Package Ecosystem

从 HTTP 请求 URL 检测到的软件包注册表生态系统。有关更多信息,请参阅软件包注册表安全。

UI 名称 API 示例
Package Ecosystem pkg.ecosystem == "npm"

Package Name

从 HTTP 请求 URL 检测到的软件包名称。

UI 名称 API 示例
Package Name pkg.name == "lodash"

Package Namespace

软件包的命名空间(当生态系统支持时)。对于 npm,这是 scope。对于 Maven,这是 group ID。对于 Go,这是模块路径。

UI 名称 API 示例
Package Namespace pkg.namespace == "@babel"

Package URL (PURL)

从检测到的软件包坐标派生的 Package URL ↗。

UI 名称 API 示例
Package URL pkg.purl == "pkg:npm/[email protected]"

Package Version

从 HTTP 请求 URL 检测到的软件包版本。支持精确匹配和感知生态系统的版本比较运算符。有关版本比较语义的更多信息,请参阅软件包注册表安全。

UI 名称 API 示例
Package Version pkg.version == "4.17.21"

Proxy Endpoint

浏览器将 HTTP 流量转发到的代理服务器。

UI 名称 API 示例
Proxy Endpoint(代理端点) proxy.endpoint == "3ele0ss56t.proxy.cloudflare-gateway.com"

Security Risks

由 Cloudflare Radar 分类为特定安全类别的应用程序。

UI 名称 API 示例
Security Categories(安全类别) any(http.request.uri.security_category[*] in {1})

Source Continent

发出请求的用户所在大陆。

地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定大洲,请在值 字段中输入其两位字母代码:

大洲 代码
非洲 AF
南极洲 AN
亚洲 AS
欧洲 EU
北美洲 NA
大洋洲 OC
南美洲 SA
UI 名称 API 示例
Source Continent IP Geolocation(源大陆 IP 地理位置) http.src_ip.geo.continent == "North America"

Source Country

发出请求的用户所在国家/地区。

地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定国家/地区,请在值 字段中输入其 ISO 3166-1 Alpha-2 代码 ↗。

UI 名称 API 示例
Source Country IP Geolocation(源国家/地区 IP 地理位置) http.src_ip.geo.country == "RU"

Source Internal IP

使用此选择器将 HTTP 策略应用于用户本地网络分配的、向 Gateway 发送请求的私有 IP 地址。

UI 名称 API 示例
Source Internal IP(源内部 IP) http.conn.internal_src_ip == "192.168.86.0/27"

Source IP

由 Gateway 代理的设备的原始 IP 地址。

UI 名称 API 示例
Source IP(源 IP) http.conn.src_ip[*] in {10.0.0.0/8}

Traffic Destination Beta

用于将流量从 Cloudflare 转出的方法。使用此选择器根据流量如何离开 Gateway 应用策略。

UI 名称 API 示例
Traffic Destination net.offramp.type == "internet"

可用值:internet(Internet)、cloudflare_wan(Cloudflare WAN)、cloudflare_tunnel(Cloudflare Tunnel)、device_client(Cloudflare One Client)、mesh(Mesh)。

Traffic Source Beta

用于将流量接入 Cloudflare 的方法。使用此选择器根据流量如何到达 Gateway 应用策略。

UI 名称 API 示例
Traffic Source net.onramp.type == "device_client"

可用值:device_client(Device client)、mesh(Mesh)、cloudflare_wan(Cloudflare WAN)、clientless_rdp(Clientless RDP)、proxy_endpoint(Proxy endpoint)、agentless_biso(Clientless Browser Isolation)、mcp_portal(MCP portal)。

URL

Gateway 会忽略 URL 中的尾随正斜杠(/)。例如,https://example.com 和 https://example.com/ 将被视为同一个 URL,并可能返回重复错误。

UI 名称 API 示例
URL http.request.uri matches "/r/gaming"

URL Path

网页 URL 的路径名。

UI 名称 API 示例
URL Path http.request.uri.path == \"/foo/bar\"

URL Path and Query

网页 URL 的路径名和查询。

UI 名称 API 示例
URL Path and Query http.request.uri.path_and_query == \"/foo/bar?ab%242=%2A342\"

URL Query

网页 URL 的查询。

UI 名称 API 示例
URL Query http.request.uri.query == "ab%242=%2A342"

Users

使用这些选择器来匹配身份属性。

UI 名称 API 示例
User Email(用户电子邮件) identity.email == "[email protected]"
User Name(用户名) identity.name == "Test User"
User Group IDs(用户组 ID) any(identity.groups[*].id in {"group_id"})
User Group Names(用户组名称) any(identity.groups[*].name in {"group_name"})
User Group Emails(用户组电子邮件) any(identity.groups[*].email in {"[email protected]"})
SAML Attributes(SAML 属性) any(identity.saml_attributes["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] in {"Test User"})

Virtual Network

使用此选择器匹配所有通过 Cloudflare One 客户端路由到特定虚拟网络(Virtual Network)的流量。

UI 名称 API 示例
Virtual Network(虚拟网络) http.conn.vnet_id == "957fc748-591a-e96s-a15d-1j90204a7923"

比较运算符

比较运算符是 Gateway 将流量与选择器进行匹配的方式。当您在仪表板策略生成器中选择 Selector(选择器) 时,Operator(运算符) 下拉菜单将显示该选择器的可用选项。

运算符 含义
is(等于) 等于所定义的值
is not(不等于) 不等于所定义的值
in(属于) 匹配至少一个所定义的值
not in(不属于) 不匹配任何所定义的值
in list(在列表中) 在预定义的列表值中
not in list(不在列表中) 不在预定义的列表值中
matches regex(匹配正则表达式) 正则表达式计算结果为 true
does not match regex(不匹配正则表达式) 正则表达式计算结果为 false
greater than(大于) 超过所定义的数字
greater than or equal to(大于或等于) 超过或等于所定义的数字
less than(小于) 低于所定义的数字
less than or equal to(小于或等于) 低于或等于所定义的数字

值

在值 字段中,当使用等值比较运算符(例如 is)时,您可以输入单个值;当使用包含比较运算符(例如 in)时,您可以输入多个值。此外,您可以使用正则表达式来为受支持的选择器指定值范围。

正则表达式

正则表达式使用 Rust 进行评估。Rust 的实现与其他地方使用的正则表达式库略有不同。有关更多信息,请参阅我们的通配符指南。要评估您的正则表达式是否匹配,可以使用 Rustexp ↗。

如果您想匹配多个值,可以使用管道符号(|)作为 OR 运算符。您不需要在管道符号之前使用转义字符(\)。例如,当 hostname 匹配 .*whispersystems.org 或 .*signal.org 时,以下表达式的计算结果为 true:

选择器 运算符 值
Hostmatches regex.*whispersystems.org|.*signal.org

除了正则表达式外,您还可以使用逻辑运算符来匹配多个值。

逻辑运算符

要在表达式中评估多个条件,请选择 And(与) 逻辑运算符。这些表达式可以使用 Or(或) 逻辑运算符进行进一步比较。

运算符 含义
And(与) 匹配表达式中的所有条件
Or(或) 匹配表达式中的任一条件

Or(或) 运算符仅适用于同一表达式组中的条件。例如,您无法将流量中的条件与 Identity or Device Posture 中的条件进行比较。

如果表达式中的条件结合了 request 属性(例如 Source IP)和响应属性(例如 a DLP Profile),则该条件将在收到响应时进行评估。

这篇文档对您有帮助吗?