Istio 1.24 PeerAuthentication

31 阅读3分钟

Istio 1.24 PeerAuthentication 文档详细总结

一、核心定义与作用

PeerAuthentication 是 Istio 中用于定义入站连接双向 TLS(mTLS)要求的核心配置资源,其作用根据部署模式有所差异:

  • Sidecar 模式:决定 Envoy 代理边车(Sidecar)的入站连接是否允许或强制使用 mTLS。
  • Ambient 模式:由 ztunnel 节点代理为 Pod 透明启用安全机制(代理间通信通过 HBONE 协议加密,默认含 mTLS),因此不支持 DISABLE 模式;STRICT 模式可确保无法建立绕过网格的连接。

二、关键配置结构与字段解析

1. PeerAuthentication 核心字段

该资源包含三个核心配置字段,用于定位目标工作负载并设置 mTLS 规则,具体如下表:

字段名类型描述
selectorWorkloadSelector定位应用政策的工作负载,匹配同命名空间的工作负载;若在根命名空间,匹配全网格工作负载。未设置时,应用于政策所在命名空间的所有工作负载(根命名空间则为全网格)。
mtlsMutualTLS工作负载的全局 mTLS 配置,未定义时继承父级(命名空间或网格级)配置。
portLevelMtlsmap<uint32, MutualTLS>端口级 mTLS 配置,仅当设置 selector 时生效,端口指工作负载端口(非 Kubernetes 服务端口)。

2. MutualTLS 结构体

仅包含一个关键字段 mode,用于定义 mTLS 运行模式,依赖 Mode 枚举值配置。

3. Mode 枚举值(mTLS 模式)

Mode 决定了 peer 认证的 mTLS 行为,共四种取值,具体说明如下表:

模式值描述
UNSET继承父级配置(若存在);无父级时,等效于 PERMISSIVE 模式。
DISABLE禁用 mTLS,连接不通过隧道加密(Ambient 模式不支持此值)。
PERMISSIVE宽松模式,连接可采用明文或 mTLS 隧道加密。
STRICT严格模式,强制要求连接为 mTLS 隧道(必须提供客户端证书)。

三、典型配置示例解析

文档提供 4 个核心示例,覆盖不同场景下的 mTLS 政策配置:

1. 命名空间级强制严格 mTLS

为 foo 命名空间下所有工作负载强制启用 mTLS,政策命名为 default,无需 selector(默认应用于全命名空间)。

apiVersion: security.istio.io/v1
kind: PeerAuthentication
metadata:
  name: default
  namespace: foo
spec:
  mtls:
    mode: STRICT
  • 若需网格级政策,将该配置部署至 Istio 安装的根命名空间即可。

2. 命名空间宽松 + 特定工作负载严格

foo 命名空间默认允许明文 /mTLS 混合连接,但对 app: finance 标签的工作负载强制严格 mTLS,通过两个政策组合实现:

  • 命名空间级政策(default):mode: PERMISSIVE;
  • 工作负载级政策(finance):通过 selector 定位 finance 工作负载,设置 mode: STRICT。

3. 工作负载级严格 + 特定端口禁用

对 foo 命名空间下 finance 工作负载强制严格 mTLS,但通过 portLevelMtls 例外配置,允许其 8080 端口使用明文:

spec:
  selector: # 定位 finance 工作负载
    matchLabels:
      app: finance
  mtls:
    mode: STRICT # 全局严格模式
  portLevelMtls:
    8080: # 工作负载的 8080 端口禁用 mTLS
      mode: DISABLE

4. 继承父配置 + 特定端口禁用

finance 工作负载继承命名空间 / 网格级 mTLS 配置(mtls.mode: UNSET),仅针对 8080 端口禁用 mTLS,适用于需局部例外的场景。

四、关键注意事项

  1. Ambient 模式限制:不支持 DISABLE 模式,STRICT 模式用于阻断绕过网格的连接。
  1. 端口定义规则:portLevelMtls 中的端口始终指向工作负载自身的端口,与 Kubernetes Service 端口无关。
  1. 政策作用范围:根命名空间的 PeerAuthentication 可覆盖全网格工作负载,非根命名空间仅作用于自身命名空间。
  1. 继承优先级:工作负载级政策优先级高于命名空间级,命名空间级高于网格级;portLevelMtls 优先级高于全局 mtls 配置。