Amazon Elastic Container Service AWS 托管策略 - Amazon Elastic Container Service

Amazon Elastic Container Service AWS 托管策略

要向用户、组和角色添加权限,与自己编写策略相比,使用 AWS 托管策略更简单。创建仅为团队提供所需权限的 IAM 客户管理型策略需要时间和专业知识。要快速入门,您可以使用我们的 AWS 托管策略。这些策略涵盖常见使用案例,可在您的 AWS 账户中使用。有关 AWS 托管策略的更多信息,请参阅《IAM 用户指南》中的 AWS 托管策略

AWS 服务负责维护和更新 AWS 管理型策略。您无法更改 AWS 管理型策略中的权限。服务偶尔会向 AWS 管理型策略添加额外权限以支持新特征。此类更新会影响附加策略的所有身份(用户、组和角色)。当启动新特征或新操作可用时,服务最有可能会更新 AWS 管理型策略。服务不会从 AWS 管理型策略中删除权限,因此策略更新不会破坏您的现有权限。

此外,AWS 还支持跨多种服务的工作职能的托管策略。例如,ReadOnlyAccess AWS 管理型策略提供对所有 AWS 服务和资源的只读访问权限。当服务启动新特征时,AWS 会为新操作和资源添加只读权限。有关工作职能策略的列表和说明,请参阅 IAM 用户指南中的适用于工作职能的 AWS 管理型策略

Amazon ECS 和 Amazon ECR 提供了一些托管策略和信任关系,您可以将它们附加到用户、组、角色、Amazon EC2 实例和 Amazon ECS 任务,以实现对资源和 API 操作的不同级别的控制。您可以直接应用这些策略,或者也可以使用它们作为自行创建策略的起点。有关 Amazon ECR 托管策略的更多信息,请参阅 Amazon ECR 托管策略

AmazonECS_FullAccess

您可以将 AmazonECS_FullAccess 策略附加到 IAM 身份。

此策略授予对 Amazon ECS 资源的管理访问权限,并授予 IAM 身份(如用户、组或角色)访问 AWS 服务,以使用 Amazon ECS 的所有功能。使用此策略可以访问 AWS Management Console 中提供的所有 Amazon ECS 功能。

权限详细信息

AmazonECS_FullAccess 托管 IAM policy 必须包含以下权限。遵循授予最低权限的最佳实践,您可以使用 AmazonECS_FullAccess 托管策略作为创建您自己的自定义策略的模板。这样,您就可以根据您的特定要求取消或添加托管策略的权限。

  • ecs – 允许主体完全访问所有 Amazon ECS API 操作。

  • application-autoscaling— 允许委托人创建、描述和管理 Application Auto Scaling 资源。为您的 Amazon ECS 服务启用服务自动扩展时,此操作是必需的。

  • appmesh— 允许委托人列出 App Mesh 服务网格和虚拟节点,并描述 App Mesh 虚拟节点。将您的 Amazon ECS 服务与 App Mesh 集成时需要这样做。

  • autoscaling— 允许委托人创建、托管和描述 Amazon EC2 Auto Scaling 资源。使用集群自动扩缩功能时,在管理 Amazon EC2 Auto Scaling 组时需要此项。

  • cloudformation— 允许委托人创建和管理 AWS CloudFormation 堆栈。这是使用 AWS Management Console 创建 Amazon ECS 群集和后续管理这些群集时所必需的。

  • cloudwatch— 允许委托人创建、托管和描述 Amazon CloudWatch 警报。

  • codedeploy – 允许委托人创建和管理应用程序部署并查看其配置、修订和部署目标。

  • sns— 允许委托人查看 Amazon SNS 主题列表。

  • lambda— 允许委托人查看 AWS Lambda 函数及其版本特定的配置。

  • ec2 – 允许委托人运行 Amazon EC2 实例以及创建和管理路由、路由表、互联网网关、启动组、安全组、虚拟私有云、竞价型实例集和子网。

  • elasticloadbalancing— 允许委托人创建、描述和删除 Elastic Load Balancing 负载平衡器。主体还能够向新创建的目标组、侦听器和负载均衡器的侦听器规则添加标签。

  • events— 允许委托人创建、托管和删除 Amazon EventBridge 规则及其目标。

  • iam— 允许委托人列出 IAM 角色及其附加的策略。主体可以将角色传递给 Amazon ECS,以委托管理挂载到 ECS 任务的 Amazon EBS 卷。委托人还可以列出 Amazon EC2 实例可用的实例配置文件。

  • logs— 允许委托人创建和描述 Amazon CloudWatch Logs 日志组。委托人还可以列出这些日志组的日志事件。

  • route53— 允许委托人创建、托管和删除 Amazon Route 53 托管区域。委托人还可以查看 Amazon Route 53 运行状况检查配置和信息。有关托管区更多信息,请参阅使用私有托管区域

  • servicediscovery— 允许委托人创建、管理和删除 AWS Cloud Map 服务并创建私有 DNS 命名空间。

