TLS 安全链路

MOSN 的 TLS 安全能力。

本文将向您展示 MOSN 的 TLS 安全能力。

证书方案

MOSN 支持通过 Istio Citadel 的证书签发方案,基于 Istio 社区的 SDS (Secret Discovery Service)方案为 Sidecar 配置证书,支持证书动态发现和热更新能力。为了支持更高级的安全能力,MOSN 没有使用 Citadel 的证书自签发能力,而是通过对接内部 KMS 系统获取证书。同时提供证书缓存和证书推送更新能力。

我们先来看看 MOSN 证书方案的架构图,如下图所示:

MOSN 证书方案

各组件职能如下:

  • Pilot:负责 Policy、SDS 配置下发,为简化复杂度,图中未标出
  • Citadel:Citadel 作为 Certificate Provider ,同时作为 MCP Server 为 Citadel Agent 提供 Pod、CR等资源
  • Citadel Agent:提供 SDS Server 服务,为MOSN、DB Sidecar、Security Sidecar 提供Certificate和CR下发能力
  • KMS:密钥管理系统负责证书签发

证书获取流程

对整体架构有个大致理解后,我们分解下 Sidecar 获取证书的流程,如下图所示:

证书获取流程

补充说明下图中的每一步环节:

  • Citadel 与 Citadel agent(nodeagent)组件通过MCP协议(Mesh Configuration Protocol)同步Pod 和 CR 信息,避免 citadel agent 直接请求 API Server 导致 API Server 负载过高
  • MOSN 通过Unix Domain Socket 方式向 Citadel Agent 发起 SDS 请求
  • Citadel Agent 会进行防篡改校验,并提取appkey
  • Citadel Agent 携带 appkey 请求 Citadel 签发证书
  • Citadel 检查证书是否已缓存,如果缓存证书未过期,Citadel 将直接响应缓存证书
  • 证书不在缓存中,Citadel 会基于 appkey 构造证书签发请求,向 KMS 申请签发证书
  • KMS 会将签发的证书响应回Citadel,另外 KMS 也支持证书过期轮换通知
  • Citadel 收到证书后,会将证书传递给到对应的 Citadel Agent
  • Citadel Agent 收到证书后,会在内存中缓存证书,并将证书下发给到 MOSN

修改于 2020年1月21日: New website with docsy theme (2dbd2ae)