使用 Amazon 私有 CA 保护 Kubernetes - Amazon Private Certificate Authority
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon 私有 CA 保护 Kubernetes

Kubernetes 容器和应用程序使用数字证书通过 TLS 提供安全身份验证和加密。Kubernetes 中广泛采用的 TLS 证书生命周期管理解决方案是 cert-manager,它是 Kubernetes 的附加组件,用于请求证书、将证书分发到 Kubernetes 容器和自动续订证书。

Amazon 私有 CA为证书管理器提供了一个开源插件 aws-privateca-issuer,适用于想要在集群中不存储私钥的情况下设置 CA 的证书管理器用户。对控制访问和审核其 CA 操作有监管要求的用户可以使用此解决方案来提高可审核性并支持合规性。您可以将 Amazon Private CA Issuer 插件与 Amazon Elastic Kubernetes Service(Amazon EKS)一起使用,后者是 Amazon 上自行管理的 Kubernetes 或位于本地 Kubernetes 中。

下图显示在 Amazon EKS 集群中使用 TLS 的一些可用选项。此示例集群包含各种资源,位于负载均衡器后面。这些数字标识了 TLS 安全通信的可能端点,包括外部负载均衡器、入口控制器、服务中的单个容器组(pod)以及一对相互安全通信的容器组(pod)。

简化的 Kubernetes 拓扑
  1. 在负载均衡器上终止。

    弹性负载均衡(ELB)是一项 Amazon Certificate Manager 集成服务,这意味着您可以使用私有 CA 预置 ACM,使用私有 CA 签署证书,然后使用 ELB 控制台进行安装。此解决方案提供远程客户端和负载均衡器之间的加密通信。数据以未加密方式传递到 EKS 集群。或者,您可以向非 Amazon 负载均衡器提供私有证书以终止 TLS。

  2. 在 Kubernetes 入口控制器处终止。

    入口控制器作为本地负载均衡器和路由器驻留在 EKS 集群内。如果您同时安装了证书管理器aws-privateca-issuer,并为集群配置了私有 CA,那么 Kubernetes 可以在控制器上安装签名的 TLS 证书,使其可以作为集群的外部通信端点。负载均衡器和入口控制器之间的通信是加密的,进入后,数据会以未加密的方式传递到集群的资源。

  3. 在容器组(pod)上终止。

    每个容器组(pod)是一组共享存储和网络资源的一个或多个容器。如果您同时安装了证书管理器aws-privateca-issuer,并且为集群配置了私有 CA,Kubernetes 可以根据需要在 Pod 上安装签名的 TLS 证书。默认情况下,集群中的其他容器组(pod)无法使用在某个容器组(pod)上终止的 TLS 连接。

  4. 容器组(pod)之间的安全通信。

    您还可以为多个容器组(pod)配置证书,允许其相互通信。以下是可能的情况:

    • 使用 Kubernetes 生成的自签名证书进行预置。这可以保护容器组(pod)之间的通信,但是自签名证书不满足 HIPAA 或 FIPS 要求。

    • 使用由私有 CA 签名的证书进行预置。如上面的数字 2 和 3 所示,这需要同时安装证书管理器aws-privateca-issuer,然后为集群配置私有 CA。然后,Kubernetes 可以根据需要在容器组(pod)上安装签名的 TLS 证书。

跨账户使用 cert-manager

对 CA 具有跨账户存取权限的管理员可以使用 cert-manager 来预置 Kubernetes 集群。有关更多信息,请参阅 跨账户存取私有 CA 的安全最佳实践

注意

只有某些 Amazon 私有 CA 证书模板可用于跨账户场景。有关可用模板的列表,请参阅 支持的证书模板

支持的证书模板

下表列出了可与 cert-manager 一起使用来预置 Kubernetes 集群的 Amazon 私有 CA 模板。

示例解决方案

以下集成解决方案展示了如何配置对 Amazon EKS 集群上 Amazon 私有 CA 的访问。