博客 多集群 PKI 与 Istio 实践:为服务网格构建可信且可扩展的 PKI
本文详细介绍了如何使用 EJBCA 和 cert-manager 在多集群 Istio 服务网格中实现可信且可扩展的 PKI 解决方案,包括环境设置、证书管理和自动续期等关键步骤。
查看本文大纲
作者:Cristofer TenEyck(Keyfactor 高级解决方案工程师)和 Jimmy Song(Tetrate 布道师)
引言
在云原生应用程序不断发展的背景下,确保跨多个集群的服务网格安全对于保证安全性和合规性至关重要。Istio 作为领先的开源服务网格,提供了用于保护微服务之间通信的工具。然而,在此环境中实施一个强大且可扩展的公钥基础设施(PKI)来管理证书仍然是一个重大挑战。
在本文中,我们将深入探讨使用 EJBCA 开源 PKI 为跨多个集群的 Istio 服务网格实现 PKI 解决方案。我们将重点介绍设置 EJBCA、配置 cert-manager 的 EJBCA 外部签发器,以及确保 Istio 工作负载的证书自动续期的过程。本指南将帮助你构建可信且可扩展的 PKI,实现安全、合规且具有弹性的服务网格。
为什么选择多集群?随着组织扩大其 Kubernetes 基础设施,多集群部署正变得越来越流行。多集群 Istio 设置提供了增强的可用性、容错性以及跨集群的工作负载隔离。
理解 PKI 及其在服务网格中的作用
PKI 是现代数字安全的基石。它涉及管理密钥和证书,以确保用户、应用程序或服务等实体之间的安全通信。在像 Istio 这样的服务网格中,有效的 PKI 对于保护微服务之间的通信,尤其是在多集群环境中,至关重要。
EJBCA 提供了一个用于大规模管理 PKI 的开源解决方案。与 OpenSSL 或 Istio 内置的 PKI 等其他选项相比,EJBCA 提供了一个功能齐全、企业级的 PKI,适用于从简单到更复杂和多用途的部署。EJBCA 的能力超越了仅仅签发 mTLS 证书,提供了合规性特性、安全的可扩展性、密码灵活性,以及与广泛的应用程序集成。
Istio、EJBCA 和 cert-manager
使用 EJBCA 为多集群 Istio 环境设置 PKI。以下是包含的内容:
- 环境准备:我们使用了由主集群和远程集群组成的 MicroK8s 多集群 Istio 设置。两个集群都配置为使用 EJBCA 作为根证书颁发机构(CA)。
- cert-manager 集成:我们展示了 cert-manager 与 EJBCA 的集成,包括 EJBCA 自定义签发器的配置。cert-manager 将处理证书的签发和续期。
- 自动证书续期:PKI 管理中的一个关键挑战是确保证书在到期前自动续期。cert-manager 与 EJBCA 一起,可以在所有集群中实现无缝、对应用程序透明的证书续期。

使用 EJBCA 作为外部 CA 的 Istio 架构设置高级摘要
本节概述了使用 EJBCA 作为外部证书颁发机构(CA)在 Kubernetes 集群上设置 Istio 的步骤。该设置涉及配置两个带有 MetalLB 用于负载均衡的 MicroK8s 集群,集成 EJBCA 进行证书管理,并使用 Helm 安装 Istio 组件。完整指南可在此处找到。
关键步骤包括:
- 安装和配置 Helm 仓库:为 Istio、cert-manager 和 EJBCA 添加必要的 Helm 仓库。
- 部署 cert-manager 和 EJBCA:在主集群和远程集群中使用 Helm 安装 cert-manager,然后部署带有自定义签发器的 EJBCA。此步骤还包括生成并将必要的证书存储为 Kubernetes 密钥。
- 使用 EJBCA 配置 Istio:在 Kubernetes 中创建一个指向 EJBCA 实例的自定义签发器用于签发证书。然后将此签发器集成到 Istio 配置中。
- 安装 Istio 组件:部署 cert-manager-istio-csr 以处理 Istio 的证书签名请求,然后安装 Istio 的基础组件、Istio CNI(容器网络接口)、Istiod(Istio 控制平面)和 Istio 入口网关。
- 自定义和覆盖:应用自定义值以定制 Istio 的行为,例如特定的集群 ID、信任域和用于服务间安全通信的 DNS 配置。
- 自动证书续期:设置配置为 cert-manager 在证书到期前自动续期,而不会对正在运行的应用程序造成中断。

上图是表示 Istio 中 mTLS 证书签发和续期流程的流程图。它展示了从 Istiod 控制平面推送 Envoy 配置到 EJBCA 最终签发证书的流程。
PKI 最佳实践和合规性
为你的 Istio 服务网格构建安全的 PKI,不仅仅是设置任意 PKI 并开始签发证书。它需要遵循最佳实践并符合法规要求,以保持安全性和未来适用性。以下是一些需要考虑的关键点:
- 遵守法规:确保你的 PKI 实施符合如欧盟网络弹性法案和美国提升国家网络安全的行政命令等法规要求。这包括实施弹性的架构,维护审计跟踪,并确保稳健的密钥管理实践。
- 密码灵活性和量子准备:随着密码标准的发展,你的 PKI 必须具备足够的灵活性以适应新的算法和密钥长度。随着量子计算的潜在出现,具备量子准备性变得越来越重要。
- 与信息安全团队合作:与你的信息安全(InfoSec)团队有效合作对于维护 PKI 的安全性和合规性至关重要。这包括定期审查安全策略、持续培训,以及确保 PKI 管理流程与组织的安全目标一致。
结论
在多集群环境中为 Istio 服务网格实施 PKI 看似艰巨,但使用正确的工具和实践,可以高效且有效地实现。EJBCA 结合 cert-manager,提供了一个用于大规模管理证书的解决方案,确保你的 Istio 服务网格 PKI 既安全又合规。
通过遵循本指南中概述的步骤,你将能够建立一个可信的 PKI,实现无缝且强大的证书管理,并与你的信息安全团队有效合作,维护服务网格的安全性。
有关本文中涵盖的主题的更多详细信息和进一步资源,请务必查看下面提供的链接和参考资料。
资源
- 教程——使用 EJBCA 作为外部 PKI 提供商在多集群 Kubernetes 环境中部署 Istio 服务网格
- Istio 文档
- EJBCA 社区版
- cert-manager 文档
- 欧盟网络弹性法案
- 美国网络安全行政命令
- 多集群 Istio 服务网格的跨集群无缝访问指南