本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在亚马逊上使用AWS私有 CA TLS 在 A AWS pp Mesh 中激活 m EKS
由 Omar Kahil (AWS)、Emmanuel Saliu ()、Muhammad Shahzad (AWS) 和 Andy Wong (AWS) 创作 AWS
摘要
此模式显示如何在 A AWS pp M TLS esh 中使用私有证书颁发机构(AWS私有 CAAWS)的证书在 Amazon Web Services (AWS) 上实现相互传输层安全 (m)。它API通过适用于所有人的安全生产身份框架 (SDS) 使用 Envoy 秘密发现服务 (SPIFFE)。 SPIFFE是一个 Cloud Native Computing Foundation (CNCF) 开源项目,拥有广泛的社区支持,可提供精细的动态工作负载身份管理。要实施SPIFFE标准,请使用SPIRESPIFFE运行时环境。
TLS在 App Mesh 中使用 m 可以提供双向对等身份验证,因为它可以增加一层安全保护,TLS并允许网格中的服务验证正在建立连接的客户端。客户端-服务器关系中的客户端还会在会话协商过程中提供 X.509 证书。服务器使用此证书来识别和验证客户端。这有助于验证证书是否由受信任的证书颁发机构 (CA) 颁发,以及证书是否有效。
先决条件和限制
先决条件
带有自我管理或托管节点组的亚马逊 Elastic Kubernetes Servic EKS e (Amazon) 集群
已SDS激活的 App Mesh 控制器部署在集群上
来自 Certifice Manager (ACM) 的私有AWS证书,由AWS私有 CA 颁发
限制
SPIRE无法在 AWS Fargate 上安装,因为SPIRE代理必须作为 Kubernetes 运行。 DaemonSet
产品版本
AWSApp Mesh 控制器图表 1.3.0 或更高版本
架构
下图显示了中包含 App Mesh 的EKS集群VPC。一个工作节点中的SPIRE服务器与其他工作节点中的SPIRE代理以及AWS私有 CA 通信。Envoy 用于SPIRE代理工作节点之间的TLS通信。

下图说明了以下步骤:
颁发证书。
请求证书签名和证书。
工具
AWS 服务
AWS私有 CA — AWS 私有证书颁发机构(AWS私有 CA)允许创建私有证书颁发机构 (CA) 层次结构,包括根和下级 CACAs,而无需支付运营本地 CA 的投资和维护成本。
AWSApp Mes h — AWS App Mesh 是一种服务网格,可以更轻松地监控和控制服务。App Mesh 将服务通信方式标准化,为应用程序中的每个服务提供一致的可见性和网络流量控制。
亚马逊 EKS — 亚马逊 Elastic Kubernetes Servic EKS e(亚马逊)是一项托管服务,您可以使用它来运行 AWS Kubernetes,而无需安装、操作和维护自己的 Kubernetes 控制平面或节点。
其他工具
Helm
– Helm 是 Kubernetes 的软件包管理器,可帮助您在 Kubernetes 集群上安装和管理应用程序。此模式使用 Helm 来部署 AWS App Mesh 控制器。 AWSApp Mesh 控制器图表
— 此模式使用 AWS App Mesh 控制器图表在亚马逊上启用 A AWS pp Mesh EKS。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
使用亚马逊设置 App Mesh EKS。 | 按照存储库 | DevOps 工程师 |
安装 SPIRE。 | 使用 spi re | DevOps 工程师 |
安装AWS私有 CA 证书。 | 按照AWS文档中的说明为您的私有根 CA 创建和安装证书。 | DevOps 工程师 |
向集群节点实例角色授予权限。 | 若要将策略附加到集群节点实例角色,请使用其他信息部分中的代码。 | DevOps 工程师 |
为AWS私有 CA 添加SPIRE插件。 | 要将插件添加到SPIRE服务器配置中,请使用 “其他信息” 部分中的代码。将 有关该插件的更多信息,请参阅服务器插件: UpstreamAuthority “aws_pca | DevOps 工程师 |
更新 bundle.cert。 | 创建SPIRE服务器后,将创建一个 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
向注册节点和工作负载条目SPIRE。 | 要向SPIRE服务器注册节点和工作负载(服务),请使用存储库 | DevOps 工程师 |
在 App Mesh 中创建一个TLS激活 m 的网格。 | 在 App Mesh 中创建一个新网格,其中包含微服务应用程序的所有组件(例如,虚拟服务、虚拟路由器和虚拟节点)。 | DevOps 工程师 |
检查已注册的条目。 | 您可以通过运行以下命令来检查节点和工作负载的已注册条目。
这将显示SPIRE代理的条目。 | DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
验证我的TLS流量。 |
| DevOps 工程师 |
验证证书是否由AWS私有 CA 颁发。 | 您可以通过查看SPIRE服务器中的日志来检查插件是否配置正确,以及证书是否已从上游私有 CA 颁发。运行以下命令。
然后查看生成的日志。此代码假定您的服务器名为 | DevOps 工程师 |
相关资源
其他信息
将权限附加到集群节点实例角色
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ACMPCASigning",
"Effect": "Allow",
"Action": [
"acm-pca:DescribeCertificateAuthority",
"acm-pca:IssueCertificate",
"acm-pca:GetCertificate",
"acm:ExportCertificate"
],
"Resource": "*"
}
]
}
AWS Managed Policy: "AWSAppMeshEnvoyAccess"
添加SPIRE插件 ACM
Add the SPIRE plugin for ACM
Change certificate_authority_arn to your PCA ARN. The signing algorithm used must be the same as the signing algorithm on the PCA. Change your_region to the appropriate AWS Region.
UpstreamAuthority "aws_pca" {
plugin_data {
region = "your_region"
certificate_authority_arn = "arn:aws:acm-pca:...."
signing_algorithm = "your_signing_algorithm"
}
}