Istio 认证策略深度解析
Istio 安全架构概述
Istio 提供了高级别的安全架构,其中核心组件包括:
- mTLS(双向 TLS):在服务间通信中强制使用加密传输
- 认证策略:控制服务间和请求级别的身份验证
- 授权策略:定义资源访问控制规则
mTLS 工作模式
Istio 支持三种 mTLS 模式:
- 允许模式(Permissive):工作负载同时接受明文和 mTLS 流量,适用于迁移阶段
- 强制模式(Strict):工作负载仅接受 mTLS 流量,推荐生产环境使用
- 禁用模式(Disable):禁用 mTLS,需自行实现安全方案
mTLS 流程中,Istio 通过 Envoy 代理实现:
- 服务器证书通过 SDS(服务发现服务)获取
- 客户端证书由 Istio mTLS 过滤器验证
- 验证通过后,将客户端身份信息存储为动态元数据
认证策略(PeerAuthentication)
认证策略用于控制服务间的 mTLS 认证:
- 作用范围:支持网格、命名空间、工作负载和端口级别
- 策略配置:
apiVersion: \"security.istio.io/v1beta1\"
kind: \"PeerAuthentication\"
spec:
mtls:
mode: STRICT # 可选 STRICT, PERMISSIVE, DISABLE, UNSET
- 匹配逻辑:最窄作用范围的策略优先
- 过滤器行为:
- 验证连接是否使用 mTLS
- 保存客户端身份信息(如 SPIFFE ID)
- 不验证信任域,授权策略可进一步控制
请求认证(RequestAuthentication)
请求认证用于验证请求中的 JWT:
授权策略(AuthorizationPolicy)
授权策略用于控制请求访问权限:
Envoy RBAC 过滤器
授权策略通过 Envoy RBAC 过滤器执行:
总结
Istio 认证策略体系通过 mTLS 和 JWT 两种机制实现服务间和请求级别的身份验证,授权策略则提供细粒度的访问控制。整个流程通过 Envoy 过滤器执行,将认证结果作为动态元数据传递给后续授权决策,形成完整的安全链路。建议在生产环境中使用强制 mTLS 模式,并配合授权策略实现最小权限原则。