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 地址、文件类型等)执行什么处理。每个策略只能分配一个操作。
API 值:allow
可用选择器
流量
- Access 基础设施目标
- Access 私有应用
- 应用程序
- 浏览器隔离
- 内容类别
- 目的大陆 IP 地理定位
- 目的国家/地区 IP 地理定位
- 目的 IP
- DLP 安全配置文件
- 域
- 下载文件类型
- 下载 Mime 类型
- 是否为 MCP
- 主机
- HTTP 方法
- HTTP 响应
- 软件包生态系统
- 软件包名称
- 软件包命名空间
- 软件包 URL(PURL)
- 软件包版本
- 代理端点
- 安全类别
- 源大陆 IP 地理定位
- 源国家/地区 IP 地理定位
- 源内部 IP
- 源 IP
- 流量目标
- 流量来源
- 上传文件类型
- 上传 Mime 类型
- URL
- URL 路径
- URL 路径和查询
- URL 查询
- 虚拟网络
身份
设备状况
Allow(允许)操作允许出站流量到达你在选择器和值字段中指定的目标。例如,以下配置允许流量到达我们归类为 Education(教育)内容类别的所有网站:
| 选择器 | 运算符 | 值 | 操作 |
|---|---|---|---|
| Content Categories(内容类别) | in(属于) | Education | Allow(允许) |
Untrusted certificate action(不受信任的证书操作) 决定如何处理不安全的请求。
| 选项 | 操作 |
|---|---|
| Error(错误) | 显示 Gateway 错误页面。与未配置操作时的默认行为匹配。 |
| Block(拦截) | 显示在 Cloudflare 仪表板中设置的拦截页面。 |
| Pass through(直通) | 绕过不安全连接警告并无缝连接到上游。有关绕过的状态码,请参阅 排查 Gateway。 |
Allow 策略可以在将流量转发到目标之前修改 HTTP 请求标头。你可以添加、覆盖或删除标头,并使用动态变量将身份、设备和网络上下文注入标头值。
有关更多信息,请参阅自定义标头。
API 值:block
可用选择器
流量
- Access 基础设施目标
- Access 私有应用
- 应用程序
- 浏览器隔离
- 内容类别
- 目的大陆 IP 地理定位
- 目的国家/地区 IP 地理定位
- 目的 IP
- DLP 安全配置文件
- 域
- 下载文件类型
- 下载 Mime 类型
- 是否为 MCP
- 主机
- HTTP 方法
- HTTP 响应
- 软件包生态系统
- 软件包名称
- 软件包命名空间
- 软件包 URL(PURL)
- 软件包版本
- 代理端点
- 安全类别
- 源大陆 IP 地理定位
- 源国家/地区 IP 地理定位
- 源内部 IP
- 源 IP
- 流量目标
- 流量来源
- 上传文件类型
- 上传 Mime 类型
- URL
- URL 路径
- URL 路径和查询
- URL 查询
- 虚拟网络
身份
设备状况
Block(拦截)操作阻止出站流量到达你在选择器和值字段中指定的目标。例如,以下配置阻止用户向 Google Drive 上传任何文件类型:
| 选择器 | 运算符 | 值 | 逻辑 | 操作 |
|---|---|---|---|---|
| Application(应用程序) | in(属于) | Google Drive |
And(且) | Block(拦截) |
| Upload Mime Type(上传 Mime 类型) | matches regex(匹配正则表达式) | .* |
功能可用性
| 客户端模式 | Zero Trust 计划 ↗ |
|---|---|
|
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 文档 ↗。
API 值:redirect
可用选择器
流量
- Access Infrastructure Target
- Application
- Content Categories
- Destination Continent IP Geolocation
- Destination Country IP Geolocation
- Destination IP
- Domain
- Host
- HTTP Method
- Proxy Endpoint
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- Source Internal IP
- Source IP
- URL
- URL Path
- URL Path & Query
- URL Query
- Virtual Network
身份
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]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 模板开始,用于通知、捕获或转换。
API 值:isolate
可用选择器
流量
- Application
- Content Categories
- Domain
- Host
- HTTP Method
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- URL
- URL Path
- URL Path & Query
- URL Query
身份
Device Posture(设备状况)
Isolate(隔离)操作通过 Cloudflare Browser Isolation 向用户提供匹配的流量。有关此操作的更多信息,请参阅隔离策略。
API 值:off
可用选择器
流量
- Application
- Content Categories
- Destination Continent IP Geolocation
- Destination Country IP Geolocation
- Destination IP
- Domain
- Host
- Proxy Endpoint
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- Source Internal IP
- Source IP
- Virtual Network
身份
Device Posture(设备状况)
Do Not Inspect(不检测)允许你绕过对某些元素的检查。要阻止 Gateway 解密和检查 HTTPS 流量,策略必须匹配 TLS 标头中的 Server Name Indication(SNI)。在浏览器中访问 Do Not Inspect 站点时,浏览器可能会显示 Your connection is not private(你的连接不是专用连接) 警告,你可以继续以完成连接。有关可能需要 Do Not Inspect 策略的应用程序的更多信息,请参阅 TLS 解密限制。
API 值:noisolate
可用选择器
流量
- Application
- Content Categories
- Domain
- Host
- HTTP Method
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- URL
- URL Path
- URL Path & Query
- URL Query
身份
Device Posture(设备状况)
Do Not Isolate(不隔离)操作为匹配流量关闭浏览器隔离。有关此操作的更多信息,请参阅隔离策略。
API 值:noscan
可用选择器
流量
- Application
- Content Categories
- Destination Continent IP Geolocation
- Destination Country IP Geolocation
- Destination IP
- Domain
- Host
- HTTP Method
- Proxy Endpoint
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- Source Internal IP
- Source IP
- URL
- URL Path
- URL Path & Query
- URL Query
- Virtual Network
身份
Device Posture(设备状况)
当管理员为上传和/或下载启用 AV 扫描时,Gateway 会扫描每个受支持的文件。管理员可以利用 HTTP 规则选择性地关闭扫描。例如,要防止对上传到或从 example.com 下载的文件进行 AV 扫描,管理员可以配置以下规则:
| 选择器 | 运算符 | 值 | 操作 |
|---|---|---|---|
| Hostname(主机名) | matches regex(匹配正则表达式) | .*example.com |
Do Not Scan(不扫描) |
当 Do Not Scan 规则匹配时,无论文件大小或文件类型是否受支持,都不会进行扫描。
API 值:quarantine
可用选择器
流量
- Application
- Content Categories
- Destination Continent IP Geolocation
- Destination Country IP Geolocation
- Destination IP
- Domain
- Host
- HTTP Method
- Proxy Endpoint
- Security Risks
- Source Continent IP Geolocation
- Source Country IP Geolocation
- Source Internal IP
- Source IP
- URL
- URL Path
- URL Path & Query
- URL Query
- Virtual Network
身份
Device Posture(设备状况)
Quarantine(隔离)操作将匹配请求中的文件发送到文件沙箱以扫描恶意软件。Gateway 只会隔离文件沙箱中此前未见过的文件。有关此操作的更多信息,请参阅文件沙箱。
在 Sandbox file types(沙箱文件类型) 中,你可以选择策略要隔离的文件类型。你必须至少选择一种文件类型。
文件沙箱支持扫描以下文件类型:
支持沙箱扫描的文件类型
.exe.pdf.doc.docm.docx.rtf.ppt.pptx.xls.xlsm.xlsx.zip.rar
Gateway 根据以下选择器或条件匹配 HTTP 流量:
由 Access 基础设施应用程序 保护的所有 目标。
| UI 名称 | API 示例 |
|---|---|
| Access Infrastructure Target(Access 基础设施目标) | access.target |
由 Access 自托管私有应用程序 保护的所有目标 IP 和主机名。
| UI 名称 | API 示例 |
|---|---|
| Self-hosted Access App with Private Address(具有私有地址的自托管 Access 应用程序) | access.private_app |
来自 Shadow IT Discovery 或应用程序库的应用程序审核批准状态。有关更多信息,请参阅审核应用程序。
| UI 名称 | API 示例 |
|---|---|
| Application Status(应用程序状态) | any(app.statuses[*] == "approved") |
您可以使用同一个应用程序选择器,将 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(操作) 匹配流量。
有关更多信息,请参阅应用程序细粒度控制。
HTTP 请求的阶段。你可以使用此选择器指定是扫描发送到用户设备的 HTTP 请求中的数据,还是从用户设备发送到目标的数据。没有此选择器的策略会同时扫描 HTTP 请求体和响应体。
| UI 名称 | API 示例 |
|---|---|
| Body Phase | http.body_phase == \"download\" |
当前会话是否在 Remote Browser Isolation 中运行。使用此选择器对隔离和非隔离流量应用不同的策略行为。
| UI 名称 | API 示例 |
|---|---|
| Browser Isolation | net.is_isolated == true |
属于特定安全类别的应用,这些类别由 Cloudflare Radar划分。
| UI 名称 | API 示例 |
|---|---|
| Content Categories(内容类别) | any(http.request.uri.content_category[*] in {1}) |
请求发往的大陆。地理位置由目标 IP 地址决定。要指定大陆,请在 Value(值) 字段中输入其两位字母代码:
| 大陆 | 代码 |
|---|---|
| 非洲 | AF |
| 南极洲 | AN |
| 亚洲 | AS |
| 欧洲 | EU |
| 北美洲 | NA |
| 大洋洲 | OC |
| 南美洲 | SA |
| UI 名称 | API 示例 |
|---|---|
| Destination Continent IP Geolocation(目标大陆 IP 地理位置) | http.dst_ip.geo.continent == "EU" |
请求发往的国家。地理位置由目标 IP 地址决定。要指定国家,请在 Value(值) 字段中输入其 ISO 3166-1 Alpha 2 代码 ↗。
| UI 名称 | API 示例 |
|---|---|
| Destination Country IP Geolocation(目标国家/地区 IP 地理位置) | http.dst_ip.geo.country == "RU" |
请求目标的 IP 地址。
| UI 名称 | API 示例 |
|---|---|
| Destination IP(目标 IP) | any(http.conn.dst_ip[*] in {10.0.0.0/8}) |
通过设备状态 (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"})" |
使用此选择器可匹配某个域名及其所有子域名。例如,您可以匹配 example.com 及其子域名,如 www.example.com。
| UI 名称 | API 示例 |
|---|---|
| Domain(域名) | any(http.request.domains[*] == "example.com") |
Gateway 策略不支持直接使用包含非拉丁字符的 domain。要使用包含非拉丁字符的 domain,请将其添加到列表中。
使用这些选择器限制上传或下载事务的文件大小。文件大小以 mebibyte(MiB)为单位。
| UI 名称 | API 示例 |
|---|---|
| Download File Size (MiB) | http.download.file.size >= 10 |
| UI 名称 | API 示例 |
|---|---|
| Upload File Size (MiB) | http.upload.file.size < 10 |
这些选择器会扫描 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)
- Word 文档 (
- 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 压缩包
这些选择器依赖于请求(用于上传)或响应(用于下载)中存在 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" |
使用 Cloudflare 数据丢失防护(DLP)扫描 HTTP 流量中是否存在个人身份信息(PII)或源代码等敏感数据。你必须先配置 DLP 配置文件,才能在策略中使用此选择器。
| UI 名称 | API 示例 |
|---|---|
| DLP Profile | any(dlp.profiles[*] in {\"a0cabf16-7491-4c9a-ac02-f64cabc66394\"}) |
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 |
使用此选择器仅匹配指定的主机名。例如,您可以匹配 test.example.com,但不能匹配 example.com 或 www.test.example.com。
| UI 名称 | API 示例 |
|---|---|
| Host(主机) | http.request.host == "example.com" |
Gateway 策略不支持直接使用包含非拉丁字符的 hostname。要使用包含非拉丁字符的 hostname,请将其添加到列表中。
流量中使用的 HTTP 请求方法。
| UI 名称 | API 示例 |
|---|---|
| HTTP Method | http.request.method == "GET" |
流量收到的 HTTP 响应状态码。
| UI 名称 | API 示例 |
|---|---|
| URL | http.response.status_code == "200" |
从 HTTP 请求 URL 检测到的软件包注册表生态系统。有关更多信息,请参阅软件包注册表安全。
| UI 名称 | API 示例 |
|---|---|
| Package Ecosystem | pkg.ecosystem == "npm" |
从 HTTP 请求 URL 检测到的软件包名称。
| UI 名称 | API 示例 |
|---|---|
| Package Name | pkg.name == "lodash" |
软件包的命名空间(当生态系统支持时)。对于 npm,这是 scope。对于 Maven,这是 group ID。对于 Go,这是模块路径。
| UI 名称 | API 示例 |
|---|---|
| Package Namespace | pkg.namespace == "@babel" |
从检测到的软件包坐标派生的 Package URL ↗。
| UI 名称 | API 示例 |
|---|---|
| Package URL | pkg.purl == "pkg:npm/[email protected]" |
从 HTTP 请求 URL 检测到的软件包版本。支持精确匹配和感知生态系统的版本比较运算符。有关版本比较语义的更多信息,请参阅软件包注册表安全。
| UI 名称 | API 示例 |
|---|---|
| Package Version | pkg.version == "4.17.21" |
浏览器将 HTTP 流量转发到的代理服务器。
| UI 名称 | API 示例 |
|---|---|
| Proxy Endpoint(代理端点) | proxy.endpoint == "3ele0ss56t.proxy.cloudflare-gateway.com" |
由 Cloudflare Radar 分类为特定安全类别的应用程序。
| UI 名称 | API 示例 |
|---|---|
| Security Categories(安全类别) | any(http.request.uri.security_category[*] in {1}) |
发出请求的用户所在大陆。
地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定大洲,请在值 字段中输入其两位字母代码:
| 大洲 | 代码 |
|---|---|
| 非洲 | AF |
| 南极洲 | AN |
| 亚洲 | AS |
| 欧洲 | EU |
| 北美洲 | NA |
| 大洋洲 | OC |
| 南美洲 | SA |
| UI 名称 | API 示例 |
|---|---|
| Source Continent IP Geolocation(源大陆 IP 地理位置) | http.src_ip.geo.continent == "North America" |
发出请求的用户所在国家/地区。
地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定国家/地区,请在值 字段中输入其 ISO 3166-1 Alpha-2 代码 ↗。
| UI 名称 | API 示例 |
|---|---|
| Source Country IP Geolocation(源国家/地区 IP 地理位置) | http.src_ip.geo.country == "RU" |
使用此选择器将 HTTP 策略应用于用户本地网络分配的、向 Gateway 发送请求的私有 IP 地址。
| UI 名称 | API 示例 |
|---|---|
| Source Internal IP(源内部 IP) | http.conn.internal_src_ip == "192.168.86.0/27" |
由 Gateway 代理的设备的原始 IP 地址。
| UI 名称 | API 示例 |
|---|---|
| Source IP(源 IP) | http.conn.src_ip[*] in {10.0.0.0/8} |
用于将流量从 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)。
用于将流量接入 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)。
Gateway 会忽略 URL 中的尾随正斜杠(/)。例如,https://example.com 和 https://example.com/ 将被视为同一个 URL,并可能返回重复错误。
| UI 名称 | API 示例 |
|---|---|
| URL | http.request.uri matches "/r/gaming" |
网页 URL 的路径名。
| UI 名称 | API 示例 |
|---|---|
| URL Path | http.request.uri.path == \"/foo/bar\" |
网页 URL 的路径名和查询。
| UI 名称 | API 示例 |
|---|---|
| URL Path and Query | http.request.uri.path_and_query == \"/foo/bar?ab%242=%2A342\" |
网页 URL 的查询。
| UI 名称 | API 示例 |
|---|---|
| URL Query | http.request.uri.query == "ab%242=%2A342" |
使用这些选择器来匹配身份属性。
| 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"}) |
使用此选择器匹配所有通过 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:
| 选择器 | 运算符 | 值 |
|---|---|---|
| Host | matches regex | .*whispersystems.org|.*signal.org |
除了正则表达式外,您还可以使用逻辑运算符来匹配多个值。
要在表达式中评估多个条件,请选择 And(与) 逻辑运算符。这些表达式可以使用 Or(或) 逻辑运算符进行进一步比较。
| 运算符 | 含义 |
|---|---|
| And(与) | 匹配表达式中的所有条件 |
| Or(或) | 匹配表达式中的任一条件 |
Or(或) 运算符仅适用于同一表达式组中的条件。例如,您无法将流量中的条件与 Identity or Device Posture 中的条件进行比较。
如果表达式中的条件结合了 request 属性(例如 Source IP)和响应属性(例如 a DLP Profile),则该条件将在收到响应时进行评估。