Amazon ECS 基础设施 IAM 角色 - Amazon Elastic Container Service

Amazon ECS 基础设施 IAM 角色

Amazon ECS 基础设施 IAM 角色允许 Amazon ECS 代表您管理集群中的基础设施资源,并在以下情况使用:

  • 您想将 Amazon EBS 卷附加到您的 Fargate 或 EC2 启动类型 Amazon ECS 任务。基础设施角色允许 Amazon ECS 为您的任务管理 Amazon EBS 卷。

  • 您想使用传输层安全性协议(TLS)加密您的 Amazon ECS Service Connect 服务之间的流量。

当 Amazon ECS 担任此角色代表您采取行动时,这些事件将在 AWS CloudTrail 中可见。如果 Amazon ECS 使用该角色来管理附加到任务的 Amazon EBS 卷,则 CloudTrail 日志 roleSessionName 将为 ECSTaskVolumesForEBS。如果此角色用于加密您的 Service Connect 服务之间的流量,则 CloudTrail 日志 roleSessionName 将为 ECSServiceConnectForTLS。您可以使用此名称通过筛选用户名在 CloudTrail 控制台中搜索事件。

Amazon ECS 提供了若干托管式策略,其中包含卷挂载和 TLS 所需的权限。有关更多信息,请参阅《AWS 托管式策略参考指南》中的 AmazonECSInfrastructureRolePolicyForVolumesAmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity

创建 Amazon ECS 基础设施角色

将所有用户输入替换为您自己的信息。

  1. 创建一个名为 ecs-infrastructure-trust-policy.json 的文件,其中包含要用于 IAM 角色的信任策略。该文件应包含以下内容:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToECSForInfrastructureManagement", "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 使用您在上一步中创建的信任策略,并使用以下 AWS CLI 命令创建一个名为 ecsInfrastructureRole 的角色。

    aws iam create-role \ --role-name ecsInfrastructureRole \ --assume-role-policy-document file://ecs-infrastructure-trust-policy.json
  3. 根据您的使用案例,将 AWS 托管的 AmazonECSInfrastructureRolePolicyForVolumesAmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 策略附加到 ecsInfrastructureRole 角色。

    aws iam attach-role-policy \ --role-name ecsInfrastructureRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForVolumes
    aws iam attach-role-policy \ --role-name ecsInfrastructureRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity

您也可以使用 IAM 控制台的自定义信任策略工作流程来创建该角色。有关更多信息,请参阅《IAM 用户指南》中的使用自定义信任策略创建角色(控制台)

重要

如果 Amazon ECS 使用 ECS 基础设施角色来管理附加到您的任务的 Amazon EBS 卷,则请在停止使用 Amazon EBS 卷的任务之前确保满足以下条件。

  • 该角色未被删除。

  • 该角色的信任策略不会被修改为删除 Amazon ECS 访问权限(ecs.amazonaws.com)。

  • 托管策略 AmazonECSInfrastructureRolePolicyForVolumes 未被删除。如果您必须修改角色的权限,则请至少保留 ec2:DetachVolumeec2:DeleteVolumeec2:DescribeVolumes 用于卷删除。

在停止带有附加 Amazon EBS 卷的任务之前删除或修改角色将导致任务陷入 DEPROVISIONING 状态,并且关联的 Amazon EBS 卷无法删除。Amazon ECS 将定期自动重试以停止任务并删除该卷,直到恢复必要的权限。您可以使用 DescribeTasks API 查看任务的卷附加状态和关联的状态原因。

创建该文件后,您必须向用户授予将该角色传递给 Amazon ECS 的权限。

授予将基础设施角色传递给 Amazon ECS 的权限

要使用 ECS 基础设施 IAM 角色,您必须授予用户将该角色传递给 Amazon ECS 的权限。将以下 iam:PassRole 权限附加到您的用户。将 ecsInfrastructureRole 替换为您创建的基础设施角色的名称。

{ "Version": "2012-10-17", "Statement": [ { "Action": "iam:PassRole", "Effect": "Allow", "Resource": ["arn:aws:iam::*:role/ecsInfrastructureRole"], "Condition": { "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"} } } ] }

有关 iam:Passrole 和更新用户权限的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的向用户授予权限以将角色传递给 AWS 服务更改 IAM 用户的权限