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 的交互流程
咱们用一张图来理解这个流程:
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 五个组件如何协同工作
最后,咱们把五个组件串起来,看看一次完整的零信任访问流程:
- 用户/设备 发起访问请求,到达 PEP
- PEP 将请求转发给 PDP,附带上下文信息(身份、设备、行为等)
- PDP 向 IAM 查询身份和权限
- PDP 向 动态信任评估引擎 获取当前信任分数
- PDP 综合权限和信任分数,做出决策
- PEP 执行决策:允许访问(并记录日志)或阻断
- 如果允许,微隔离 确保访问路径上的其他资源不受影响
你看,每个组件各司其职,缺一不可。我在实际项目中,经常先搭 PDP + PEP 的骨架,再逐步接入 IAM、微隔离和信任引擎。这样风险可控,迭代也快。
最后提醒一句:别把零信任当成一个产品来买。它是一个架构思想。你买来的 PDP、IAM 系统,如果不跟你的业务场景结合,就是个摆设。我见过太多“买了零信任产品,但网络还是平的”的案例了。