Amazon Elastic Container Service Amazon 托管策略 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Elastic Container Service Amazon 托管策略

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

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

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

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

AmazonECS_FullAccess

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

此策略授予对 Amazon ECS 资源的管理访问权限,并授予 IAM 身份(如用户、组或角色)访问 Amazon 服务,以使用 Amazon ECS 的所有功能。使用此策略可以访问 Amazon Web Services 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 资源。使用集群 Auto Scaling 功能时,在管理 Amazon EC2 Auto Scaling 组时需要此项。

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

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

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

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

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

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

  • elasticloadbalancing— 允许委托人创建、描述和删除 Elastic Load Balancing 负载平衡器。委托人还能够完全管理负载平衡器的目标组、侦听器和侦听器规则。

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

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

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

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

  • servicediscovery— 允许委托人创建、管理和删除 Amazon 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:ListMeshes", "appmesh:ListVirtualNodes", "appmesh:DescribeVirtualNode", "autoscaling:UpdateAutoScalingGroup", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteLaunchConfiguration", "autoscaling:Describe*", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStack*", "cloudformation:UpdateStack", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:PutMetricAlarm", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment", "sns:ListTopics", "lambda:ListFunctions", "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:RunInstances", "ec2:RequestSpotFleet", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeTargetGroups", "ecs:*", "events:DescribeRule", "events:DeleteRule", "events:ListRuleNamesByTarget", "events:ListTargetsByRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:FilterLogEvents", "route53:GetHostedZone", "route53:ListHostedZonesByName", "route53:CreateHostedZone", "route53:DeleteHostedZone", "route53:GetHealthCheck", "servicediscovery:CreatePrivateDnsNamespace", "servicediscovery:CreateService", "servicediscovery:GetNamespace", "servicediscovery:GetOperation", "servicediscovery:GetService", "servicediscovery:ListNamespaces", "servicediscovery:ListServices", "servicediscovery:UpdateService", "servicediscovery:DeleteService" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter" ], "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": [ "ecs.amazonaws.com", "spot.amazonaws.com", "spotfleet.amazonaws.com", "ecs.application-autoscaling.amazonaws.com", "autoscaling.amazonaws.com" ] } } } ] }

AmazonEC2ContainerServiceforEC2Role

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

此策略授予允许Amazon ECS容器实例代表您调用 Amazon 的管理权限。有关更多信息,请参阅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 FORWARD 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:UpdateContainerInstancesState— 允许委托人修改 Amazon ECS 容器实例的状态。Amazon ECS 容器代理将此权限用于 Spot Instance 耗尽。有关更多信息,请参阅Spot 实例耗尽

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

AmazonEC2ContainerServiceEventsRole

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

权限详细信息

此策略包含以下权限。

  • ecs— 允许服务中的委托人调用 Amazon ECS RunTask API。

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

AmazonECSTaskExecutionRolePolicy

AmazonECSTaskExecutionRolePolicy 托管 IAM policy 授予 Amazon ECS 容器代理和 Amazon Fargate 要创建的容器代理代表您调用 Amazon 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": "*" } ] }

AWSApplicationAutoscalingECSServicePolicy

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

AWSCodeDeployRoleForECS

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

AWSCodeDeployRoleForECSLimited

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

Amazon ECS 更新为 Amazon 托管策略

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

更改 说明 日期

Amazon ECS 开始跟踪更改

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

2021 年 6 月 8 日