AWS Amazon 弹性容器服务的托管策略 - Amazon Elastic Container Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS Amazon 弹性容器服务的托管策略

要向用户、群组和角色添加权限,使用 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 托管策略

亚马逊 ECS_ FullAccess

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

该策略授予对 Amazon ECS 资源的管理访问权限,并授予 IAM 身份(例如用户、群组或角色)访问与 Amazon ECS 集成的 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 实例,并创建和管理路由、路由表、互联网网关、启动组、安全组、虚拟私有云、Spot 队列和子网。

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

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

  • iam— 允许委托人列出 IAM 角色及其附加的策略。委托人还可以列出 Amazon EC2 实例可用的实例配置文件。

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

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

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

以下是示例 AmazonECS_FullAccess 策略。

{ "Version": "2012-10-17", "Statement": [ { "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": ["*"] }, { "Effect": "Allow", "Action": [ "ssm:GetParameter", "ssm:GetParameters", "ssm:GetParametersByPath" ], "Resource": "arn:aws:ssm:*:*:parameter/aws/service/ecs*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteInternetGateway", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup" ], "Resource": ["*"], "Condition": { "StringLike": {"ec2:ResourceTag/aws:cloudformation:stack-name": "EC2ContainerService-*"} } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": ["*"], "Condition": { "StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"} } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": ["arn:aws:iam::*:role/ecsInstanceRole*"], "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": ["arn:aws:iam::*:role/ecsAutoscaleRole*"], "Condition": { "StringLike": { "iam:PassedToService": [ "application-autoscaling.amazonaws.com", "application-autoscaling.amazonaws.com.cn" ] } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "autoscaling.amazonaws.com", "ecs.amazonaws.com", "ecs.application-autoscaling.amazonaws.com", "spot.amazonaws.com", "spotfleet.amazonaws.com" ] } } }, { "Effect": "Allow", "Action": ["elasticloadbalancing:AddTags"], "Resource": "*", "Condition": { "StringEquals": { "elasticloadbalancing:CreateAction": [ "CreateTargetGroup", "CreateRule", "CreateListener", "CreateLoadBalancer" ] } } } ] }

亚马逊 ECS InfrastructureRolePolicyForVolumes

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

权限详细信息

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

  • ec2:CreateVolume— 当且仅当委托人标有和AmazonECSManaged标签时,才允许委托人创建 Amazon EBS 卷。AmazonECSCreated需要此权限才能创建附加到 Amazon ECS 任务的 Amazon EBS 卷,并最大限度地减少此策略向 Amazon ECS 提供的权限。

  • ec2:CreateTags— 允许委托人向 Amazon EBS 卷添加标签作为其中的一部分。ec2:CreateVolumeAmazon ECS 需要此权限才能将客户指定的标签添加到代表您创建的 Amazon EBS 卷中。

  • ec2:AttachVolume— 允许委托人将 Amazon EBS 卷附加到亚马逊 EC2 实例。亚马逊 ECS 需要此权限才能将 Amazon EBS 卷附加到托管相关亚马逊 ECS 任务的 Amazon EC2 实例。

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

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

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

  • ec2:DeleteVolume— 允许委托人删除 Amazon EBS 卷。亚马逊 ECS 需要此权限才能删除不再由亚马逊 ECS 任务使用的亚马逊 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": "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" } } } ] }

Amazonec2 ec2Rol ContainerServicefor e

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

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

注意事项

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

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

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

    您可以防止在 docker0 网桥访问提供给容器实例角色的权限。您可以在仍然允许通过在容器实例上运行以下命令 任务 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 耗尽。有关更多信息,请参阅 Spot 实例耗尽了

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

  • 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: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" ] } } } ] }

亚马逊 EC2 ContainerServiceEventsRole

此政策授予的权限允许 Amazon EventBridge (前身为 Ev CloudWatch ents)代表您运行任务。此策略可附加到创建计划任务时指定的 IAM 角色。有关更多信息,请参阅 亚马逊 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"] } } } ] }

亚马逊 ECS TaskExecutionRolePolicy

AmazonECSTaskExecutionRolePolicy托管 IAM 策略授予 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:PutLogEvents— 允许委托人将一批日志事件上传到指定的日志流。

以下是示例 AmazonECSTaskExecutionRolePolicy 策略。

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

亚马逊 ECS ServiceRolePolicy

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 日志组。委托人还可以列出这些日志组的日志事件。

  • 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 功能所需的对 Secrets Manager 和其他 AWS 服务的管理权限。 AWS Private Certificate Authority

权限详细信息

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

  • secretsmanager:CreateSecret— 允许委托人创建密钥。这是 Service Connect TLS 所必需的,Amazon ECS 将客户的私钥保存在客户的 Secrets Manager 机密中。

  • secretsmanager:TagResource— 允许委托人在创建的密钥上附加标签。它是 Service Connect TLS 所必需的,因为 Amazon ECS 代表客户创建密钥并附上带有资源的标签。这些标签为客户提供了一种更简单的方法来识别托管密钥并限制对这些密钥的操作。

  • secretsmanager:DescribeSecret— 允许委托人描述密钥并检索当前版本阶段。亚马逊 ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:UpdateSecret— 允许委托人更新密钥。亚马逊 ECS 必须轮换 Amazon ECS Service Connect TLS 材料并使用新材料更新密钥。

  • secretsmanager:GetSecretValue— 允许本金获取秘密值。亚马逊 ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:PutSecretValue— 允许本金输入秘密值。亚马逊 ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • secretsmanager:UpdateSecretVersionStage— 允许校长更新秘密版本阶段。亚马逊 ECS 需要进行 Amazon ECS Service Connect TLS 材料轮换。

  • acm-pca:IssueCertificate— 允许委托人调用 IssueCertificate Amazon ECS Service Connect TLS。End entity certificateECS 需要为客户的上游服务生成证书。

  • acm-pca:GetCertificate— 允许委托人调用 GetCertificate Amazon ECS Service Connect TLS。End entity certificate

  • 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 源。

更改 描述 日期

添加新的亚马逊 ECS 政策 InfrastructureRolePolicyForServiceConnectTransport LayerSecurity

添加了新的 AmazonECS InfrastructureRolePolicyForServiceConnectTransport LayerSecurity 政策,该政策提供对 AWS KMS、、Secrets Manager 的管理访问权限 AWS Private Certificate Authority,并使 Amazon ECS Service Connect TLS 功能能够正常运行。

2024 年 1 月 22 日

添加新政策 Amazonecs InfrastructureRolePolicyForVolumes

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

亚马逊 ECS 添加权限 ServiceRolePolicy

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

Amazon EC2 添加权限 ContainerServiceEventsRole

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

AmazonEC2 ec2Rol ContainerServicefor e 添加权限

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

亚马逊 ECS_ FullAccess 添加权限

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

Amazon ECS 开始跟踪更改

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

2021 年 6 月 8 日