模块 3c — 设备姿态检查(Device Posture Checks)
目标: 验证设备健康且可信——磁盘已加密、防火墙开启、系统为最新、运行着你的 EDR、属于公司资产——并在 Access 与 Gateway 策略中使用这些信号,只让合规设备访问敏感资源。
| 👤 谁来做 | 安全 / 终端团队 |
| ⏱️ 用时 | 约 40 分钟 |
| 🎯 完成后你将拥有 | 可复用的姿态检查用于把关访问,并在每个请求上持续重新评估 |
| ✋ 开始前 | 模块 3 已完成(设备以 Gateway with WARP 注册)。高级/第三方检查需要 Enterprise。 |
🧭 为什么姿态很重要。 身份回答*"这是谁?";姿态回答"他所用的设备是否值得信任?"* 零信任两者都需要。姿态检查是一个可复用的信号,定义一次即可在多条 Access 与 Gateway 策略中引用——而且由于 Cloudflare 在每个请求上评估它,设备一旦不再合规(防火墙关闭、磁盘解密、系统过期),其访问权就会被自动切断。
💡 这是对 模块 3 E 部分的扩展。模块 3 添加了一项简单检查;这里是完整工具箱。
两类姿态检查
| 类型 | 信号来自 | 举例 | 套餐 |
|---|---|---|---|
| WARP 客户端检查 | 设备上的 Cloudflare One 客户端 | 磁盘加密、防火墙、系统版本、文件/应用存在、序列号、客户端证书、杀毒软件 | 免费层含基础项;更多在付费层 |
| 服务提供商检查(service-to-service,S2S) | 通过 API 接入的第三方安全平台 | CrowdStrike、SentinelOne、Microsoft Intune、Tanium、Carbon Black、Kolide… | Enterprise |
两者在同一处构建,并在策略中以相同方式引用。
A 部分 — 内置的 WARP 客户端检查
这些直接来自 Cloudflare One 客户端——无需第三方工具。
| 检查 | 验证什么 | 常见系统 |
|---|---|---|
| 磁盘加密 | 部分/全部磁盘已加密(BitLocker、FileVault…) | Win / macOS / Linux |
| 防火墙 | 防火墙正在运行 | Win / macOS |
| 系统版本 | 系统达到/高于某版本(可细到 build/revision) | Win / macOS / Linux / iOS / Android |
| 杀毒软件 (较新,Windows) | 存在杀毒程序——可选检查是否最新 | Win |
| 应用检查 | 某进程正在运行(如你的 EDR 代理) | Win / macOS / Linux |
| 文件检查 | 某文件存在(如合规标记文件) | Win / macOS / Linux |
| 加入域 | 设备已加入你的 Microsoft AD 域 | Win |
| 设备序列号 | 序列号匹配你的公司设备列表 | Win / macOS / Linux |
| 唯一客户端 ID | 匹配 MDM 分配的 UUID | iOS / Android / ChromeOS / 桌面 |
| 客户端证书 | 已安装有效的客户端证书(绑定设备身份) | Win / macOS / Linux / iOS / Android |
| 要求 WARP | 设备已通过 Cloudflare One 客户端连接 | 全部 |
| 要求 Gateway | 流量正经过 Gateway | 全部 |
💡 客户端证书进阶技巧: 证书检查支持模板变量——
${serial_number}与${device_uuid}——可用于 Common Name 和 Subject Alternative Name,从而把证书绑定到特定设备身份。
B 部分 — 创建一个 WARP 客户端检查
我们来构建一个"磁盘已加密"检查(上表任一检查都可套用此模式)。
- 👉 在控制台,前往 Settings → WARP Client → Device posture(或 Reusable components → Posture checks)。
- 👉 点击 Add new → 选择 Disk encryption。
- ⌨️ 起一个清晰的名字,如
Disk encrypted。 - 👉 选择它适用的操作系统。
- 👉 设置检查频率(客户端多久重新评估一次,如每 5 分钟)。
- 👉 配置具体项(磁盘加密:哪些磁盘必须加密)。
- 👉 点击 Save。
📺 你会看到: 该检查列在 Device posture 下,正在评估你已注册的设备,每台显示合规/不合规。
✅ 检查点: 你的试点设备在该检查上报告合规(前提是其磁盘确实已加密)。
⭐ 最佳实践——系统版本检查: 要求你已测试过的最新版本,而非绝对最新。否则某个当天发布的新系统可能在上线那一刻把整个机群锁在门外。
C 部分 — 添加第三方(服务提供商)检查 (Enterprise)
把你已在运行的 EDR/MDM 的信号,接入 Cloudflare 的访问决策。
- 👉 前往 Settings → WARP Client → Device posture → Add new。
- 👉 选择你的提供商——如 CrowdStrike、SentinelOne、Microsoft Intune(Endpoint Manager)、Tanium、Carbon Black、Kolide。
- 👉 按提供商相关提示操作:从该平台管理控制台粘贴 API 凭据 / 客户端 ID + 密钥,让 Cloudflare 能查询设备状态。
- ⌨️ 设置评估标准——如 CrowdStrike Zero Trust Assessment(ZTA)分数 ≥ 50,或 Intune compliant = true。
- 👉 Save 并确认集成已连接。
💡 工作原理: Cloudflare 通过序列号、ID 或邮箱将设备与提供商的 API 匹配,拉取其风险分数/合规状态——于是"设备经 CrowdStrike 判定无威胁"就成了你可要求的条件。
⚠️ Gateway 注意事项: 多数服务提供商检查在 Access 和 Gateway 策略中都可用,但 Tanium 不支持 Gateway 策略——仅限 Access。若 Tanium 是你的事实来源,请据此规划。
D 部分 — 在策略中使用姿态
姿态检查在被策略引用之前不起任何作用。有两处:
在 Access 策略中(按应用)——模块 4
- 👉 Access → Applications → 你的应用 → Policies → 编辑/添加。
- 👉 添加一条 Require 规则 → 选择器 Device Posture → 选择你的检查,如
Disk encrypted+CrowdStrike ZTA ≥ 50。
在 Gateway 网络策略中(范围更广)——模块 5
- 👉 Gateway → Firewall Policies → Network → Add a policy。
- 👉 选择器 Device Posture → 你的检查 → 动作(如不合规则 Block)。
实战示例——"工程师仅可从健康设备访问生产环境":
| 规则 | 选择器 | 取值 |
|---|---|---|
| Include | IdP Groups | Engineering |
| Require | Device Posture | Disk encrypted |
| Require | Device Posture | Firewall on |
| Require | Device Posture | CrowdStrike ZTA ≥ 50 |
💡 天生可复用: 把 Disk encrypted 定义一次,即可添加到任意多个应用/策略。更新该检查,所有引用它的策略同步更新——把常用检查打包进 Access 组 即可一键复用。
E 部分 — 持续重新评估(零信任的关键回报)
姿态并非登录时的一次性关卡。Cloudflare 在每个请求上重新检查它,因此:
- 若用户关闭防火墙,或 EDR 在会话中途将设备标记为风险,其对受保护应用的访问会被自动撤销——无需等到下次登录。
- 修复后,在下一次成功检查时恢复访问。
这正是让"从不信任、始终校验"落地的机制:信任是持续重新赢得的,而非一次性授予。
F 部分 — 验证
- 👉 控制台: My Team → Devices → 打开某设备 → 查看其姿态信号(每项检查合规/不合规)。
- 👉 在设备上(命令行):
warp-cli posture # 列出每项姿态检查及当前通过/失败 - 👉 测试执行: 在合规设备上访问一个受姿态把关的应用——可用。然后破坏某个信号(如在测试机上关闭防火墙)并重试——访问应在重新评估窗口内被拒绝。
✅ 检查点: 合规设备通过;某个未通过必需检查的设备被阻止,且你能在 Logs → Access(或 Gateway 日志)中看到该决策。
✅ 模块 3c 完成!
你现在拥有:
- ✅ 对 WARP 客户端检查与服务提供商检查的理解
- ✅ 一个或多个已定义的可复用姿态检查
- ✅ (Enterprise)一个把信号送入访问决策的第三方 EDR/MDM
- ✅ 在 Access 和/或 Gateway 策略中要求姿态
- ✅ 确信不合规设备会被持续切断,而不仅是在登录时
快速排障
| 问题 | 解决办法 |
|---|---|
| 策略中缺少 Device Posture 选择器 | 先创建至少一个姿态检查(B 部分)——选择器仅在之后出现 |
| 设备意外显示不合规 | 检查系统范围 + 标准(如哪些磁盘必须加密);确认客户端为较新版本 |
| 第三方检查永不匹配 | 复查 API 凭据,以及 Cloudflare 能否在该平台匹配到设备(序列号/ID/邮箱) |
| Tanium 检查在 Access 可用但 Gateway 不行 | 属预期——Tanium 不支持 Gateway 策略;请在 Access 中使用(C 部分) |
| 系统版本检查把所有人锁在门外 | 你要求了过新的版本——设为你已验证的最新版,而非绝对最新(B 部分) |
| 姿态变化未反映 | 等待重新评估间隔,或将客户端开关一次;用 warp-cli posture 验证 |
👉 下一步:模块 4 — ZTNA / Access
把私有应用置于 Access 之后,并要求这些姿态检查作为进入条件。