2. Istio安全架构基础:AuthorizationPolicy、PeerAuthentication、RequestAuthentication的关系

在Istio服务网格中,安全访问控制由三个核心CRD(自定义资源)协同完成:AuthorizationPolicy(授权策略)、PeerAuthentication(对等认证)和RequestAuthentication(请求认证)。理解三者之间的层级关系与协作机制,是构建回滚护栏策略的前提。

2.1 三层安全模型概览

Istio的安全架构遵循“认证 → 授权”的流水线模型。认证层先验证通信双方的身份,授权层再根据身份决定是否允许请求通过。三者并非平级,而是存在明确的依赖与触发顺序。

核心原则:认证是授权的前提。如果PeerAuthentication或RequestAuthentication拒绝了请求,AuthorizationPolicy将不会被执行。
Istio 三层安全模型架构图 第1层:传输层安全(PeerAuthentication) 验证服务间通信的TLS/mTLS连接 策略模式:DISABLE / PERMISSIVE / STRICT 第2层:身份认证层(RequestAuthentication) 验证终端用户/工作负载的JWT令牌 基于JWKS端点校验签发者、受众、过期时间 第3层:授权层(AuthorizationPolicy) 基于认证结果执行访问控制决策 规则:来源(source)→ 操作(operation)→ 条件(condition) 说明:认证失败 → 请求被拒绝,授权策略不生效;认证成功 → 授权策略按规则执行

2.2 三种策略的职责与配置维度

策略类型 作用层级 核心职责 配置维度 生效时机
PeerAuthentication 传输层(TLS) 控制服务间通信是否启用mTLS 网格级别 / 命名空间级别 / 工作负载级别 连接建立阶段
RequestAuthentication 身份层(JWT) 验证请求中的JWT令牌有效性 工作负载级别(通过selector) 请求到达Sidecar后、授权前
AuthorizationPolicy 授权层(RBAC) 基于身份和请求属性执行访问控制 网格级别 / 命名空间级别 / 工作负载级别 认证通过后、路由转发前
实战提示:在回滚护栏场景中,AuthorizationPolicy是最常被变更的对象,而PeerAuthentication和RequestAuthentication通常作为稳定的认证基线,不建议频繁修改。

2.3 三者协作的执行流程

当一个请求从客户端进入服务网格时,Envoy Sidecar代理会按照以下顺序执行安全检查:

  1. TLS握手阶段:PeerAuthentication决定是否要求客户端提供证书,以及是否启用mTLS。
  2. JWT验证阶段:如果配置了RequestAuthentication,Sidecar会提取请求中的JWT令牌,验证签名、签发者和过期时间。
  3. 授权决策阶段:AuthorizationPolicy根据认证结果(来源身份、JWT claims)和请求属性(路径、方法、请求头)做出允许/拒绝决策。
常见误区:很多用户认为AuthorizationPolicy可以独立工作。实际上,如果PeerAuthentication设置为DISABLE(禁用mTLS),且RequestAuthentication未配置,AuthorizationPolicy中的source.principal将无法匹配任何身份,导致策略“形同虚设”。
请求安全处理流程图(Envoy Sidecar视角) 入站请求 PeerAuthentication TLS/mTLS校验 RequestAuthentication JWT令牌验证 AuthorizationPolicy 授权规则匹配 允许 ✅ 拒绝 ❌ 认证失败 说明:认证失败直接拒绝,不经过授权策略;认证成功后才进入AuthorizationPolicy决策阶段

2.4 策略作用域与优先级

三种策略都支持在多个作用域配置,Istio会按照最精确匹配原则合并策略:

  • 网格级别:通过mesh关键字配置,影响网格内所有工作负载。
  • 命名空间级别:配置在特定命名空间,影响该命名空间下所有工作负载。
  • 工作负载级别:通过selector匹配特定Pod,优先级最高。
回滚护栏关联:AuthorizationPolicy支持action: AUDIT模式(Istio 1.18+),可以在不实际拒绝请求的情况下记录策略匹配结果。这是实现“先审计、后阻断”回滚策略的关键能力。

2.5 三者关系总结

对比维度 PeerAuthentication RequestAuthentication AuthorizationPolicy
安全层级 传输层(L4) 身份层(L7) 授权层(L7)
验证对象 服务证书(SPIFFE) JWT令牌 认证后的身份+请求属性
失败后果 连接被拒绝 请求被拒绝(401) 请求被拒绝(403)
变更频率 低(基础设施级) 中(接入新客户端时) 高(业务策略频繁调整)
回滚关注点 避免误设为DISABLE导致通信中断 避免JWKS端点不可用导致认证失败 避免规则过严或过松导致业务受损
课程衔接:在后续章节中,我们将重点围绕AuthorizationPolicy的变更回滚展开,因为它是业务访问控制策略变更最频繁、风险最高的组件。PeerAuthentication和RequestAuthentication将作为“认证基线”在回滚护栏中扮演校验前置条件的角色。