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

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

适用于 Amazon Elastic Container Service 的 Amazon 托管策略

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

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

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

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 ECS功能。使用此策略可允许访问所有Amazon ECS功能中提供的Amazon Web Services Management Console。

权限详细信息

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

  • ecs –允许委托人完全访问所有Amazon ECSAPI。

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

  • appmesh –允许委托人列出App Mesh服务网格和虚拟节点,并描述App Mesh虚拟节点。这是必需的集成Amazon ECS带有的服务App Mesh。

  • autoscaling –允许委托人创建、管理和描述Amazon EC2 Auto Scaling资源的费用。这是在管理Amazon EC2在使用集群自动扩展功能时,自动扩展组。

  • cloudformation –允许委托人创建和管理Amazon CloudFormation堆栈。这是在创建Amazon ECS群集使用Amazon Web Services Management Console以及随后对这些群组的管理.

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

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

  • sns –允许委托人查看Amazon SNS主题。

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

  • ec2 –允许承担者运行Amazon EC2实例以及创建和管理路由、路由表、Internet 网关、启动组、安全组、虚拟私有云、竞价型队列和子网。

  • 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角色

Considerations

您应该考虑以下各项:使用AmazonEC2ContainerServiceforEC2Role托管IAM策略。

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

  • 在您的容器实例上运行的容器有权获得通过实例元数据提供给容器实例角色的所有权限。建议您将容器实例角色中的权限限限限限限限限限限制在托管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-optimized AMI,请使用以下命令。对于其他操作系统,请参阅该操作系统的相关文档。

    • 对于 Amazon ECS-optimized Amazon Linux 2 AMI:

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

      sudo service iptables save

权限详细信息

这些区域有:AmazonEC2ContainerServiceforEC2Role托管IAM策略包含以下权限。遵循授予最低权限的标准安全建议,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 实例耗尽。有关更多信息,请参阅 Spot 实例 耗尽

  • ecs:Submit* –这包括SubmitAttachmentStateChangesSubmitContainerStateChange, 和SubmitTaskStateChangeAPI 操作。它们被Amazon ECS容器代理将每个资源的状态更改报告到Amazon ECS控制层面。这些区域有:SubmitContainerStateChange权限不再由Amazon ECS容器代理,但仍然是为了确保向后兼容性。

  • ecr:GetAuthorizationToken –允许委托人检索授权令牌。授权令牌代表您的IAM身份验证凭据,并可用于访问任何Amazon ECR注册表IAM委托人可以访问。收到的授权令牌有效期为 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 ECSRunTask 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策略授予Amazon ECS容器代理和Amazon Fargate要创建的容器代理Amazon代表您调用 API。可以将此策略添加到您的任务执行IAM角色。有关更多信息,请参阅 Amazon ECS任务执行IAM角色

权限详细信息

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

  • ecr:GetAuthorizationToken –允许委托人检索授权令牌。授权令牌代表IAM身份验证凭据,并可用于访问任何Amazon ECR注册表IAM委托人可以访问。收到的授权令牌有效期为 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以代表您执行操作。有关更多信息,请参阅 。创建的服务角色CodeDeploy

AWSCodeDeployRoleForECSLimited

您不能挂载AWSCodeDeployRoleForECSLimited的IAM实体。此策略将附加到服务链接角色,该角色允许CodeDeploy以代表您执行操作。有关更多信息,请参阅 。创建的服务角色CodeDeploy

Amazon ECS更新Amazon托管策略

查看有关更新的详细信息Amazon适用于 的 托管策略Amazon ECS因为此服务开始跟踪这些更改。如需有关此页面更改的自动警报,您可以订阅Amazon ECS文档历史记录页面。

更改 描述 日期

Amazon ECS开始跟踪更改

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

2021 年 6 月 6 日