Amazon ECS 任務執行 IAM 角色
任務執行角色會授予 Amazon ECS 容器和 Fargate 代理程式許可,以代表您進行 AWS API 呼叫。視任務需求而定,任務執行 IAM 角色是必要的項目。您可擁有多個任務執行角色,以用於與帳戶相關聯的不同用途和服務。
注意
Amazon ECS 會定期傳送角色的臨時憑證給在執行個體上執行的代理程式,從而使代理程式能夠使用這些許可,但任務中的容器無法直接存取這些許可。有關容器內應用程式程式碼需要執行的 IAM 許可,請參閱 Amazon ECS 任務 IAM 角色。
以下是任務執行 IAM 角色的常用案例:
-
您的任務託管於 AWS Fargate 或外部執行個體上,且會:
-
從 Amazon ECR 私有儲存庫提取容器映像。
-
從與執行任務不同帳戶的 Amazon ECR 私有儲存庫提取容器映像。
-
使用
awslogs日誌驅動程式將容器日誌傳送到 CloudWatch Logs。如需更多詳細資訊,請參閱 將 Amazon ECS 日誌傳送至 CloudWatch 。
-
-
您的任務託管於 AWS Fargate 或 Amazon EC2 執行個體上,且會:
-
使用私有登錄檔身分驗證。如需更多詳細資訊,請參閱 私有登錄檔身分驗證許可。
-
使用執行時期監控。
-
任務定義透過 Secrets Manager 秘密或 AWS Systems Manager Parameter Store 參數來引用敏感資料。如需更多詳細資訊,請參閱 Secrets Manager 或 Systems Manager 許可。
-
注意
Amazon ECS 容器代理程式 1.16.0 版和更新版本支援任務執行角色。
Amazon ECS 提供名為 AmazonECSTaskExecutionRolePolicy 的受管政策,包含上述常用案例要求的許可。如需詳細資訊,請參閱 AWS Managed Policy Reference Guide 中的 AmazonECSTaskExecutionRolePolicy。針對特殊使用案例,可能需要將內嵌政策新增至任務執行角色
Amazon ECS 主控台會建立任務執行角色。您可手動連接任務的受管 IAM 政策,讓 Amazon ECS 為日後推出的功能和增強功能新增許可。您可以使用 IAM 主控台搜尋功能來搜尋 ecsTaskExecutionRole,確認帳戶是否已具備任務執行角色。如需詳細資訊,請參閱 IAM user guide 中的 IAM console search。
如果您以經身分驗證的使用者提取映像,受到 Docker Hub usage and limits
透過使用 Amazon ECR 和 Amazon ECR Public,您可以避免 Docker 施加的限制。如果您從 Amazon ECR 提取映像,這也有助於縮短網路提取時間,並減少流量離開 VPC 時的資料傳輸變更。
當您使用 Fargate 時,您必須使用 repositoryCredentials 對私有映像登錄檔進行驗證。無法為 Fargate 上託管的任務設定 Amazon ECS 容器代理程式環境變數 ECS_ENGINE_AUTH_TYPE 或 ECS_ENGINE_AUTH_DATA 或修改 ecs.config 檔案。如需詳細資訊,請參閱任務的私有登錄檔身分驗證。
建立任務執行角色
如果帳戶還沒有任務執行角色,請使用下列步驟來建立角色。
建立角色之後,請為角色新增下列功能的其他許可。
| 功能 | 額外許可 |
|---|---|
|
使用 Secrets Manager 憑證從 AWS 外部私有登錄檔 (例如 Docker Hub、Quay.io 或您自己的私有登錄檔) 提取容器映像 |
|
| 透過 Systems Manager 或 Secrets Manager 傳遞敏感資料 | |
| 讓 Fargate 任務透過介面端點提取 Amazon ECR 映像 | |
| Amazon S3 儲存貯體中的主機組態檔案 | |
| 設定 Container Insights 以檢視 Amazon ECS 生命週期事件 | |
| 在 Container Insights 中檢視 Amazon ECS 生命週期事件 |
私有登錄檔身分驗證許可
私有登錄檔身分驗證允許 Amazon ECS 任務從需要身分驗證憑證的 AWS 外部私有登錄檔 (例如 Docker Hub、Quay.io 或您自己的私有登錄檔) 提取容器映像。此功能透過 Secrets Manager 安全地儲存登錄檔憑證,這些憑證隨後會在任務定義中透過 repositoryCredentials 參數進行引用。
如需有關設定私有登錄檔身分驗證的詳細資訊,請參閱在 Amazon ECS 中使用非 AWS 容器映像。
若要存取內含私有登錄檔憑證的秘密,請將以下許可以內嵌政策形式新增至任務執行角色。如需詳細資訊,請參閱新增和移除 IAM 政策。
-
secretsmanager:GetSecretValue– 從 Secrets Manager 擷取私有登錄檔憑證時需要。 -
kms:Decrypt- 只有在您的秘密使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 Amazon Resource Name (ARN) 必須新增為資源。
下列為新增許可的內嵌政策範例。
Secrets Manager 或 Systems Manager 許可
此許可允許容器代理程式提取必要的 AWS Systems Manager 或 Secrets Manager 資源。如需更多詳細資訊,請參閱 將敏感資料傳遞至 Amazon ECS 容器。
使用 Secrets Manager
若要允許存取您建立的 Secrets Manager 秘密,請將以下許可新增到任務執行角色。如需有關如何管理許可的相關資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可。
-
secretsmanager:GetSecretValue– 如果參考 Secrets Manager 秘密,則此項目為必要。新增從 Secrets Manager 擷取密碼的許可。
下列政策範例新增必要許可。
使用 Systems Manager
重要
對於使用 EC2 啟動類型的任務,您必須使用 ECS 代理程式組態變數 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true,才能使用此功能。您可以在建立容器執行個體期間將其新增至 ./etc/ecs/ecs.config 檔案,也可以將其新增至現有的執行個體,然後重新啟動 ECS 代理程式。如需更多詳細資訊,請參閱 Amazon ECS 容器代理程式組態。
若要允許存取您建立的 Systems Manager Parameter Store 參數,請將以下許可當作政策,手動新增到任務執行角色。如需有關如何管理許可的相關資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可。
-
ssm:GetParameters– 如果參考任務定義中的 Systems Manager Parameter Store 參數,則此項目為必要。新增擷取 Systems Manager 參數的許可。 -
secretsmanager:GetSecretValue– 如果直接參考 Secrets Manager 秘密,或者 Systems Manager Parameter Store 參數參考任務定義中的 Secrets Manager 秘密,則此項目為必要。新增從 Secrets Manager 擷取密碼的許可。 -
kms:Decrypt– 只有在秘密使用客戶受管金鑰而非預設金鑰時,此項目為必要。您的自訂金鑰的 ARN 應該新增為資源。新增解密客戶受管金鑰的許可。
下列政策範例新增必要許可:
Fargate 任務透過介面端點提取 Amazon ECR 映像的許可
當 Amazon ECR 設定為使用介面 VPC 端點時,只要您啟動使用 Fargate 的任務 (可從 Amazon ECR 中提取映像) 時,您就可以限制任務存取特定的 VPC 或 VPC 端點。建立任務執行角色,讓任務使用利用 IAM 條件金鑰的角色,即可完成此操作。
使用以下 IAM 全域條件金鑰,限制存取特定 VPC 或 VPC 端點。如需詳細資訊,請參閱 AWS 全域條件內容金鑰。
-
aws:SourceVpc- 限制存取特定 VPC。您可以將 VPC 限制為託管任務與端點的 VPC。 -
aws:SourceVpce- 限制存取特定 VPC 端點。
以下任務執行角色政策提供新增條件金鑰的範例:
Amazon ECR 許可
當您需要從 Amazon ECR 私有儲存庫提取容器映像時,需要如下許可。任務執行角色應具有這些許可,以允許 Amazon ECS 容器與 Fargate 代理程式代表您提取容器映像。對於基本 ECS 實作,這些許可應新增至任務執行角色,而非任務 IAM 角色。
Amazon ECS 任務執行角色受管政策 (AmazonECSTaskExecutionRolePolicy) 包含從 Amazon ECR 提取映像的必要許可。如果使用受管政策,則不需要另外新增這些許可。
如果要建立自訂政策,請包含下列許可,以允許從 Amazon ECR 提取映像:
請注意,如果應用程式程式碼需要直接與 Amazon ECR API 互動,這些許可與任務 IAM 角色中可能需要的許可不同。如需有關任務 IAM 角色許可的資訊,請參閱 Amazon ECR 許可。
Amazon S3 檔案儲存許可
如果您指定的組態檔案託管於 Amazon S3,則任務執行角色必須包含組態檔案的 s3:GetObject 許可,以及檔案所在 Amazon S3 儲存貯體的 s3:GetBucketLocation 許可。如需詳細資訊,請參閱 Amazon Simple Storage Service User Guide 中的 Policy actions for Amazon S3。
下列範例政策會新增需要的許可,以便從 Amazon S3 中擷取檔案。指定 Amazon S3 儲存貯體的名稱和組態檔案名稱。