1. 服务网格安全概述
1.1 零信任架构:从边界防御到身份信任
传统安全模型依赖边界防御——防火墙内的服务默认可信。但在微服务和多云环境下,边界已模糊。零信任架构(Zero Trust Architecture, ZTA)的核心原则是:永不信任,始终验证。
零信任三大核心原则:
- 显式验证:所有请求必须基于身份、上下文和策略进行认证与授权。
- 最小权限:仅授予完成工作所需的最小访问权限。
- 假设受损:假设网络已被入侵,所有流量必须加密和认证。
服务网格是实现零信任的基础设施层最佳载体。它通过 Sidecar 代理拦截所有进出流量,将安全决策从应用代码下沉到平台层,实现透明、可观测、可审计的零信任执行。
1.2 mTLS 在服务网格中的角色
mTLS(双向传输层安全协议)是零信任架构的通信基石。与单向 TLS 不同,mTLS 要求客户端和服务端互相出示证书,实现双向身份认证。
| 维度 | 单向 TLS | 双向 TLS (mTLS) |
|---|---|---|
| 认证方向 | 客户端验证服务端 | 客户端与服务端互相验证 |
| 证书要求 | 仅服务端需要证书 | 双方都需要证书 |
| 身份粒度 | 域名/主机级别 | 服务/工作负载级别 |
| 网格适用性 | 仅加密,无身份绑定 | 加密 + 身份认证,适合零信任 |
mTLS 在服务网格中的关键价值:
- 身份认证:每个工作负载拥有 SPIFFE 标准身份,通过 X.509 证书验证。
- 传输加密:所有东西向流量自动加密,防止中间人攻击。
- 策略执行:认证后的身份可用于细粒度访问控制(RBAC/ABAC)。
- 可观测性:证书身份可关联到遥测数据,实现安全审计。
1.3 Istio 安全模型总览
Istio 的安全模型围绕身份、通信安全、策略执行三大支柱构建,提供从证书管理到访问控制的完整安全体系。
| 安全支柱 | 核心组件 | 关键能力 |
|---|---|---|
| 身份 | istiod (CA)、SDS | SPIFFE 身份颁发、X.509 证书签发、自动轮换 |
| 通信安全 | Envoy Proxy、mTLS | 自动 mTLS、PERMISSIVE/MODE 模式、证书验证 |
| 策略执行 | AuthorizationPolicy | 基于身份的 RBAC、条件访问控制、审计日志 |
关键设计原则:Istio 将安全决策从应用代码中解耦,通过 Sidecar 代理透明执行。这意味着应用开发者无需修改代码即可获得 mTLS 加密和身份认证能力,但运维人员必须正确管理证书生命周期和策略配置。
1.4 核心安全组件:Citadel 与 SDS
Istio 的安全体系依赖两个关键组件:
- Citadel (istiod CA):负责管理证书颁发机构(CA),为每个工作负载签发 SPIFFE 标准的 X.509 证书。支持自签名 CA、集成外部 CA(如 cert-manager、Vault)。
- SDS (Secret Discovery Service):通过 Envoy 的 SDS API 动态分发证书和密钥,避免将私钥写入 Pod 文件系统,支持证书热更新。
SDS 相比传统挂载 Secret 的优势:
- 动态更新:证书轮换无需重启 Pod,Envoy 自动加载新证书。
- 安全增强:私钥不落盘,减少泄露风险。
- 生命周期管理:支持证书过期前自动轮换,避免服务中断。