# 第二十三章:零信任架构 > "永不信任,始终验证 — 这不是偏执,而是现代安全的基本原则。" ```{mermaid} mindmap root((零信任架构)) 核心原则 永不信任 假设入侵 最小权限 显式验证 NIST 架构 PE 策略引擎 PA 策略管理 PEP 执行点 五大支柱 身份 设备 网络 应用 数据 实践 BeyondCorp ZTNA 成熟度模型 ``` ## 23.1 零信任的起源 2010 年,Forrester 的 John Kindervag 提出零信任模型,核心洞察: > **传统的"内网可信、外网不可信"的假设已经过时。** ``` 传统模型(城堡与护城河): ┌─────────────────────────────┐ │ 内网 = 可信 ✅ │ │ ┌────┐ ┌────┐ ┌────┐ │ │ │ DB │ │ App│ │ API│ │ ← 一旦进入内网 │ └────┘ └────┘ └────┘ │ 可以横向移动 │ │ └──────────┬──────────────────┘ │ 防火墙 外网 = 不可信 ❌ 零信任模型: 每个请求都需要验证,无论来自哪里 ┌────┐ 验证 ┌────┐ 验证 ┌────┐ │ DB │◀──────────│ App│◀──────────│ API│ └────┘ mTLS └────┘ mTLS └────┘ AuthZ AuthZ ``` ## 23.2 核心原则 | 原则 | 含义 | 实践 | |------|------|------| | Never Trust, Always Verify | 不因位置或网络信任任何请求 | 每次请求都验证身份和权限 | | Assume Breach | 假设攻击者已在网络内部 | 微分段、最小权限、监控 | | Least Privilege | 只授予完成任务所需的最小权限 | RBAC/ABAC、短期凭证 | | Verify Explicitly | 基于所有可用数据做决策 | 身份+设备+位置+行为 | ## 23.3 NIST SP 800-207 架构 ``` ┌─────────────────────────────────────────────────────┐ │ 零信任架构 │ │ │ │ ┌──────────┐ ┌──────────────┐ ┌───────────┐ │ │ │ 主体 │───▶│ PEP │───▶│ 企业资源 │ │ │ │(用户/设备/│ │ 策略执行点 │ │(应用/数据) │ │ │ │ 工作负载) │ │ (Gateway/ │ │ │ │ │ └──────────┘ │ Sidecar) │ └───────────┘ │ │ └──────┬───────┘ │ │ │ │ │ ┌──────▼───────┐ │ │ │ PA │ │ │ │ 策略管理员 │ │ │ │ (建立/断开 │ │ │ │ 通信路径) │ │ │ └──────┬───────┘ │ │ │ │ │ ┌──────▼───────┐ │ │ │ PE │ │ │ │ 策略引擎 │◀─── 数据源: │ │ │ (做出决策) │ • 身份系统 │ │ │ │ • 设备状态 │ │ │ │ • 威胁情报 │ │ │ │ • 行为分析 │ │ └─────────────┘ • 合规要求 │ └─────────────────────────────────────────────────────┘ ``` ## 23.4 零信任五大支柱 ### 身份(Identity) ``` 人类身份:OIDC + MFA + Passkey 工作负载身份:SPIFFE/SPIRE 设备身份:MDM + 设备证书 持续验证: 登录时验证 → 每次请求验证 → 异常行为重新验证 ``` ### 设备(Device) | 信任等级 | 条件 | 允许访问 | |---------|------|---------| | 完全信任 | 公司设备 + 合规 + 最新补丁 | 所有资源 | | 部分信任 | 公司设备 + 部分合规 | 非敏感资源 | | 低信任 | 个人设备 + MDM | 公开资源 | | 不信任 | 未知设备 | 仅公开信息 | ### 网络(Network) ``` 传统网络: ┌─────────────────────────────┐ │ 扁平网络,所有服务互通 │ │ Service A ←→ Service B │ │ Service A ←→ Database │ │ Service B ←→ Database │ └─────────────────────────────┘ 微分段网络: ┌──────────┐ ┌──────────┐ │ Service A │ │ Service B │ │ 只能访问 │ │ 只能访问 │ │ Service B │ │ Database │ └─────┬────┘ └─────┬────┘ │ mTLS │ mTLS ▼ ▼ ┌──────────┐ ┌──────────┐ │ Service B │ │ Database │ └──────────┘ └──────────┘ ``` ## 23.5 BeyondCorp — Google 的零信任实践 ``` 传统 VPN 模式: 员工 ──▶ VPN ──▶ 内网 ──▶ 所有资源 ✅ BeyondCorp 模式: 员工 ──▶ Access Proxy ──▶ 策略引擎 ──▶ 特定资源 │ │ │ 检查: │ 决策依据: │ • 用户身份 │ • 用户角色 │ • 设备状态 │ • 设备信任等级 │ • 网络位置 │ • 资源敏感度 │ • 请求上下文 │ • 时间/行为 ``` ## 23.6 ZTNA vs VPN | 维度 | 传统 VPN | ZTNA | |------|---------|------| | 信任模型 | 连接后信任整个网络 | 每次请求验证 | | 访问粒度 | 网络级(IP/端口) | 应用级 | | 攻击面 | 大(整个内网暴露) | 小(仅授权的应用) | | 用户体验 | 需要客户端、延迟高 | 透明、低延迟 | | 横向移动 | 容易 | 困难 | | 可见性 | 低 | 高(每次访问都有日志) | ## 23.7 零信任成熟度模型 ``` ┌─────────────────────────────────────────────────┐ │ Level 4: 最优 │ │ • 自动化响应、AI 驱动的风险评估 │ │ • 持续验证、实时策略调整 │ ├─────────────────────────────────────────────────┤ │ Level 3: 高级 │ │ • 微分段、ABAC、行为分析 │ │ • 工作负载身份(SPIFFE)、自动 mTLS │ ├─────────────────────────────────────────────────┤ │ Level 2: 初级 │ │ • MFA、SSO、基本 RBAC │ │ • 网络分段、日志集中 │ ├─────────────────────────────────────────────────┤ │ Level 1: 传统 │ │ • 边界防御、VPN、密码认证 │ │ • 内网信任、粗粒度访问控制 │ └─────────────────────────────────────────────────┘ ``` ## 23.8 零信任实施路线图 ``` 第一步:身份统一(3-6个月) ├── 部署 OIDC IdP(Keycloak) ├── 全面启用 MFA ├── 部署 SPIFFE/SPIRE(工作负载身份) └── 统一身份目录 第二步:微分段(6-12个月) ├── 部署 Service Mesh(Istio) ├── 启用自动 mTLS ├── 实施 Network Policy └── 最小权限网络策略 第三步:持续验证(12-18个月) ├── 部署细粒度授权(OpenFGA + OPA) ├── 设备信任评估 ├── 行为分析和异常检测 └── 自适应认证 第四步:自动化响应(18-24个月) ├── SOAR 自动化响应 ├── AI 驱动的风险评估 ├── 实时策略调整 └── 持续合规监控 ``` ## 23.9 小结 - **零信任** 的核心是"永不信任,始终验证" - **NIST SP 800-207** 定义了标准的零信任架构(PE/PA/PEP) - 零信任有**五大支柱**:身份、设备、网络、应用、数据 - **BeyondCorp** 是 Google 的零信任实践,用 Access Proxy 替代 VPN - **ZTNA** 比 VPN 更安全、更细粒度、更好的用户体验 - 零信任实施是**渐进式**的,从身份统一开始,逐步深入