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

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

使用 Kubernetes 保护 Amazon 私有 CA

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

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

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

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

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

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

    入口控制器作为本地负载均衡器和路由器驻留在EKS集群内。如果您同时安装了 cert-manageraws-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 集群。有关更多信息,请参阅 跨账户访问私密账户的安全最佳实践 CAs

注意

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

支持的证书模板

下表列出了可用于证书管理器来配置 Kubernetes 集群的 Amazon 私有 CA 模板。

示例解决方案

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