本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Kubernetes 保护 Amazon 私有 CA
Kubernetes 容器和应用程序使用数字证书来提供安全的身份验证和加密。TLSKubernetes 中一种广泛采用的TLS证书生命周期管理解决方案是证书管理器
Amazon 私有 CA 为证书管理器提供了一个开源插件 aws-privateca-issuer
下图显示了在 Amazon EKS 集群TLS中可用的一些选项。此示例集群包含各种资源,位于负载均衡器后面。这些数字标识了TLS安全通信的可能端点,包括外部负载均衡器、入口控制器、服务中的单个 pod 以及一对相互安全通信的 pod。
![简化的 Kubernetes 拓扑](images/kubernetes-pca.png)
-
在负载均衡器上终止。
Elastic Load Balancing (ELB) 是一项 Amazon Certificate Manager 集成服务,这意味着您可以使用私ACM有 CA 进行配置,使用私有 CA 签署证书,然后使用ELB控制台进行安装。此解决方案提供远程客户端和负载均衡器之间的加密通信。数据以未加密方式传递到集EKS群。或者,您可以向非Amazon 负载均衡器提供私有证书以供终止TLS。
-
在 Kubernetes 入口控制器处终止。
入口控制器作为本地负载均衡器和路由器驻留在EKS集群内。如果您同时安装了 cert-manager 和 aws-privateca-issuer,并为集群配置了私有 CA,Kubernetes 可以在控制器上安装签名TLS证书,使其可以作为集群的外部通信端点。负载均衡器和入口控制器之间的通信是加密的,进入后,数据会以未加密的方式传递到集群的资源。
-
在容器组(pod)上终止。
每个容器组(pod)是一组共享存储和网络资源的一个或多个容器。如果您同时安装了证书管理器和 aws-privateca-issuer,并且为集群配置了私有 CA,Kubernetes 可以根据需要在 Pod 上安装签TLS名证书。默认情况下,集群中的其他 Pod 无法使用在某个 Pod 上终止的TLS连接。
-
容器组(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 上配置访问权限。