特使代理授權 - AWS App Mesh

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

特使代理授權

代理授權授權授權在 Amazon ECS 任務內執行的特使代理、在 Amazon EKS 上執行的 Kubernetes 網繭中執行,或在 Amazon EC2 執行個體上執行的執行個體中,從 App Mesh Envoy 管理服務讀取一或多個網狀端點的組態。對於在 2021 年 4 月 26 日之前已經擁有 Envoys 連線至其 App Mesh 端點的客戶帳戶,使用傳輸層安全性 (TLS) 的虛擬節點和虛擬閘道 (有無 TLS) 的虛擬節點需要 Proxy 授權。對於想要在 2021 年 4 月 26 日之後將 Envoys 連線到其 App Mesh 端點的客戶帳戶,所有 App Mesh 功能都需要代理授權。建議所有客戶帳戶對所有虛擬節點啟用 Proxy 授權,即使他們不使用 TLS,以獲得使用 IAM 授權特定資源的安全且一致的體驗。代理授權要求在 IAM 政策中指定權appmesh:StreamAggregatedResources限。該政策必須附加到 IAM 角色,並且該 IAM 角色必須附加到託管代理的計算資源。

建立 IAM 政策

如果您希望服務網格中的所有網格端點都能夠讀取所有網格端點的組態,請跳至建立 IAM 角色。如果要限制個別網狀端點可從中讀取組態的網格端點,則需要建立一或多個 IAM 政策。建議將可從中讀取組態的網狀端點限制為僅在特定計算資源上執行的 Envoy Proxy。建立 IAM 政策並將appmesh:StreamAggregatedResources許可新增至政策中。下列範例原則允許在服務網格中讀取名serviceBv2serviceBv1和的虛擬節點的組態。無法讀取服務網格中定義的任何其他虛擬節點的組態。如需有關建立或編輯 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 角色即可。如果您要限制個別網格端點可從中讀取組態的網格端點,則需要為您在上一個步驟中建立的每個策略建立角色。完成 Proxy 執行所在之計算資源的指示。

  • Amazon EKS — 如果您想要使用單一角色,則可以使用在建立叢集時建立並指派給工作者節點的現有角色。若要使用多個角色,您的叢集必須符合在叢集上為服務帳戶啟用 IAM 角色中定義的要求。建立身分與存取權管理角色,並將這些角色與 Kubernetes 服務帳戶建立關聯。如需詳細資訊,請參閱為服務帳戶建立 IAM 角色和政策為服務帳戶指定 IAM 角色

  • Amazon ECS — 選取AWS服務、選取彈性容器服務,然後在建立 IAM 角色時選取彈性容器服務任務使用案例。

  • Amazon EC2 — 選取AWS服務、選取 EC2,然後在建立 IAM 角色時選取 EC2 使用案例。無論您是直接在 Amazon EC2 執行個體上託管代理伺服器,或是在執行個體上執行個體執行個體上執行個體上執行個體或

如需有關建立 IAM 角色的詳細資訊,請參閱建立 IAM 角色,請參閱建立 IAM 角色,請參閱建立 IAMAWS

連接 IAM 政策

如果您希望服務網格中的所有網狀端點都能讀取所有網狀端點的組態,請將AWSAppMeshEnvoyAccess受管 IAM 政策附加到您在上一個步驟中建立的 IAM 角色。如果您要限制個別網格端點可從中讀取組態的網格端點,請將您建立的每個策略附加到您建立的每個角色。如需將自訂或受管 IAM 政策附加至 IAM 角色的詳細資訊,請參閱新增 IAM 身分許可。

連接 IAM 角色

將每個 IAM 角色附加到適當的運算資源:

  • Amazon EKS — 如果您將政策附加到工作者節點上的角色,則可以略過此步驟。如果您建立不同的角色,請將每個角色指派給個別的 Kubernetes 服務帳戶,並將每個服務帳戶指派給包含特使代理的個別 Kubernetes 網繭部署規格。如需詳細資訊,請參閱 Amazon EKS 使用者指南中的為您的服務帳戶指定 IAM 角色和 Kubernetes 說明文件中的設定網繭的服務帳戶。

  • 亞馬遜 ECS — 將 Amazon ECS 任務角色附加到包含特使代理的任務定義。可使用 EC2 或 Fargate 啟動類型來部署此任務。有關如何建立 Amazon ECS 任務角色並將其附加到任務的詳細資訊,請參閱為任務指定 IAM 角色

  • Amazon EC2 — IAM 角色必須附加到託管特使代理的 Amazon EC2 實例。有關如何將角色附加到 Amazon EC2 執行個體的詳細資訊,請參閱我已建立 IAM 角色,現在我想將其指派給 EC2 執行個體

