本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Envoy Proxy 授权
代理授权授权在 Amazon ECS 任务中、在 Amazon EKS 上运行的 Kubernetes 容器组 (pod)中或在 Amazon EC2 实例上运行的 Envoy 代理从 App Mesh Envoy 管理服务中读取一个或多个网格端点的配置。对于在 2021 年 4 月 26 日之前已将 Envoy 连接到 App Mesh 端点的客户账户,使用传输层安全性协议 (TLS) 的虚拟节点和虚拟网关(带或不带 TLS)需要代理授权。对于想要在 2021 年 4 月 26 日之后将 Envoy 连接到其 App Mesh 端点的客户账户,所有 App Mesh 功能都需要代理授权。建议所有客户账户为所有虚拟节点启用代理授权,即使这些账户不使用 TLS,也要使用 IAM 对特定资源进行授权,获得安全、一致的体验。代理授权要求在 IAM policy 中指定 appmesh:StreamAggregatedResources
权限。该策略必须附加到 IAM 角色,并且该 IAM 角色必须附加到您托管代理的计算资源上。
创建 IAM policy
如果您希望服务网格中的所有网格端点都能读取所有网格端点的配置,请跳至 创建 IAM 角色。如果您想限制单个网格端点可以从中读取配置的网格端点,则需要创建一项或多项 IAM 策略。建议将可以读取配置的网格端点限制为仅在特定计算资源上运行的 Envoy 代理。创建 IAM policy 并将 appmesh:StreamAggregatedResources
权限添加到策略中。以下示例策略允许在服务网格中读取名为 serviceBv1
和 serviceBv2
的虚拟节点的配置。无法读取服务网格中定义的任何其他虚拟节点的配置。有关创建或编辑 IAM policy 的更多信息,请参阅《创建 IAM policy》和《编辑 IAM policy》。
{ "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 policy
如果您希望服务网格中的所有网格端点都能读取所有网状端点的配置,请将 AWSAppMeshEnvoyAccess
托管 IAM 策略附加到您在上一步中创建的 IAM 角色上。如果要限制单个网格端点可以从中读取配置的网格端点,请将您创建的每个策略附加到您创建的每个角色上。有关向 IAM 角色附加自定义或托管 IAM policy 的更多信息,请参阅添加 IAM 身份权限。
附加 IAM 角色
将每个 IAM 角色附加到相应的计算资源上:
-
Amazon EKS — 如果您将策略附加到工作节点的角色,则可以跳过此步骤。如果您创建了单独的角色,则将每个角色分配给单独的 Kubernetes 服务帐户,并将每个服务帐户分配给包含 Envoy 代理的单个 Kubernetes 容器组 (pod) 部署规范。有关更多信息,请参阅《Amazon EKS 用户指南》中的为服务账户指定 IAM 角色和 Kubernetes 文档中的为容器组 (pod) 配置服务账户
。 -
Amazon ECS — 将亚马逊 ECS 任务角色附加到包含 Envoy 代理的任务定义中。此任务可以使用 EC2 或 Fargate 启动类型进行部署。有关如何创建 Amazon ECS 任务角色并将其附加到任务的更多信息,请参阅为任务指定 IAM 角色。
-
亚马逊 EC2 — IAM 角色必须附加到托管 Envoy 代理的 Amazon EC2 实例上。有关如何将角色附加到 Amazon EC2 实例的更多信息,请参阅我已创建一个 IAM 角色,现在我想将其分配给 EC2 实例
。
确认权限
选择其中一个计算服务名称,确认 appmesh:StreamAggregatedResources
权限已分配给托管代理的计算资源。