

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Envoy Proxy 授權
<a name="proxy-authorization"></a>

**重要**  
支援終止通知：在 2026 年 9 月 30 日， AWS 將停止對 的支援 AWS App Mesh。2026 年 9 月 30 日之後，您將無法再存取 AWS App Mesh 主控台或 AWS App Mesh 資源。如需詳細資訊，請參閱此部落格文章[從 遷移 AWS App Mesh 至 Amazon ECS Service Connect](https://aws.amazon.com/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)。

Proxy 授權會授權[在 ](envoy.md)Amazon ECS 任務、在 Amazon EKS 上執行的 Kubernetes Pod 或在 Amazon EC2 執行個體上執行的 Envoy 代理，從 App Mesh Envoy Management Service 讀取一或多個網格端點的組態。對於已在 04/26/2021 之前將 Envoys 連接到其 App Mesh 端點的客戶帳戶，使用 [Transport Layer Security (TLS)](https://docs.aws.amazon.com/app-mesh/latest/userguide/tls.html) 的虛擬節點和虛擬閘道 （有或沒有 TLS) 需要代理授權。對於想要在 04/26/2021 之後將 Envoys 連線至其 App Mesh 端點的客戶帳戶，所有 App Mesh 功能都需要代理授權。建議所有客戶帳戶啟用所有虛擬節點的代理授權，即使它們不使用 TLS，也能使用 IAM 對特定資源進行授權，獲得安全且一致的體驗。Proxy 授權需要在 IAM 政策中指定 `appmesh:StreamAggregatedResources`許可。政策必須連接到 IAM 角色，且該 IAM 角色必須連接到您託管代理的運算資源。

## 建立 IAM 政策
<a name="create-iam-policy"></a>

如果您希望服務網格中的所有網格端點能夠讀取所有網格端點的組態，請跳至 [建立 IAM 角色](#create-iam-role)。如果您想要限制個別網格端點可從中讀取組態的網格端點，則需要建立一或多個 IAM 政策。建議僅將組態可從 讀取的網格端點限制為在特定運算資源上執行的 Envoy 代理。建立 IAM 政策並將 `appmesh:StreamAggregatedResources`許可新增至政策。下列範例政策允許在服務網格中`serviceBv2`讀取名為 `serviceBv1`和 的虛擬節點組態。無法讀取服務網格中定義的任何其他虛擬節點的組態。如需建立或編輯 IAM 政策的詳細資訊，請參閱[建立 IAM 政策和](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)[編輯 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)。

------
#### [ JSON ]

****  

```
{
    "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 角色
<a name="create-iam-role"></a>

如果您希望服務網格中的所有網格端點能夠讀取所有網格端點的組態，則只需要建立一個 IAM 角色。如果您想要限制個別網格端點可從中讀取組態的網格端點，則需要為您在上一個步驟中建立的每個政策建立角色。完成代理執行所在的運算資源說明。
+ **Amazon EKS** – 如果您想要使用單一角色，則可以使用建立叢集時建立並指派給工作者節點的現有角色。若要使用多個角色，您的叢集必須符合在[叢集上啟用服務帳戶的 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)中定義的要求。建立 IAM 角色，並將角色與 Kubernetes 服務帳戶建立關聯。如需詳細資訊，請參閱[為您的服務帳戶建立 IAM 角色和政策](https://docs.aws.amazon.com/eks/latest/userguide/create-service-account-iam-policy-and-role.html)，以及[為您的服務帳戶指定 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html)。
+ **Amazon ECS** – 選取**AWS 服務，**選取 **Elastic Container Service**，然後在建立 IAM 角色時選取 **Elastic Container Service 任務**使用案例。
+ **Amazon EC2** – 選取**AWS 服務，**選取 **EC2**，然後在建立 IAM 角色時選取 **EC2** 使用案例。無論您直接在 Amazon EC2 執行個體或執行個體上執行的 Kubernetes 上託管代理，這都適用。

如需如何建立 IAM 角色的詳細資訊，請參閱[為 AWS 服務建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console)。

## 連接 IAM 政策
<a name="attach-iam-policy"></a>

如果您希望服務網格中的所有網格端點能夠讀取所有網格端點的組態，請將 `[AWSAppMeshEnvoyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess%24jsonEditor)`受管 IAM 政策連接至您在上一個步驟中建立的 IAM 角色。如果您想要限制個別網格端點可從中讀取組態的網格端點，請將您建立的每個政策連接至您建立的每個角色。如需將自訂或受管 IAM 政策連接至 IAM 角色的詳細資訊，請參閱[新增 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#add-policies-console)。

## 連接 IAM 角色
<a name="attach-role"></a>

將每個 IAM 角色連接到適當的運算資源：
+ **Amazon EKS** – 如果您將政策連接到連接到工作者節點的角色，則可以略過此步驟。如果您建立了單獨的角色，請將每個角色指派給單獨的 Kubernetes 服務帳戶，並將每個服務帳戶指派給包含 Envoy 代理的個別 Kubernetes Pod 部署規格。如需詳細資訊，請參閱《*Amazon EKS 使用者指南*》中的[為您的服務帳戶指定 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html)，以及《Kubernetes 文件》中的[設定 Pod 的服務帳戶](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)。
+ **Amazon ECS** – 將 Amazon ECS 任務角色連接至包含 Envoy 代理的任務定義。任務可以使用 EC2 或 Fargate 啟動類型部署。如需如何建立 Amazon ECS 任務角色並將其連接至任務的詳細資訊，請參閱[為您的任務指定 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role)。
+ **Amazon EC2** – IAM 角色必須連接到託管 Envoy 代理的 Amazon EC2 執行個體。如需如何將角色連接至 Amazon EC2 執行個體的詳細資訊，請參閱[我已建立 IAM 角色，現在我想要將其指派給 EC2 執行個體](https://aws.amazon.com/premiumsupport/knowledge-center/assign-iam-role-ec2-instance)。

## 確認許可
<a name="confirm-permission"></a>

選取其中一個運算服務名稱，確認將`appmesh:StreamAggregatedResources`許可指派給您託管代理的運算資源。

------
#### [ Amazon EKS ]

自訂政策可指派給指派給工作者節點、個別 Pod 或兩者的角色。不過，建議您只在個別 Pod 指派政策，以便將個別 Pod 的存取限制在個別網格端點。如果政策連接到指派給工作者節點的角色，請選取 **Amazon EC2** 索引標籤，然後完成工作者節點執行個體在該處找到的步驟。若要判斷指派給 Kubernetes Pod 的 IAM 角色，請完成下列步驟。

1. 檢視 Kubernetes 部署的詳細資訊，其中包含您要確認已指派 Kubernetes 服務帳戶的 Pod。下列命令會檢視名為 *my-deployment* 之部署的詳細資訊。

   ```
   kubectl describe deployment my-deployment
   ```

   在傳回的輸出中，記下 右側的值`Service Account:`。如果`Service Account:`沒有以 開頭的行，則目前不會將自訂 Kubernetes 服務帳戶指派給部署。您需要指派一個。如需詳細資訊，請參閱 Kubernetes 文件中的[設定 Pod 的服務帳戶](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)。

1. 檢視上一個步驟中傳回之服務帳戶的詳細資訊。下列命令會檢視名為 *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 角色](https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html)。

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在左側導覽中，選取**角色**。選取您在上一個步驟中記下的 IAM 角色名稱。

1. 確認您先前建立的自訂政策或 `[AWSAppMeshEnvoyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess%24jsonEditor)`受管政策已列出。如果未連接任何政策，請將 [IAM 政策連接至](#attach-iam-policy) IAM 角色。如果您想要連接自訂 IAM 政策，但沒有，則需要[建立具有所需許可的自訂 IAM 政策](#create-iam-policy)。如果連接自訂 IAM 政策，請選取政策並確認其包含 `"Action": "appmesh:StreamAggregatedResources"`。如果沒有，則需要將該許可新增至您的自訂 IAM 政策。您也可以確認已列出特定網格端點的適當 Amazon Resource Name (ARN)。如果未列出 ARNs，您可以編輯政策來新增、移除或變更列出的 ARNs。如需詳細資訊，請參閱[編輯 IAM 政策和](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) [建立 IAM 政策](#create-iam-policy)。

1. 針對包含 Envoy 代理的每個 Kubernetes Pod 重複上述步驟。

------
#### [ Amazon ECS ]

1. 從 Amazon ECS 主控台中，選擇**任務定義**。

1. 選取您的 Amazon ECS 任務。

1. 在**任務定義名稱**頁面上，選取您的任務定義。

1. 在**任務定義**頁面上，選取任務角色右側的 IAM **角色**名稱連結。如果未列出 IAM 角色，則您需要[建立 IAM 角色](#create-iam-role)，並透過[更新任務定義將其連接至您的任務。](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-task-definition.html)

1. 在**摘要**頁面**的許可**索引標籤中，確認先前建立的自訂政策或`[AWSAppMeshEnvoyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess%24jsonEditor)`受管政策已列出。如果未連接任何政策，請將 [IAM 政策連接至](#attach-iam-policy) IAM 角色。如果您想要連接自訂 IAM 政策，但沒有，則需要[建立自訂 IAM 政策](#create-iam-policy)。如果連接自訂 IAM 政策，請選取政策並確認其包含 `"Action": "appmesh:StreamAggregatedResources"`。如果沒有，則需要將該許可新增至您的自訂 IAM 政策。您也可以確認已列出特定網格端點的適當 Amazon Resource Name (ARN)。如果未列出 ARNs，您可以編輯政策來新增、移除或變更列出的 ARNs。如需詳細資訊，請參閱[編輯 IAM 政策和](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-edit.html) [建立 IAM 政策](#create-iam-policy)。

1. 針對包含 Envoy 代理的每個任務定義重複上述步驟。

------
#### [ Amazon EC2 ]

1. 在 Amazon EC2 主控台中，選取左側導覽中的**執行個體**。

1. 選取託管 Envoy 代理的其中一個執行個體。

1. 在**描述**索引標籤中，選取 IAM 角色右側的 **IAM 角色**名稱連結。如果未列出 IAM 角色，則需要[建立 IAM 角色](#create-iam-role)。

1. 在**摘要**頁面**的許可**索引標籤中，確認先前建立的自訂政策或`[AWSAppMeshEnvoyAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess%24jsonEditor)`受管政策已列出。如果未連接任何政策，[請將 IAM 政策連接至](#attach-iam-policy) IAM 角色。如果您想要連接自訂 IAM 政策，但沒有，則需要[建立自訂 IAM 政策](#create-iam-policy)。如果連接自訂 IAM 政策，請選取政策並確認其包含 `"Action": "appmesh:StreamAggregatedResources"`。如果沒有，則需要將該許可新增至您的自訂 IAM 政策。您也可以確認已列出特定網格端點的適當 Amazon Resource Name (ARN)。如果未列出 ARNs，您可以編輯政策來新增、移除或變更列出的 ARNs。如需詳細資訊，請參閱[編輯 IAM 政策和](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) [建立 IAM 政策](#create-iam-policy)。

1. 為您託管 Envoy 代理的每個執行個體重複上述步驟。

------