確認許可

選取其中一個計算服務名稱,確認已將appmesh:StreamAggregatedResources權限指派給託管 Proxy 的計算資源。

Amazon EKS

可將自訂原則指派給指派給工作者節點的角色、個別網繭或兩者。不過,建議您僅在個別網繭上指派原則,以便將個別網繭的存取限制為個別網狀端點。如果政策附加到指派給工作者節點的角色,請選取 Amazon EC2 索引標籤,然後完成工作者節點執行個體在此處找到的步驟。若要判斷指派給 Kubernetes 網繭的身分與存取權管理角色,請完成下列步驟。

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

    kubectl describe deployment my-deployment

    在返回的輸出中,請注意右側的值Service Account:。如果開頭為的行Service Account:不存在,則目前不會將自訂 Kubernetes 服務帳戶指派給部署。您需要指派一個。如需詳細資訊,請參閱 Kubernetes 文件中的設定 Pod 的服務帳戶

  2. 檢視上一個步驟傳回之服務帳戶的詳細資訊。下列命令會檢視名為的服務帳戶的詳細資料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 角色

  3. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

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

  5. 確認已列出您先前建立的自訂原則或受AWSAppMeshEnvoyAccess管理的原則。如果兩個政策都未附加,請將 IAM 政策附加到 IAM 角色。如果您想要附加自訂 IAM 政策,但沒有自訂 IAM 政策,則需要建立具有所需許可的自訂 IAM 政策。如果已附加自訂 IAM 政策,請選取該政策並確認其包含"Action": "appmesh:StreamAggregatedResources"。如果沒有,則您需要將該權限新增至自訂 IAM 政策。您也可以確認列出特定的網狀端點適當的 Amazon Resource Name (ARN)。如果未列出任何 ARN,則您可以編輯策略以新增、移除或變更列出的 ARN。如需詳細資訊,請參閱編輯 IAM 政策建立 IAM 政策.

  6. 針對包含特使代理伺服器的每個 Kubernetes 網繭重複上述步驟。

Amazon ECS
  1. 在 Amazon ECS 主控台中,選擇「任務定義」。

  2. 選擇您的 ECS S S S S S S S S S

  3. 在「作業定義名稱」頁面上,選取您的作業定義。

  4. 在「任務定義」頁面上,選取「任務角色」右側的 IAM 角色名稱連結。如果未列出 IAM 角色,則您需要建立 IAM 角色,並透過更新任務定義將其附加到您的任務。

  5. 在 [摘要] 頁面的 [權限] 索引標籤上,確認已列出您先前建立的自訂原則或AWSAppMeshEnvoyAccess受管理的原則。如果兩個政策都未附加,請將 IAM 政策附加到 IAM 角色。如果您想要附加自訂 IAM 政策,但沒有自訂 IAM 政策,則需要建立自訂 IAM 政策。如果已附加自訂 IAM 政策,請選取該政策並確認其包含"Action": "appmesh:StreamAggregatedResources"。如果沒有,則您需要將該權限新增至自訂 IAM 政策。您也可以確認列出適當的 Amazon Resource Name (ARN)。如果未列出任何 ARN,則您可以編輯策略以新增、移除或變更列出的 ARN。如需詳細資訊,請參閱編輯 IAM 政策建立 IAM 政策.

  6. 針對包含 Envoy 代理的每個工作定義重複上述步驟。

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

  2. 選取託管 Envoy 代理伺服器的其中一個執行個體。

  3. 在 [說明] 索引標籤中,選取 IAM 角色右側的 IAM 角色名稱連結。如果未列出 IAM 角色,則需要建立 IAM 角色

  4. 在 [摘要] 頁面的 [權限] 索引標籤上,確認已列出您先前建立的自訂原則或AWSAppMeshEnvoyAccess受管理的原則。如果兩個政策都未附加,請將 IAM 政策附加到 IAM 角色。如果您想要附加自訂 IAM 政策,但沒有自訂 IAM 政策,則需要建立自訂 IAM 政策。如果已附加自訂 IAM 政策,請選取該政策並確認其包含"Action": "appmesh:StreamAggregatedResources"。如果沒有,則您需要將該權限新增至自訂 IAM 政策。您也可以確認列出適當的 Amazon Resource Name (ARN)。如果未列出任何 ARN,則您可以編輯策略以新增、移除或變更列出的 ARN。如需詳細資訊,請參閱編輯 IAM 政策建立 IAM 政策.

  5. 針對託管 Envoy 代理伺服器的每個執行個體重複上述步驟。