零信任访问控制
Cloudflare Access 是零信任网络访问(ZTNA)解决方案,让你可以在不使用 VPN 的情况下安全地访问内部应用。通过身份验证和设备状态检查,确保只有授权用户才能访问你的应用。
什么是零信任访问?
传统 VPN vs 零信任
传统 VPN 模式:
用户 → VPN 连接 → 企业网络 → 内部应用
问题:
- 一旦连接 VPN,可以访问整个网络
- 凭证泄露风险高
- 难以管理和审计
- 用户体验差
零信任模式:
用户 → 身份验证 → 设备检查 → 应用访问
优势:
- 每个应用独立验证
- 最小权限原则
- 详细审计日志
- 无需 VPN 客户端
Cloudflare Access 的优势
| 特点 | 说明 |
|---|---|
| 无需 VPN | 通过浏览器或客户端访问 |
| 多因素认证 | 支持多种身份提供商 |
| 设备状态检查 | 验证设备安全性 |
| 细粒度控制 | 基于用户、组、IP 等条件 |
| 详细日志 | 记录所有访问请求 |
| 免费额度 | 最多 50 个用户免费 |
启用 Cloudflare Access
前提条件
- 拥有 Cloudflare 账户
- 域名已添加到 Cloudflare
- 应用已通过 Cloudflare 代理
步骤一:启用 Zero Trust
- 登录 Cloudflare 控制台
- 点击左侧菜单 "Zero Trust"
- 选择团队名称
- 选择计划(Free 计划支持 50 个用户)
步骤二:配置身份提供商
Access 支持多种身份验证方式:
支持的 IdP:
| IdP | 特点 |
|---|---|
| One-time PIN | 邮箱验证码,无需配置 |
| Google Workspace | 企业常用 |
| Microsoft Entra ID | 企业常用 |
| Okta | 企业 SSO |
| GitHub | 开发者友好 |
| 社交登录 |
配置 GitHub 登录:
- 进入 "Settings" → "Authentication"
- 点击 "Add new" → "GitHub"
- 在 GitHub 创建 OAuth App
- 填写 Client ID 和 Client Secret
- 保存配置
配置 Google Workspace:
- 在 Google Cloud Console 创建 OAuth 凭证
- 配置授权重定向 URI
- 在 Cloudflare 填写凭证信息
- 测试连接
创建 Access 应用
自托管应用
保护你自己的应用:
- 进入 "Access" → "Applications"
- 点击 "Add an application"
- 选择 "Self-hosted"
配置应用:
Application domain: app.example.com
Path: / (或特定路径)
SaaS 应用
保护第三方 SaaS 应用:
- 选择 "SaaS"
- 配置应用信息
- 设置 IdP
- 配置 SAML 或 OIDC
创建访问策略
策略决定谁可以访问应用:
策略结构:
Action(操作):
- Allow(允许)
- Block(阻止)
- Bypass(绕过)
- Service Auth(服务认证)
Rules(规则):
- Include(包含):OR 逻辑
- Require(要求):AND 逻辑
- Exclude(排除):NOT 逻辑
示例策略:
Action: Allow
Include:
- Emails ending in: @company.com
Require:
- Country: United States
Exclude:
- Email: [email protected]
效果:
- 允许所有 @company.com 邮箱用户
- 必须来自美国
- 排除特定用户
访问策略详解
规则类型
Include(包含):
类似 OR 逻辑,满足任一条件即可:
Include:
- Emails ending in: @company.com
- Emails ending in: @partner.com
Require(要求):
类似 AND 逻辑,必须满足所有条件:
Require:
- Country: United States
- Email: [email protected]
Exclude(排除):
类似 NOT 逻辑,排除特定用户:
Exclude:
- Email: [email protected]
选择器类型
| 选择器 | 说明 | 示例 |
|---|---|---|
| 特定邮箱 | [email protected] | |
| Emails ending in | 邮箱后缀 | @company.com |
| Country | 国家/地区 | United States |
| IP ranges | IP 地址范围 | 192.168.1.0/24 |
| Everyone | 所有人 | - |
| Groups | 用户组 | admins |
| Device posture | 设备状态 | 已安装防病毒软件 |
| Login Methods | 登录方式 | GitHub, Google |
操作类型
Allow(允许):
允许符合条件的用户访问应用。
Block(阻止):
阻止特定用户访问。
Action: Block
Include:
- Country: Russian Federation
Bypass(绕过):
绕过 Access 检查,直接访问应用。
警告:Bypass 会完全绕过安全控制,谨慎使用。
Service Auth(服务认证):
用于服务间认证,支持 mTLS 和服务令牌。
设备状态检查
启用设备状态检查
验证用户设备的安全性:
- 进入 "My Team" → "Devices"
- 启用 "Device posture"
- 配置检查规则
检查类型
| 检查类型 | 说明 |
|---|---|
| Disk encryption | 磁盘加密 |
| OS version | 操作系统版本 |
| Firewall | 防火墙状态 |
| Antivirus | 防病毒软件 |
| WARP | 是否连接 WARP |
在策略中使用
Require:
- Device posture: Disk encryption enabled
- Device posture: WARP connected
访问令牌管理
服务令牌
用于服务间认证:
- 进入 "Access" → "Service Auth" → "Service Tokens"
- 点击 "Create Service Token"
- 设置令牌名称和有效期
- 保存 Client ID 和 Client Secret
使用服务令牌:
curl -H "CF-Access-Client-Id: <client-id>" \
-H "CF-Access-Client-Secret: <client-secret>" \
https://app.example.com/api
mTLS 认证
使用客户端证书认证:
- 进入 "Access" → "Service Auth" → "Mutual TLS"
- 上传 CA 证书
- 配置应用使用 mTLS
审计和日志
访问日志
查看所有访问请求:
- 进入 "Logs" → "Access"
- 查看登录事件
- 查看拒绝事件
日志字段:
| 字段 | 说明 |
|---|---|
| Timestamp | 时间戳 |
| User | 用户邮箱 |
| Application | 应用名称 |
| Action | 允许/拒绝 |
| Country | 国家 |
| IP Address | IP 地址 |
导出日志
支持导出到:
- S3
- Datadog
- Splunk
- Sumo Logic
常见配置示例
保护管理后台
Application: admin.example.com
Policy:
Action: Allow
Include:
- Emails ending in: @company.com
Require:
- Country: United States
- Groups: admins
保护内部工具
Application: internal.example.com
Policy:
Action: Allow
Include:
- Emails ending in: @company.com
Require:
- Device posture: WARP connected
保护 API
Application: api.example.com
Policy:
Action: Service Auth
Include:
- Service Token: api-service
Cloudflare WARP 客户端
安装 WARP
用户可以安装 WARP 客户端获得更好的体验:
- 下载 WARP 客户端
- 登录团队账户
- 连接后自动满足设备状态检查
下载地址:
- Windows: https://1.1.1.1/
- macOS: App Store
- iOS: App Store
- Android: Google Play
设备注册
用户首次使用需要注册设备:
- 打开 WARP 客户端
- 选择 "Login with Cloudflare"
- 输入团队名称
- 完成身份验证
最佳实践
最小权限原则
- 只授予必要的访问权限
- 使用 Require 规则添加额外限制
- 定期审查访问权限
多因素认证
- 启用 IdP 的多因素认证
- 使用设备状态检查作为第二因素
监控和告警
- 设置异常登录告警
- 定期审查访问日志
- 监控失败的登录尝试
定期审计
- 每月审查访问策略
- 移除离职用户权限
- 更新过期的规则
常见问题
用户无法访问应用?
检查:
- 用户是否在允许列表中
- 身份提供商是否配置正确
- 设备状态是否满足要求
- 检查访问日志查看拒绝原因
如何添加临时访问?
创建有时间限制的策略:
Action: Allow
Include:
- Email: [email protected]
Session Duration: 8 hours
如何处理多个应用?
为每个应用创建独立策略,或使用应用组统一管理。
参考资源
下一步
了解零信任访问后,你可以:
- 配置 Tunnel 连接内部应用
- 使用 Turnstile 保护表单
- 查看 Web Analytics 监控访问