2. Istio 架构基础:数据面与控制面组件详解
在深入 Serverless 控制面安全策略之前,必须理解 Istio 自身的架构分层。Istio 采用经典的控制面/数据面分离架构,其中控制面负责策略下发与配置管理,数据面负责流量转发与安全执行。本章聚焦四个核心控制面组件:Pilot、Mixer、Citadel、Galley,并阐明它们在 Serverless 场景下的职责变化。
2.1 整体架构分层
Istio 控制面由一组微服务组成,统一管理服务网格内的流量路由、策略执行和证书生命周期。数据面则通过 Sidecar Proxy(Envoy)代理所有进出流量。
关键认知: Serverless 控制面中,Pilot 和 Citadel 是安全策略的核心执行者,Mixer 已被逐步废弃,Galley 承担配置验证与分发的前置角色。
2.2 Pilot:流量管理与安全策略下发
Pilot 是 Istio 控制面的流量管理核心,负责将高级路由规则和策略转换为 Envoy 可理解的配置,并通过 xDS API 下发到所有 Sidecar Proxy。
| 功能维度 | 说明 | Serverless 场景影响 |
|---|---|---|
| 服务发现 | 对接平台注册中心(Kubernetes、Consul 等),维护服务端点列表 | 需适配 Serverless 函数的动态扩缩容与临时端点 |
| 流量路由 | 解析 VirtualService、DestinationRule,生成路由规则 | 支持基于请求头的函数灰度发布 |
| 安全策略下发 | 将 AuthorizationPolicy、PeerAuthentication 转换为 Envoy RBAC 过滤器 | Serverless 场景下需实时更新策略,避免冷启动延迟 |
| 故障恢复 | 支持超时、重试、熔断等弹性模式 | 函数执行时间短,需调整超时阈值 |
安全要点: Pilot 下发的安全策略包括 mTLS 模式(STRICT/PERMISSIVE)、JWT 认证规则以及基于角色的访问控制(RBAC)。在 Serverless 控制面中,Pilot 必须支持策略的热更新,以匹配函数的快速创建与销毁。
2.3 Mixer:策略检查与遥测(已废弃)
Mixer 曾是 Istio 的策略决策点和遥测收集中心,但在 Istio 1.5+ 版本中已被逐步移除,其功能被合并到 Envoy 和新的 Telemetry API 中。
- 历史职责: 每次请求到达时,Sidecar 向 Mixer 发送 Check 请求,验证调用方是否具备权限;同时上报日志和指标。
- 废弃原因: 引入额外的网络延迟(每次请求增加 1-5ms),且难以水平扩展,不适合 Serverless 的高并发短连接场景。
- Serverless 替代方案: 使用 Envoy 内置的 RBAC 过滤器进行本地策略检查,通过 Wasm 插件或 Stats 过滤器收集遥测数据。
注意: 在 Serverless 控制面设计中,不应再依赖 Mixer 组件。所有策略检查应下沉到数据面本地执行,避免引入额外的远程调用开销。
2.4 Citadel:证书管理与身份安全
Citadel 是 Istio 的安全核心,负责管理服务网格内的 TLS 证书、密钥和身份认证。它是实现 mTLS 和 SPIFFE 身份的基础组件。
2.5 Galley:配置验证与分发
Galley 是 Istio 控制面的配置管理网关,负责验证、处理和分发用户提交的 Istio 配置(如 VirtualService、AuthorizationPolicy 等)。
| 功能 | 详细说明 | Serverless 适配 |
|---|---|---|
| 配置验证 | 对用户提交的 YAML 进行语法校验、语义检查和资源引用验证 | 需支持 Serverless 函数特有的资源类型(如 Knative Service) |
| 配置转换 | 将 Istio CRD 转换为内部模型,供 Pilot 和 Citadel 消费 | 需处理函数动态路由的配置转换 |
| 配置分发 | 通过 Mesh Config Protocol (MCP) 将配置推送到 Pilot 等组件 | 需支持增量更新,避免全量推送导致控制面压力 |
| 配置状态报告 | 反馈配置是否被成功应用,提供错误信息 | Serverless 场景下需快速反馈配置状态 |
安全配置流: 用户提交 AuthorizationPolicy → Galley 验证 → 转换为内部模型 → 分发至 Pilot → Pilot 通过 xDS 下发至 Sidecar Proxy → Sidecar 本地执行 RBAC 策略。整个过程在 Serverless 控制面中要求端到端延迟低于 100ms。
2.6 组件职责对比总结
下表从安全策略执行的角度,对比四个控制面组件的核心职责与 Serverless 适配要点:
| 组件 | 核心职责 | 安全策略角色 | Serverless 关键适配 |
|---|---|---|---|
| Pilot | 流量管理、策略下发 | 将安全策略转换为 Envoy 过滤器配置 | 支持策略热更新,适配函数动态扩缩容 |
| Mixer | 策略检查、遥测(已废弃) | 已不再承担安全策略执行 | 完全避免使用,改用 Envoy 本地策略 |
| Citadel | 证书管理、身份认证 | 签发 mTLS 证书,管理 SPIFFE 身份 | 短证书生命周期,与函数实例对齐 |
| Galley | 配置验证、分发 | 验证安全策略配置的合法性 | 支持增量配置更新,快速反馈状态 |