本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Envoy Proxy 授权
重要
终止支持通知:2026 年 9 月 30 日, AWS 将停止对的支持。 AWS App Mesh 2026 年 9 月 30 日之后,您将无法再访问 AWS App Mesh 控制台或 AWS App Mesh 资源。有关更多信息,请访问此博客文章从迁移 AWS App Mesh 到 Amazon ECS Service Connect
代理授权授权在 Amazon ECS 任务中、在亚马逊 EKS 上运行的 Kubernetes 容器中或在亚马逊 EC2 实例上运行的 En v oy 代理从 App Mesh Envoy 管理服务中读取一个或多个网格终端节点的配置。对于在 2021 年 4 月 26 日之前已将 Envoy 连接到 App Mesh 端点的客户账户,使用传输层安全性协议 (TLS) 的虚拟节点和虚拟网关(带或不带 TLS)需要代理授权。对于想要在 2021 年 4 月 26 日之后将 Envoy 连接到其 App Mesh 端点的客户账户,所有 App Mesh 功能都需要代理授权。建议所有客户账户为所有虚拟节点启用代理授权,即使这些账户不使用 TLS,也要使用 IAM 对特定资源进行授权,获得安全、一致的体验。代理授权要求在 IAM 策略中指定 appmesh:StreamAggregatedResources
权限。该策略必须附加到 IAM 角色,并且该 IAM 角色必须附加到您托管代理的计算资源上。
创建 IAM 策略
如果您希望服务网格中的所有网格端点都能读取所有网格端点的配置,请跳至 创建 IAM 角色。如果您想限制单个网格端点可以从中读取配置的网格端点,则需要创建一项或多项 IAM 策略。建议将可以读取配置的网格端点限制为仅在特定计算资源上运行的 Envoy 代理。创建 IAM 策略并将 appmesh:StreamAggregatedResources
权限添加到策略中。以下示例策略允许在服务网格中读取名为 serviceBv1
和 serviceBv2
的虚拟节点的配置。无法读取服务网格中定义的任何其他虚拟节点的配置。有关创建或编辑 IAM 策略的更多信息,请参阅《创建 IAM 策略》和《编辑 IAM 策略》。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "appmesh:StreamAggregatedResources",
"Resource": [
"arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/serviceBv1",
"arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/serviceBv2"
]
}
]
}
您可以创建多个策略,每个策略都限制对不同网格端点的访问。
创建 IAM 角色
如果您希望服务网格中的所有网格端点都能读取所有网格端点的配置,则只需创建一个 IAM 角色即可。如果要限制单个网格端点可以从中读取配置的网格端点,则需要为在上一步中创建的每个策略创建一个角色。完成运行代理的计算资源的说明。
-
Amazon EKS — 如果您想使用单个角色,则可以使用在创建集群时创建并分配给工作节点的现有角色。要使用多个角色,您的集群必须满足在集群上为服务账户启用 IAM 角色中定义的要求。创建 IAM 角色并将这些角色与 Kubernetes 服务账户关联。有关更多信息,请参阅为您的服务账户创建 IAM 角色和策略以及为您的服务账户指定 IAM 角色。
-
Amazon ECS — 选择 AWS 服务,选择弹性容器服务,然后在创建 IAM 角色时选择弹性容器服务任务用例。
-
Amazon EC2 — 选择AWS 服务 EC2,选择,然后选择创建 IAM 角色时的EC2用例。无论您是直接在 Amazon EC2 实例上托管代理,还是在实例上运行的 Kubernetes 上托管代理,这都适用。
有关如何创建 IAM 角色的更多信息,请参阅为 AWS 服务创建角色。
附加 IAM 策略
如果您希望服务网格中的所有网格端点都能读取所有网状端点的配置,请将 AWSAppMeshEnvoyAccess
托管 IAM 策略附加到您在上一步中创建的 IAM 角色上。如果要限制单个网格端点可以从中读取配置的网格端点,请将您创建的每个策略附加到您创建的每个角色上。有关向 IAM 角色附加自定义或托管 IAM 策略的更多信息,请参阅添加 IAM 身份权限。
附加 IAM 角色
将每个 IAM 角色附加到相应的计算资源上:
-
Amazon EKS — 如果您将策略附加到工作节点的角色,则可以跳过此步骤。如果您创建了单独的角色,则将每个角色分配给单独的 Kubernetes 服务账户,并将每个服务账户分配给包含 Envoy 代理的单个 Kubernetes 容器组 (pod) 部署规范。有关更多信息,请参阅《Amazon EKS 用户指南》中的为服务账户指定 IAM 角色和 Kubernetes 文档中的为容器组 (pod) 配置服务账户
。 -
Amazon ECS — 将 Amazon ECS 任务角色附加到包含 Envoy 代理的任务定义中。该任务可以用 EC2 或 Fargate 启动类型进行部署。有关如何创建 Amazon ECS 任务角色并将其附加到任务的更多信息,请参阅为任务指定 IAM 角色。
-
亚马逊 EC2 — IAM 角色必须附加到托管 Envoy 代理的亚马逊 EC2 实例。有关如何将角色附加到 Amazon EC2 实例的更多信息,请参阅我已创建一个 IAM 角色,现在我想将其分配给 EC2 实例
。
确认权限
选择其中一个计算服务名称,确认 appmesh:StreamAggregatedResources
权限已分配给托管代理的计算资源。
可以将自定义策略分配给分配给 Worker 节点的角色,也可以分配给各个容器组 (pod),或者两者兼而有之。但是,建议您仅在单个容器组 (pod) 上分配策略,这样您就可以将单个 pod 的访问限制为单个网格端点。如果策略已附加到分配给工作节点的角色,请选择 Amazon EC2 选项卡,然后完成在那里找到的适用于您的工作节点实例的步骤。要确定向 Kubernetes 容器组 (pod) 分配了哪个 IAM 角色,请完成以下步骤。
-
查看 Kubernetes 部署的详细信息,其中包括您要确认已将 Kubernetes 服务账户分配到的容器组 (pod)。以下命令可查看名为的部署的详细信息
my-deployment
。kubectl describe deployment
my-deployment
在返回的输出中,记下右边
Service Account:
的值。如果以Service Account:
开头的行不存在,则当前未为部署分配自定义 Kubernetes 服务账户。你需要分配一个。有关更多信息,请参阅 Kubernetes 文档中的为容器组 (pod) 配置服务账户。 -
查看在上一步中返回的服务帐号的详细信息。以下命令可查看名为的服务帐号的详细信息
my-service-account
。kubectl describe serviceaccount
my-service-account
如果 Kubernetes 服务账号与 AWS Identity and Access Management 角色关联,则返回的其中一行将与以下示例类似。
Annotations: eks.amazonaws.com/role-arn=arn:aws:iam::123456789012:role/my-deployment
在前面的示例中,
my-deployment
是与服务账号关联的 IAM 角色的名称。如果服务帐号输出不包含与上面示例类似的行,那么 Kubernetes 服务帐号未与账户关联,您需要将其关联到一个 AWS Identity and Access Management 账户。有关更多信息,请参阅为服务账户指定 IAM 角色。 登录 AWS Management Console 并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在左侧导航窗格中,选择角色。选择您在上一步中记下的 IAM 角色的名称。
-
确认已列出您之前创建的自定义策略或
AWSAppMeshEnvoyAccess
托管策略。如果两个策略都未附加,请将 IAM 策略附加到 IAM 角色。如果您想附加自定义 IAM 策略但还没有,则需要创建具有所需权限的自定义 IAM 策略。如果附加了自定义 IAM 策略,请选择该策略并确认其中包含"Action": "appmesh:StreamAggregatedResources"
。如果不是,则需要将该权限添加到您的自定义 IAM 策略中。您还可以确认是否列出了特定网格端点的 Amazon 资源名称 (ARN)。如果未 ARNs 列出,则可以编辑策略以添加、删除或更改列出的策略 ARNs。要了解更多信息,请参阅编辑 IAM 策略 和创建 IAM 策略。 -
对每个包含 Envoy 代理的 Kubernetes 容器组 (pod),重复上述步骤。