本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 任務執行 IAM 角色
任務執行角色會授予 Amazon ECS 容器和 Fargate 代理程式許可,以代表您進行 AWS API 呼叫。視任務需求而定,任務執行 IAM 角色是必要的項目。您可擁有多個任務執行角色,以用於與帳戶相關聯的不同用途和服務。
注意
Amazon ECS 會定期傳送角色的臨時憑證給在執行個體上執行的代理程式,從而使代理程式能夠使用這些許可,但任務中的容器無法直接存取這些許可。有關容器內應用程式程式碼需要執行的 IAM 許可,請參閱 Amazon ECS 任務 IAM 角色。
以下是任務執行 IAM 角色的常見使用案例:
-
您的任務託管於 AWS Fargate、Amazon ECS 受管執行個體或外部執行個體,以及:
-
從 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 角色中可能需要的許可不同。如需有關 Amazon ECR 的任務 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 儲存貯體的名稱和組態檔案名稱。
重要安全考量事項
使用與 Amazon S3 儲存貯體整合的 Amazon ECS 功能時,請實作儲存貯體擁有權驗證,以防止儲存貯體接管攻擊。如果 Amazon S3 儲存貯體遭到相同名稱的惡意執行者刪除並重新建立,您的任務可能會在不知情的情況下載入惡意組態,或將敏感資料傳送至攻擊者控制的儲存貯體。
建議的 IAM 政策條件:
"Condition": {
"StringEquals": {
"aws:ResourceAccount": "TRUSTED-ACCOUNT-ID"
}
}
將 TRUSTED-ACCOUNT-ID 取代為擁有 S3 儲存貯體 AWS 的帳戶 ID。
此條件可確保您的任務執行角色只能存取指定受信任帳戶擁有的 Amazon S3 儲存貯體。