以下是示例 AmazonECS_FullAccess 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSIntegrationsManagementPolicy", "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "appmesh:DescribeVirtualGateway", "appmesh:DescribeVirtualNode", "appmesh:ListMeshes", "appmesh:ListVirtualGateways", "appmesh:ListVirtualNodes", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteLaunchConfiguration", "autoscaling:Describe*", "autoscaling:UpdateAutoScalingGroup", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStack*", "cloudformation:UpdateStack", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:PutMetricAlarm", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetApplications", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:ContinueDeployment", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetApplicationRevision", "codedeploy:GetDeployment", "codedeploy:GetDeploymentConfig", "codedeploy:GetDeploymentGroup", "codedeploy:GetDeploymentTarget", "codedeploy:ListApplicationRevisions", "codedeploy:ListApplications", "codedeploy:ListDeploymentConfigs", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:ListDeploymentTargets", "codedeploy:RegisterApplicationRevision", "codedeploy:StopDeployment", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotFleetRequests", "ec2:CreateInternetGateway", "ec2:CreateLaunchTemplate", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateVpc", "ec2:DeleteLaunchTemplate", "ec2:DeleteSubnet", "ec2:DeleteVpc", "ec2:Describe*", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:ModifySubnetAttribute", "ec2:ModifyVpcAttribute", "ec2:RequestSpotFleet", "ec2:RunInstances", "ecs:*", "elasticfilesystem:DescribeAccessPoints", "elasticfilesystem:DescribeFileSystems", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeTargetGroups", "events:DeleteRule", "events:DescribeRule", "events:ListRuleNamesByTarget", "events:ListTargetsByRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "fsx:DescribeFileSystems", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "lambda:ListFunctions", "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:FilterLogEvents", "route53:CreateHostedZone", "route53:DeleteHostedZone", "route53:GetHealthCheck", "route53:GetHostedZone", "route53:ListHostedZonesByName", "servicediscovery:CreatePrivateDnsNamespace", "servicediscovery:CreateService", "servicediscovery:DeleteService", "servicediscovery:GetNamespace", "servicediscovery:GetOperation", "servicediscovery:GetService", "servicediscovery:ListNamespaces", "servicediscovery:ListServices", "servicediscovery:UpdateService", "sns:ListTopics" ], "Resource": [ "*" ] }, { "Sid": "SSMPolicy", "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters", "ssm:GetParametersByPath" ], "Resource": "arn:aws:ssm:*:*:parameter/aws/service/ecs*" }, { "Sid": "ManagedCloudformationResourcesCleanupPolicy", "Effect": "Allow", "Action": [ "ec2:DeleteInternetGateway", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-name": "EC2ContainerService-*" } } }, { "Sid": "TasksPassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "*" ], "Condition": { "StringLike": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } }, { "Sid": "InfrastructurePassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsInfrastructureRole" ], "Condition": { "StringEquals": { "iam:PassedToService": "ecs.amazonaws.com" } } }, { "Sid": "InstancePassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsInstanceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.rproxy.goskope.com.cn" ] } } }, { "Sid": "AutoScalingPassRolePolicy", "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsAutoscaleRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "application-autoscaling.amazonaws.com", "application-autoscaling.amazonaws.com.rproxy.goskope.com.cn" ] } } }, { "Sid": "ServiceLinkedRoleCreationPolicy", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "ecs.amazonaws.com", "autoscaling.amazonaws.com", "ecs.application-autoscaling.amazonaws.com", "spot.amazonaws.com", "spotfleet.amazonaws.com" ] } } }, { "Sid": "ELBTaggingPolicy", "Effect": "Allow", "Action": [ "elasticloadbalancing:AddTags" ], "Resource": "*", "Condition": { "StringEquals": { "elasticloadbalancing:CreateAction": [ "CreateTargetGroup", "CreateRule", "CreateListener", "CreateLoadBalancer" ] } } } ] }

AmazonECSInfrastructureRolePolicyForVolumes

AmazonECSInfrastructureRolePolicyForVolumes 托管 IAM 策略授予 Amazon ECS 代表您进行 AWS API 调用所需的权限。您可以将此策略附加到启动 Amazon ECS 任务和服务时随卷配置提供的 IAM 角色。该角色使 Amazon ECS 能够管理附加到任务的卷。有关更多信息,请参阅 Amazon ECS 基础设施 IAM 角色

权限详细信息

AmazonECSInfrastructureRolePolicyForVolumes 托管 IAM policy 必须包含以下权限。遵循授予最低权限的标准安全建议,您可以使用 AmazonECSInfrastructureRolePolicyForVolumes 托管策略作为创建仅包含所需权限的自定义策略的模板。

  • ec2:CreateVolume – 允许主体利用快照创建 Amazon EBS 卷。

  • ec2:CreateVolume – 当且仅当主体标有 AmazonECSCreatedAmazonECSManaged 标签时,才允许其创建 Amazon EBS 卷。需要此权限才能创建附加到 Amazon ECS 任务的 Amazon EBS 卷并最大限度地减少此策略向 Amazon ECS 提供的权限。

  • ec2:CreateTags – 允许主体向 Amazon EBS 卷添加标签作为 ec2:CreateVolume 的一部分。Amazon ECS 需要此权限才能将客户指定的标签添加到代表您创建的 Amazon EBS 卷。

  • ec2:AttachVolume – 允许主体将 Amazon EBS 卷附加到 Amazon EC2 实例。Amazon ECS 需要此权限才能将 Amazon EBS 卷附加到托管相关 Amazon ECS 任务的 Amazon EC2 实例。

  • ec2:DescribeVolume – 允许主体检索有关 Amazon EBS 卷的信息。管理 Amazon EBS 卷的生命周期需要此权限。

  • ec2:DescribeAvailabilityZones – 允许主体检索有关您账户中可用区的信息。这是管理 EBS 卷的生命周期所必需的。

  • ec2:DetachVolume – 允许主体将 Amazon EBS 卷与 Amazon EC2 实例分离。任务终止时,Amazon ECS 需要此权限才能将 Amazon EBS 卷与托管相关 Amazon ECS 任务的 Amazon EC2 实例分离。

  • ec2:DeleteVolume – 允许主体删除 Amazon EBS 卷。Amazon ECS 需要此权限才能删除 Amazon ECS 任务不再使用的 Amazon EBS 卷。

  • ec2:DeleteTags – 允许主体从 Amazon EBS 卷中删除 AmazonECSManaged 标签。Amazon EBS 卷不再与 Amazon ECS 工作负载关联后,Amazon ECS 需要此权限才能删除对该卷的访问权限。这仅适用于任务关闭后未删除 Amazon EBS 卷的情况。

以下是示例 AmazonECSInfrastructureRolePolicyForVolumes 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateEBSManagedVolume", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true" } } }, { "Sid": "CreateEBSManagedVolumeFromSnapshot", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:snapshot/*" }, { "Sid": "TagOnCreateVolume", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "ec2:CreateAction": "CreateVolume", "aws:RequestTag/AmazonECSManaged": "true" } } }, { "Sid": "DescribeVolumesForLifecycle", "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeAvailabilityZones" ], "Resource": "*" }, { "Sid": "ManageEBSVolumeLifecycle", "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } }, { "Sid": "ManageVolumeAttachmentsForEC2", "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DetachVolume" ], "Resource": "arn:aws:ec2:*:*:instance/*" }, { "Sid": "DeleteEBSManagedVolume", "Effect": "Allow", "Action": "ec2:DeleteVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ArnLike": { "aws:ResourceTag/AmazonECSCreated": "arn:aws:ecs:*:*:task/*" }, "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } } ] }

AmazonEC2ContainerServiceforEC2Role

Amazon ECS 将此策略附加到服务角色,该角色允许 Amazon ECS 代表您对 Amazon EC2 实例或外部实例执行操作。

此策略授予允许Amazon ECS容器实例代表您调用 AWS 的管理权限。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

注意事项

您应注意以下建议和注意事项,使用 AmazonEC2ContainerServiceforEC2Role 托管 IAM policy。

  • 遵循授予最低权限的标准安全建议,您可以修改 AmazonEC2ContainerServiceforEC2Role 托管策略,以满足您的特定需求。如果您的用例不需要托管策略中授予的任何权限,请创建自定义策略并仅添加所需的权限。例如,为 Spot Instance 耗尽提供 UpdateContainerInstancesState 权限。如果您的用例不需要该权限,请使用自定义策略将其排除。有关更多信息,请参阅 权限详细信息

  • 在您的容器实例上运行的容器有权获得通过实例元数据提供给容器实例角色的所有权限。建议您将容器实例角色中的权限限制在托管 AmazonEC2ContainerServiceforEC2Role 策略中提供的最低权限列表的范围内。如果您的任务中的容器需要此处未列出的其他权限,建议您为这些任务提供其自己的 IAM 角色。有关更多信息,请参阅 Amazon ECS 任务 IAM 角色

    您可以防止在 docker0 网桥访问提供给容器实例角色的权限。您可以在仍然允许通过在容器实例上运行以下命令 Amazon ECS 任务 IAM 角色 提供的权限的情况下执行 iptables 此操作。容器无法查询此规则生效的实例元数据。此命令采用原定设置 Docker 网桥配置,它不适用于使用 host 网络模式的容器。有关更多信息,请参阅 网络模式

    sudo yum install -y iptables-services; sudo iptables --insert DOCKER USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP

    您必须将此 iptables 规则保存到容器实例上,使其在重启后仍然可用。对于经 Amazon ECS 优化的 AMI,请使用以下命令。对于其他操作系统,请参阅该操作系统的相关文档。

    • 对于经 Amazon ECS 优化的 Amazon Linux 2 AMI:

      sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
    • 对于经 Amazon ECS 优化的 Amazon Linux AMI:

      sudo service iptables save

权限详细信息

AmazonEC2ContainerServiceforEC2Role 托管 IAM policy 必须包含以下权限。遵循授予最低权限的标准安全建议,AmazonEC2ContainerServiceforEC2Role 托管策略可用作指南。如果不需要在托管策略中为您的用例授予的任何权限,请创建自定义策略并仅添加所需的权限。

  • ec2:DescribeTags— 允许委托人描述与 Amazon EC2 实例关联的标签 Amazon ECS 容器代理使用此权限来支持资源标签传播。有关更多信息,请参阅 如何为资源添加标签

  • ecs:CreateCluster— 允许委托人创建 Amazon ECS 集群。Amazon ECS 容器代理将使用此权限创建 default 集群(如果还没有集群)。

  • ecs:DeregisterContainerInstance— 允许委托人从集群注销 Amazon ECS 容器实例。Amazon ECS 容器代理不会调用此 API 操作,但仍保留此权限以帮助确保后续的兼容性。

  • ecs:DiscoverPollEndpoint— 此操作返回 Amazon ECS 容器代理用于轮询更新的端点。

  • ecs:Poll— 允许 Amazon ECS 容器代理与 Amazon ECS 控制平面通信,报告任务状态更改。

  • ecs:RegisterContainerInstance— 允许委托人向集群注册容器实例。Amazon ECS 容器代理使用此权限向集群注册 Amazon EC2 实例并支持资源标签传播。

  • ecs:StartTelemetrySession— 允许 Amazon ECS 容器代理与 Amazon ECS 控制平面通信,报告每个容器和任务的运行状况信息和指标。

  • ecs:TagResource – 允许 Amazon ECS 容器代理在创建集群时标记集群,并在容器实例注册到集群时对其进行标记。

  • ecs:UpdateContainerInstancesState— 允许委托人修改 Amazon ECS 容器实例的状态。Amazon ECS 容器代理将此权限用于 Spot Instance 耗尽。

  • ecs:Submit* –这包括 SubmitAttachmentStateChangesSubmitContainerStateChangeSubmitTaskStateChange API 操作。Amazon ECS 容器代理使用它们向 Amazon ECS 控制平面报告每个资源的状态变化。SubmitContainerStateChange 权限不再被 Amazon ECS 容器代理使用,但仍可帮助确保后续的兼容性。

  • ecr:GetAuthorizationToken— 允许委托人检索授权令牌。授权令牌表示您的 IAM 身份验证凭证,可用于访问您的 IAM 委托人有权访问的任何 Amazon ECR 注册表。收到的授权令牌有效期为 12 小时。

  • ecr:BatchCheckLayerAvailability— 将容器映像推送到 Amazon ECR 私有存储库时,会检查每个映像层验证它是否已推送。如果是,则会跳过映像层。

  • ecr:GetDownloadUrlForLayer— 从 Amazon ECR 专用存储库中提取容器映像时,对于尚未缓存的每个图像图层,此 API 都会调用一次。

  • ecr:BatchGetImage— 从 Amazon ECR 私有存储库提取容器映像时,会调用一次此 API 以检索映像清单。

  • logs:CreateLogStream— 允许委托人为指定的日志组创建 CloudWatch Logs 日志流。

  • logs:PutLogEvents— 允许委托人将一批日志事件上传到指定的日志流。

以下是示例 AmazonEC2ContainerServiceforEC2Role 策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:UpdateContainerInstancesState", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ecs:TagResource", "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": [ "CreateCluster", "RegisterContainerInstance" ] } } } ] }

AmazonEC2ContainerServiceEventsRole

此策略授予允许 Amazon EventBridge(以前的 CloudWatch Events)代表您运行任务的权限。此策略可附加到创建计划任务时指定的 IAM 角色。有关更多信息,请参阅 Amazon ECS EventBridge IAM 角色

权限详细信息

该策略包含以下权限。

  • ecs— 允许服务中的委托人调用 Amazon ECS RunTask API。允许服务中的主体在调用 Amazon ECS RunTask API 时添加标签(TagResource)。

  • iam— 允许将任何 IAM 服务角色传递给任何 Amazon ECS 任务。

以下是示例 AmazonEC2ContainerServiceEventsRole 策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ecs:RunTask"], "Resource": ["*"] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": ["*"], "Condition": { "StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"} } }, { "Effect": "Allow", "Action": "ecs:TagResource", "Resource": "*", "Condition": { "StringEquals": { "ecs:CreateAction": ["RunTask"] } } } ] }

AmazonECSTaskExecutionRolePolicy

AmazonECSTaskExecutionRolePolicy 托管 IAM policy 授予 Amazon ECS 容器代理和 AWS Fargate 要创建的容器代理代表您调用 AWS API。此策略可添加到您的任务执行 IAM 角色中。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

权限详细信息

AmazonECSTaskExecutionRolePolicy 托管 IAM policy 必须包含以下权限。遵循授予最低权限的标准安全建议,AmazonECSTaskExecutionRolePolicy 托管策略可用作指南。如果您的用例不需要托管策略中授予的任何权限,请创建自定义策略并仅添加所需的权限。

  • ecr:GetAuthorizationToken— 允许委托人检索授权令牌。授权令牌表示您的 IAM 身份验证凭证,可用于访问您的 IAM 委托人有权访问的任何 Amazon ECR 注册表。收到的授权令牌有效期为 12 小时。

  • ecr:BatchCheckLayerAvailability— 将容器映像推送到 Amazon ECR 私有存储库时,会检查每个映像层验证它是否已推送。如果已推送,则会跳过映像层。

  • ecr:GetDownloadUrlForLayer— 从 Amazon ECR 专用存储库中提取容器映像时,对于尚未缓存的每个图像图层,此 API 都会调用一次。

  • ecr:BatchGetImage— 从 Amazon ECR 私有存储库提取容器映像时,会调用一次此 API 以检索映像清单。

  • logs:CreateLogStream— 允许委托人为指定的日志组创建 CloudWatch Logs 日志流。

  • logs:PutLogEvents— 允许委托人将一批日志事件上传到指定的日志流。

以下是示例 AmazonECSTaskExecutionRolePolicy 策略。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

AmazonECSServiceRolePolicy

AmazonECSServiceRolePolicy 托管 IAM policy 使 Amazon Elastic Container Service 能够管理您的集群。此策略可添加到您的任务执行 IAM 角色中。有关更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

权限详细信息

AmazonECSServiceRolePolicy 托管 IAM policy 必须包含以下权限。遵循授予最低权限的标准安全建议,AmazonECSServiceRolePolicy 托管策略可用作指南。如果您的用例不需要托管策略中授予的任何权限,请创建自定义策略并仅添加所需的权限。

  • autoscaling— 允许委托人创建、托管和描述 Amazon EC2 Auto Scaling 资源。使用集群自动扩缩功能时,在管理 Amazon EC2 Auto Scaling 组时需要此项。

  • autoscaling-plans – 允许主体创建、删除和描述自动扩缩计划。

  • cloudwatch— 允许委托人创建、托管和描述 Amazon CloudWatch 警报。

  • ec2 – 允许主体运行到 Amazon EC2 实例及创建和管理网络接口和标签。

  • elasticloadbalancing— 允许委托人创建、描述和删除 Elastic Load Balancing 负载平衡器。主体还将能够添加和描述目标组。

  • logs— 允许委托人创建和描述 Amazon CloudWatch Logs 日志组。委托人还可以列出这些日志组的日志事件。

  • route53— 允许委托人创建、托管和删除 Amazon Route 53 托管区域。委托人还可以查看 Amazon Route 53 运行状况检查配置和信息。有关托管区更多信息,请参阅使用私有托管区域

  • servicediscovery— 允许委托人创建、管理和删除 AWS Cloud Map 服务并创建私有 DNS 命名空间。

  • events— 允许委托人创建、托管和删除 Amazon EventBridge 规则及其目标。

以下是示例 AmazonECSServiceRolePolicy 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECSTaskManagement", "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:Describe*", "ec2:DetachNetworkInterface", "elasticloadbalancing:DeregisterInstancesFromLoadBalancer", "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:Describe*", "elasticloadbalancing:RegisterInstancesWithLoadBalancer", "elasticloadbalancing:RegisterTargets", "route53:ChangeResourceRecordSets", "route53:CreateHealthCheck", "route53:DeleteHealthCheck", "route53:Get*", "route53:List*", "route53:UpdateHealthCheck", "servicediscovery:DeregisterInstance", "servicediscovery:Get*", "servicediscovery:List*", "servicediscovery:RegisterInstance", "servicediscovery:UpdateInstanceCustomHealthStatus" ], "Resource": "*" }, { "Sid": "AutoScaling", "Effect": "Allow", "Action": [ "autoscaling:Describe*" ], "Resource": "*" }, { "Sid": "AutoScalingManagement", "Effect": "Allow", "Action": [ "autoscaling:DeletePolicy", "autoscaling:PutScalingPolicy", "autoscaling:SetInstanceProtection", "autoscaling:UpdateAutoScalingGroup", "autoscaling:PutLifecycleHook", "autoscaling:DeleteLifecycleHook", "autoscaling:CompleteLifecycleAction", "autoscaling:RecordLifecycleActionHeartbeat" ], "Resource": "*", "Condition": { "Null": { "autoscaling:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "AutoScalingPlanManagement", "Effect": "Allow", "Action": [ "autoscaling-plans:CreateScalingPlan", "autoscaling-plans:DeleteScalingPlan", "autoscaling-plans:DescribeScalingPlans", "autoscaling-plans:DescribeScalingPlanResources" ], "Resource": "*" }, { "Sid": "EventBridge", "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule" ], "Resource": "arn:aws:events:*:*:rule/ecs-managed-*" }, { "Sid": "EventBridgeRuleManagement", "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets" ], "Resource": "*", "Condition": { "StringEquals": { "events:ManagedBy": "ecs.amazonaws.com" } } }, { "Sid": "CWAlarmManagement", "Effect": "Allow", "Action": [ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:*" }, { "Sid": "ECSTagging", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*" }, { "Sid": "CWLogGroupManagement", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:PutRetentionPolicy" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*" }, { "Sid": "CWLogStreamManagement", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:log-group:/aws/ecs/*:log-stream:*" }, { "Sid": "ExecuteCommandSessionManagement", "Effect": "Allow", "Action": [ "ssm:DescribeSessions" ], "Resource": "*" }, { "Sid": "ExecuteCommand", "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ecs:*:*:task/*", "arn:aws:ssm:*:*:document/AmazonECS-ExecuteInteractiveCommand" ] }, { "Sid": "CloudMapResourceCreation", "Effect": "Allow", "Action": [ "servicediscovery:CreateHttpNamespace", "servicediscovery:CreateService" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "AmazonECSManaged" ] } } }, { "Sid": "CloudMapResourceTagging", "Effect": "Allow", "Action": "servicediscovery:TagResource", "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/AmazonECSManaged": "*" } } }, { "Sid": "CloudMapResourceDeletion", "Effect": "Allow", "Action": [ "servicediscovery:DeleteService" ], "Resource": "*", "Condition": { "Null": { "aws:ResourceTag/AmazonECSManaged": "false" } } }, { "Sid": "CloudMapResourceDiscovery", "Effect": "Allow", "Action": [ "servicediscovery:DiscoverInstances", "servicediscovery:DiscoverInstancesRevision" ], "Resource": "*" } ] }

AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity

提供代表您管理 Amazon ECS Service Connect TLS 功能所需的对 AWS Private Certificate Authority、Secrets Manager 和其他 AWS 服务的管理权限。

权限详细信息

AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 托管 IAM policy 必须包含以下权限。遵循授予最低权限的标准安全建议,AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 托管策略可用作指南。如果您的用例不需要托管策略中授予的任何权限,请创建自定义策略并仅添加所需的权限。

  • secretsmanager:CreateSecret – 允许主体创建密钥。Service Connect TLS 需要此权限,这样 Amazon ECS 才能将客户的私有密钥保存在客户的 Secrets Manager 密钥中。

  • secretsmanager:TagResource – 允许主体在创建的密钥上附加标签。Service Connect TLS 需要此权限,因为 Amazon ECS 代表客户创建密钥并将标签附加到资源。这些标签为客户提供了一种更简单的方法,以识别托管密钥并限制对这些密钥的操作。

  • secretsmanager:DescribeSecret – 允许主体描述密钥并检索当前版本阶段。Amazon ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:UpdateSecret – 允许主体更新密钥。Amazon ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换并使用新材料更新密钥。

  • secretsmanager:GetSecretValue – 允许主体获取密钥值。Amazon ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:PutSecretValue – 允许主体放入密钥值。Amazon ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:UpdateSecretVersionStage – 允许主体更新密钥版本阶段。Amazon ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • acm-pca:IssueCertificate – 允许主体为 Amazon ECS Service Connect TLS 的 End entity certificate 调用 IssueCertificate。ECS 需要此权限为客户的上游服务生成证书。

  • acm-pca:GetCertificate – 允许主体为 Amazon ECS Service Connect TLS 的 End entity certificate 调用 GetCertificate。

  • acm-pca:GetCertificateAuthorityCertificate – 允许主体获取证书颁发机构证书。Amazon ECS Service Connect TLS 需要此权限,这样客户的下游服务才能信任上游终端实体证书。

  • acm-pca:DescribeCertificateAuthority – 允许主体获取有关证书颁发机构的详细信息。Amazon ECS Service Connect TLS 需要此权限才能重复使用诸如签名算法之类的信息来创建 CSR(证书签名请求)。

以下是示例 AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateSecret", "Effect": "Allow", "Action": "secretsmanager:CreateSecret", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": [ "arn:aws:ecs:*:*:service/*/*", "arn:aws:ecs:*:*:task-set/*/*" ] }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "TagOnCreateSecret", "Effect": "Allow", "Action": "secretsmanager:TagResource", "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "ArnLike": { "aws:RequestTag/AmazonECSCreated": [ "arn:aws:ecs:*:*:service/*/*", "arn:aws:ecs:*:*:task-set/*/*" ] }, "StringEquals": { "aws:RequestTag/AmazonECSManaged": "true", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "RotateTLSCertificateSecret", "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:UpdateSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:DeleteSecret", "secretsmanager:RotateSecret", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "ecs-sc", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManagePrivateCertificateAuthority", "Effect": "Allow", "Action": [ "acm-pca:GetCertificate", "acm-pca:GetCertificateAuthorityCertificate", "acm-pca:DescribeCertificateAuthority" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true" } } }, { "Sid": "ManagePrivateCertificateAuthorityForIssuingEndEntityCertificate", "Effect": "Allow", "Action": [ "acm-pca:IssueCertificate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/AmazonECSManaged": "true", "acm-pca:TemplateArn":"arn:aws:acm-pca:::template/EndEntityCertificate/V1" } } } ] }

AWSApplicationAutoscalingECSServicePolicy

您不能将 AWSApplicationAutoscalingECSServicePolicy 附加到自己的 IAM 实体。此策略附加到服务链接角色,该角色允许 Application Auto Scaling 以代表您执行操作。有关更多信息,请参阅 Application Auto Scaling 服务相关角色

AWSCodeDeployRoleForECS

您不能将 AWSCodeDeployRoleForECS 附加到自己的 IAM 实体。此策略附加到服务链接角色,该角色允许 CodeDeploy 代表您执行操作。有关更多信息,请参阅 AWS CodeDeploy 用户指南中的为 CodeDeploy 创建服务角色

AWSCodeDeployRoleForECSLimited

您不能将 AWSCodeDeployRoleForECSLimited 附加到自己的 IAM 实体。此策略附加到服务链接角色,该角色允许 CodeDeploy 代表您执行操作。有关更多信息,请参阅 AWS CodeDeploy 用户指南中的为 CodeDeploy 创建服务角色

Amazon ECS 更新为 AWS 托管策略

查看自此服务开始跟踪这些更改以来 Amazon ECS AWS 托管策略更新的详细信息。有关此页面更改的自动提示,请订阅 Amazon ECS 文档历史记录页面上的 RSS 源。

更改 描述 日期

增加了 AmazonECSInfrastructureRolePolicyForVolumes 的权限

更新了 AmazonECSInfrastructureRolePolicyForVolumes 策略,以允许客户利用快照创建 Amazon EBS 卷。 2024 年 10 月 10 日

增加了 AmazonECS_FullAccess 权限

更新了 AmazonECS_FullAccess 策略,从而为名为 ecsInfrastructureRole 的角色增加了 IAM 角色的 iam:PassRole 权限。这是由 AWS Management Console 创建的默认 IAM 角色,该角色旨在用作 ECS 基础设施角色,从而允许 Amazon ECS 管理挂载到 ECS 任务的 Amazon EBS 卷。 2024 年 8 月 13 日

新增 AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 策略

新增 AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 策略,该策略提供对 AWS KMS、AWS Private Certificate Authority、Secrets Manager 的管理访问权限,并使 Amazon ECS Service Connect TLS 功能能够正常工作。

2024 年 1 月 22 日

新增策略 AmazonECSInfrastructureRolePolicyForVolumes

已添加 AmazonECSInfrastructureRolePolicyForVolumes 策略。该策略授予 Amazon ECS 进行 AWS API 调用所需的权限,以管理与 Amazon ECS 工作负载关联的 Amazon EBS 卷。 2024 年 1 月 11 日

将权限添加到 AmazonECSServiceRolePolicy

AmazonECSServiceRolePolicy 托管 IAM 策略已更新,增加了新的 events 权限,以及附加的 autoscalingautoscaling-plans 权限。 2023 年 12 月 4 日

将权限添加到 AmazonEC2ContainerServiceEventsRole

AmazonECSServiceRolePolicy 托管 IAM 策略已更新,允许访问 AWS Cloud Map DiscoverInstancesRevision API 操作。 2023 年 10 月 4 日

将权限添加到 AmazonEC2ContainerServiceforEC2Role

修改 AmazonEC2ContainerServiceforEC2Role 策略是为了添加 ecs:TagResource 权限,其中包括一个条件,该条件将权限限制为仅限于新创建的集群和注册的容器实例。 2023 年 3 月 6 日

AmazonECS_FullAccess 添加权限

修改 AmazonECS_FullAccess 策略是为了添加 elasticloadbalancing:AddTags 权限,其中包括一个条件,该条件将权限限制为仅限于新创建的负载均衡器、目标组、规则和创建的侦听器。此权限不允许向任何已经创建的 Elastic Load Balancing 资源添加标签。 2023 年 1 月 4 日

Amazon ECS 开始跟踪更改

Amazon ECS 开始跟踪其 AWS 托管策略的更改。

2021 年 6 月 8 日