本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 任務執行 IAM 角色
任務執行角色會授予 Amazon ECS 容器和 Fargate 代理程式許可,以代表您進行 AWS API 呼叫。視任務需求而定,任務執行 IAM 角色是必要的項目。您可擁有多個任務執行角色,以用於與帳戶相關聯的不同用途和服務。
注意
任務中的容器無法存取這些許可。有關應用程式需要執行的 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 參數存放區參數來參考敏感資料。如需詳細資訊,請參閱Secrets Manager 或 Systems Manager 許可。
-
注意
Amazon ECS 容器代理程式 1.16.0 版和更新版本支援任務執行角色。
Amazon ECS 提供名為 AmazonECSTaskExecutionRolePolicy 的受管政策,其中包含上述常見使用案例所需的許可。如需詳細資訊,請參閱《 AWS 受管政策參考指南》中的 AmazonECSTaskExecutionRolePolicy。針對特殊使用案例,可能需要將內嵌政策新增至您的任務執行角色
Amazon ECS 主控台會建立任務執行角色。您可以手動連接任務的 受管 IAM 政策,以允許 Amazon ECS 在引入任務時新增未來功能和增強功能的許可。您可以使用 IAM 主控台搜尋,ecsTaskExecutionRole
並查看您的帳戶是否已有任務執行角色。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 主控台搜尋。
如果您將映像提取為已驗證的使用者,則不太可能受到 Docker Hub 提取速率限制
透過使用 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 登入資料來存取您的容器映像私有儲存庫 |
|
使用 Systems Manager 或 Secrets Manager 傳遞敏感資料 | |
讓 Fargate 任務在介面端點上提取 Amazon ECR 映像 | |
Amazon S3 儲存貯體中的主機組態檔案 | |
設定 Container Insights 以檢視 Amazon ECS 生命週期事件 | |
在 Container Insights 中檢視 Amazon ECS 生命週期事件 |
私有登錄驗證許可
若要將存取提供給您建立的秘密,請將以下許可字作為內嵌政策,新增到任務執行角色。如需詳細資訊,請參閱新增和移除 IAM 政策。
-
secretsmanager:GetSecretValue
-
kms:Decrypt
- 只有在您的金鑰使用自訂 KMS 金鑰而非預設金鑰時,才需要此項目。您的自訂金鑰的 Amazon Resource Name (ARN) 必須新增為資源。
下列為新增許可的內嵌政策範例。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }
Secrets Manager 或 Systems Manager 許可
允許容器代理程式提取必要 AWS Systems Manager 或 Secrets Manager 資源的許可。如需詳細資訊,請參閱將敏感資料傳遞至 Amazon ECS 容器。
使用 Secrets Manager
若要允許存取您建立的 Secrets Manager 秘密,請將以下許可新增到任務執行角色。如需有關如何管理許可的相關資訊,請參閱《IAM 使用者指南》中的新增和移除 IAM 身分許可。
-
secretsmanager:GetSecretValue
– 如果參考 Secrets Manager 秘密,則此項目為必要。新增從 Secrets Manager 擷取密碼的許可。
下列政策範例新增必要許可。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:
region
:aws_account_id
:secret:secret_name
" ] } ] }
使用 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 應該新增為資源。新增解密客戶受管金鑰的許可。
下列政策範例新增必要許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:
region
:aws_account_id
:parameter/parameter_name
", "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name
", "arn:aws:kms:region
:aws_account_id
:key/key_id
" ] } ] }
透過介面端點許可提取 Amazon ECR 映像的 Fargate 任務
當 Amazon ECR 設定為使用介面 VPC 端點時,只要您啟動使用 Fargate 啟動類型的任務時 (此類型可從 Amazon ECR 中提取映像),您就可以限制任務存取特定的 VPC 或 VPC 端點。建立任務執行角色,讓任務使用利用 IAM 條件金鑰的角色,即可完成此操作。
使用以下 IAM 全域條件金鑰,限制存取特定 VPC 或 VPC 端點。如需詳細資訊,請參閱 AWS 全域條件內容金鑰。
-
aws:SourceVpc
- 限制存取特定 VPC。您可以將 VPC 限制為託管任務和端點的 VPC。 -
aws:SourceVpce
- 限制存取特定 VPC 端點。
以下任務執行角色政策提供新增條件金鑰的範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "
vpce-xxxxxx
", "aws:sourceVpc": "vpc-xxxxx
" } } } ] }
Amazon S3 檔案儲存許可
當您指定託管在 Amazon S3 中的組態檔案時,任務執行角色必須包含組態檔案的s3:GetObject
許可,以及檔案所在的 Amazon S3 儲存貯體的s3:GetBucketLocation
許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的 Amazon S3 政策動作。
下列範例政策新增從 Amazon S3 擷取檔案所需的許可。指定 Amazon S3 儲存貯體的名稱和組態檔案名稱。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
s3:GetObject
" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/folder_name
/config_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] }
設定 Container Insights 以檢視 Amazon ECS 生命週期事件所需的許可
任務角色需要下列許可,才能設定生命週期事件:
-
events:PutRule
-
events:PutTargets
-
logs:CreateLogGroup
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }
在 Container Insights 中檢視 Amazon ECS 生命週期事件所需的許可
檢視生命週期事件需要以下許可: 將以下許可作為內嵌政策新增至任務執行角色。如需詳細資訊,請參閱新增和移除 IAM 政策。
-
events:DescribeRule
-
events:ListTargetsByRule
-
logs:DescribeLogGroups
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }