3. 零信任架构核心组件:PDP、PEP、IAM、微隔离与动态信任评估引擎

零信任架构不是买一个盒子就能搞定的。它是一组组件的协同工作。我经常跟团队说,零信任更像一个“安全操作系统”,每个模块各司其职。

今天咱们就拆开看看,这五个核心组件到底在干什么。你理解透了它们,整个零信任架构的骨架也就搭起来了。

3.1 策略决策点(PDP)与策略执行点(PEP)

这两个家伙是零信任的“大脑”和“手脚”。PDP 负责做决定,PEP 负责执行决定。说白了,就是“想”和“做”分离。

3.1.1 PDP:大脑,只做决策

PDP 接收来自 PEP 的访问请求,然后问自己三个问题:

  • 你是谁?(身份验证)
  • 你有权限吗?(授权检查)
  • 环境安全吗?(信任评估)

PDP 不处理数据流,它只输出一个结果:允许 或 拒绝,或者 需要二次认证。

关键点:PDP 必须是无状态的。每次请求都要重新评估。我在项目中见过有人把 PDP 做成有状态的,结果用户登录一次后,后续请求全放行——这跟零信任的理念完全背道而驰。

3.1.2 PEP:手脚,只做执行

PEP 是部署在流量路径上的“门禁”。它拦截请求,发给 PDP 问“放不放行?”,然后根据 PDP 的指令执行。

PEP 通常以这些形式出现:

  • API 网关(南北向流量)
  • 网络代理(东西向流量)
  • 主机防火墙(微隔离场景)

我的经验:PEP 的部署位置很讲究。我曾经在一个项目中把 PEP 放在核心交换机上,结果策略变更时影响了整个网络。后来我建议把 PEP 下沉到主机侧或容器侧,粒度更细,影响面更小。

3.1.3 PDP 与 PEP 的交互流程

咱们用一张图来理解这个流程:

PDP 与 PEP 交互流程 用户/设备 PEP PDP ① 访问请求 ② 请求决策 ③ 允许/拒绝 ④ 转发/阻断 目标资源 说明 PDP 只做决策 PEP 只做执行 两者通过 API 通信 每次请求独立评估

3.2 身份与访问管理(IAM)

IAM 是零信任的基石。没有 IAM,PDP 就是个瞎子——它连“谁在访问”都不知道。

在物联网场景下,IAM 要处理的不只是人,还有设备、应用、服务账号。我把它叫做“四类身份”:

身份类型 示例 认证方式 常见问题
用户 运维人员、管理员 密码 + MFA 弱口令、共享账号
设备 传感器、摄像头、网关 证书、设备指纹 证书过期、设备被篡改
应用 数据平台、控制台 OAuth2、JWT Token 泄露、权限过大
服务账号 微服务间调用 mTLS、API Key 密钥硬编码、轮换不及时

避坑指南:我曾经见过一个项目,给所有传感器配了同一个证书。结果一个传感器被攻破,整个网络都沦陷了。记住:每个设备必须有唯一身份,这是零信任的底线。

3.3 微隔离

微隔离,说白了就是把网络切成小块。传统网络里,一旦进了内网,基本就畅通无阻。微隔离要打破这个局面。

我习惯把微隔离分成三个层次:

  • 主机级隔离:每台主机一个安全组,默认拒绝所有入站流量
  • 进程级隔离:同一台主机上的不同进程,也要做访问控制
  • 应用级隔离:API 级别的访问控制,比如只允许 A 服务调用 B 服务的特定接口

实现微隔离,常见的技术手段有:

  • 网络策略(NetworkPolicy):Kubernetes 原生支持,适合容器化场景
  • 主机防火墙:iptables、nftables,适合传统 VM 环境
  • 服务网格(Service Mesh):Istio、Linkerd,适合微服务架构

我的建议:别一上来就搞全量微隔离。先做“关键路径隔离”——把最敏感的数据流先隔离起来。我有个客户,先隔离了数据库和支付服务,就挡住了 80% 的内部横向攻击。

3.4 动态信任评估引擎

这是零信任里最“智能”的部分。它不只看“你是谁”,还看“你现在怎么样”。

动态信任评估引擎会收集这些信号:

  • 身份信号:认证方式、密码强度、MFA 状态
  • 设备信号:操作系统版本、补丁状态、是否越狱
  • 行为信号:访问时间、访问频率、地理位置
  • 威胁信号:是否来自已知恶意 IP、是否有异常流量

然后,引擎会算出一个“信任分数”。分数低了,PDP 就会要求二次认证,或者直接拒绝。

// 伪代码:信任分数计算逻辑
function calculateTrustScore(context):
    score = 100
    
    // 身份信号
    if context.auth_method == "password_only":
        score -= 20
    if context.mfa_enabled:
        score += 10
    
    // 设备信号
    if context.os_version < min_version:
        score -= 30
    if context.is_jailbroken:
        score -= 50
    
    // 行为信号
    if context.access_time not in business_hours:
        score -= 15
    if context.geo_location != expected_region:
        score -= 25
    
    // 威胁信号
    if context.ip in threat_intel_list:
        score -= 60
    
    return max(0, min(100, score))

注意:信任分数不是一成不变的。我建议每 5 分钟重新评估一次。如果设备突然从北京跳到了纽约,分数应该立刻下降。这就是“动态”的含义。

3.5 五个组件如何协同工作

最后,咱们把五个组件串起来,看看一次完整的零信任访问流程:

  1. 用户/设备 发起访问请求,到达 PEP
  2. PEP 将请求转发给 PDP,附带上下文信息(身份、设备、行为等)
  3. PDP 向 IAM 查询身份和权限
  4. PDP 向 动态信任评估引擎 获取当前信任分数
  5. PDP 综合权限和信任分数,做出决策
  6. PEP 执行决策:允许访问(并记录日志)或阻断
  7. 如果允许,微隔离 确保访问路径上的其他资源不受影响

你看,每个组件各司其职,缺一不可。我在实际项目中,经常先搭 PDP + PEP 的骨架,再逐步接入 IAM、微隔离和信任引擎。这样风险可控,迭代也快。

最后提醒一句:别把零信任当成一个产品来买。它是一个架构思想。你买来的 PDP、IAM 系统,如果不跟你的业务场景结合,就是个摆设。我见过太多“买了零信任产品,但网络还是平的”的案例了。