HTTP 策略允许您根据 URL、主机名、HTTP 方法、文件类型和其他请求属性过滤所有 HTTP 和 HTTPS 请求与响应。与工作在第 4 层 (TCP/UDP) 的网络策略不同,HTTP 策略工作在第 7 层,可以检查网络流量的完整内容。
默认情况下,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 类型
- 主机
- HTTP 方法
- HTTP 响应
- 代理端点
- 安全类别
- 源大陆 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 类型
- 主机
- HTTP 方法
- HTTP 响应
- 代理端点
- 安全类别
- 源大陆 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
身份
设备姿态
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 值: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
身份
设备姿态
Isolate 操作通过 Cloudflare 浏览器隔离将匹配的流量提供给用户。有关此操作的更多信息,请参阅隔离策略。
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
身份
设备姿态
Do Not Inspect(不检测) 允许您从检测中排除某些元素。为了防止 Gateway 解密和检测 HTTPS 流量,您的策略必须与 TLS 标头中的服务器名称指示 (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
身份
设备姿态
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
身份
设备姿态
当管理员针对上传和/或下载启用 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
身份
设备姿态
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 |
来自影子 IT 发现或应用程序库的应用程序审查批准状态。欲了解更多信息,请参阅审查应用程序。
| UI 名称 | API 示例 |
|---|---|
| Application Status(应用程序状态) | any(app.statuses[*] == "approved") |
您可以将 HTTP 策略应用于不断增加的流行 Web 应用程序列表。有关详细信息,请参阅 应用程序和应用类型。
| UI 名称 | API 示例 |
|---|---|
| Application(应用程序) | any(app.ids[*] in {505}) |
在将 is 运算符与 Application 选择器结合使用时,您可以使用应用细粒度控制(Application Granular Controls)来选择特定的动作和操作来匹配应用流量。例如,您可以阻止向 ChatGPT 上传文件,而不阻止所有 ChatGPT 流量:
| 选择器 | 运算符 | 值 | 控制项 | 操作 |
|---|---|---|---|---|
| Application(应用程序) | is(是) | ChatGPT | Upload | Block(阻止) |
您可以根据将多个用户操作组合在一起的 **Application Controls(应用控制项)**匹配流量,或者根据允许对支持的应用程序的 API 级别操作进行细粒度控制的 **Operations(操作)**匹配流量。
有关更多信息,请参阅应用细粒度控制。
HTTP 请求的阶段。您可以使用此选择器来指定是要扫描发送到用户设备上的 HTTP 请求中的数据,还是扫描从用户设备发送到目的地的 HTTP 请求中的数据。没有此选择器的策略将同时扫描 HTTP 请求和响应主体。
| UI 名称 | API 示例 |
|---|---|
| Body Phase(正文阶段) | http.body_phase == \"download\" |
由 Cloudflare Radar 分类属于特定安全类别的应用程序。
| UI 名称 | API 示例 |
|---|---|
| Content Categories(内容类别) | any(http.request.uri.content_category[*] in {1}) |
请求发往的大陆。地理位置由目标 IP 地址决定。要指定大陆,请在 Value(值) 字段中输入其两位字母代码:
| 大陆 | 代码 |
|---|---|
| 非洲 | AF |
| 南极洲 | AN |
| 亚洲 | AS |
| 欧洲 | EU |
| 北美洲 | NA |
| 大洋洲 | OC |
| 南美洲 | SA |
| Tor 网络 | T1 |
| 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,请将其添加到列表中。
使用这些选择器来限制上传或下载事务的文件大小。文件大小以 mebibytes (MiB) 为单位。
| UI 名称 | API 示例 |
|---|---|
| Download File Size (MiB)(下载文件大小,MiB) | http.download.file.size >= 10 |
| UI 名称 | API 示例 |
|---|---|
| Upload File Size (MiB)(上传文件大小,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 选择器结合使用:
压缩包
- 7-Zip 归档 (
.7z) bzip2归档 (.bz2)- GNU Gzip 归档 (
.gz) - Microsoft Cabinet 文件 (
.cab) - Microsoft 编译 HTML 帮助文件 (
.chm) - RAR 归档 (
.rar) xz归档 (.xz)- ZIP 归档 (
.zip)
文档
- Microsoft Office/365 文件
- Word 文档 (
.doc,.docx,.docm) - Excel 电子表格 (
.xls,.xlsx,.xlsm) - PowerPoint 演示文稿 (
.ppt,.pptx,.pptm)
- Word 文档 (
- PDF 文档 (
.pdf)
可执行文件
- Apple 软件安装包 (
.pkg) - 动态链接库 (DLL) 文件 (
.dll) - 可执行和可链接格式 (ELF) 文件 (
.elf) - Java 归档 (JAR) 包 (
.jar) - Java 类文件 (
.class) - Mach 对象 (Mach-O) 文件 (
.macho) - Microsoft Windows 安装程序 (
.msi) - Microsoft 软件安装程序 (
.msix,.appx) - Microsoft Windows 可执行文件 (
.exe)
图像
- Adobe Photoshop 文档 (
.psd) - 位图图像 (
.bmp) - GIF 图像 (
.gif) - 图标文件 (
.ico) - JPEG 图像 (
.jpg,.jpeg) - PNG 图像 (
.png) - WebP 图像 (
.webp)
其他
- BitTorrent 文件 (
.torrent)
系统
- Apple 磁盘映像 (
.dmg)
不可扫描文件
- 受密码保护的 Microsoft Office 文档
- 受密码保护的 PDF
- 受密码保护的 ZIP 压缩包
- 无法扫描的 ZIP 压缩包
这些选择器取决于请求中(用于上传)或响应中(用于下载)存在的 Content-Type 标头。MIME 类型值必须与 Content-Type 标头中使用的格式匹配(例如 image/png、application/pdf)。
| UI 名称 | API 示例 |
|---|---|
| Download Mime Type(下载 MIME 类型) | http.download.mime == "image/png" |
| UI 名称 | API 示例 |
|---|---|
| Upload Mime Type(上传 MIME 类型) | http.upload.mime == "image/png" |
使用 Cloudflare 数据丢失预防 (DLP) 扫描 HTTP 流量中是否存在敏感数据,例如个人身份信息 (PII) 或源代码。您必须先配置 DLP 配置文件,然后才能在策略中使用此选择器。
| UI 名称 | API 示例 |
|---|---|
| DLP Profile(DLP 配置文件) | any(dlp.profiles[*] in {\"a0cabf16-7491-4c9a-ac02-f64cabc66394\"}) |
使用此选择器仅匹配指定的主机名。例如,您可以匹配 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 方法) | http.request.method == "GET" |
流量收到的 HTTP 响应状态码。
| UI 名称 | API 示例 |
|---|---|
| HTTP Response(HTTP 响应) | http.response.status_code == "200" |
您的浏览器转发 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 |
| Tor 网络 | T1 |
| 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} |
Gateway 会忽略 URL 中的尾随正斜杠(/)。例如,https://example.com 和 https://example.com/ 将被视为同一个 URL,并可能返回重复错误。
| UI 名称 | API 示例 |
|---|---|
| URL | http.request.uri matches "/r/gaming" |
网页 URL 的路径名。
| UI 名称 | API 示例 |
|---|---|
| URL Path(URL 路径) | http.request.uri.path == \"/foo/bar\" |
网页 URL 的路径名和查询字符串。
| UI 名称 | API 示例 |
|---|---|
| URL Path and Query(URL 路径与查询) | http.request.uri.path_and_query == \"/foo/bar?ab%242=%2A342\" |
网页 URL 的查询字符串。
| UI 名称 | API 示例 |
|---|---|
| URL Query(URL 查询) | 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),则该条件将在收到响应时进行评估。