Amazon EC2 Auto Scaling 的服务相关角色 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EC2 Auto Scaling 的服务相关角色

Amazon EC2 Auto Scaling 使用服务相关角色来获取代表您调用其他 Amazon Web Services 所需的权限。服务相关角色是一种独特类型的 IAM 角色,它与 Amazon Web Service 直接相关。

服务相关角色提供了一种将权限委托给其他 Amazon Web Services 的安全方式,因为只有相关服务才能担任服务相关角色。有关更多信息,请参阅 IAM 用户指南中的使用服务相关角色。服务相关角色还允许通过 Amazon CloudTrail 查看所有 API 调用。这样便于满足监控和审核要求,因为您可以跟踪 Amazon EC2 Auto Scaling 代表您执行的所有操作。有关更多信息,请参阅使用 Amazon CloudTrail 记录 Amazon EC2 Auto Scaling API 调用

下面的部分介绍如何创建和管理 Amazon EC2 Auto Scaling 服务相关角色。首先配置权限以允许 IAM 身份(如用户或角色)创建、编辑或删除服务相关角色。有关更多信息,请参阅 IAM 用户指南中的使用服务相关角色

概览

有两种类型的 Amazon EC2 Auto Scaling 服务相关角色:

  • 您账户的默认服务相关角色,名为 AWSServiceRoleForAutoScaling。此角色自动分配给 Auto Scaling 组,除非您指定不同的服务相关角色。

  • 带有您在创建角色时指定的自定义后缀的服务相关角色,例如 AWSServiceRoleForAutoScaling_mysuffix

自定义后缀服务相关角色的权限与默认的服务相关角色的权限完全相同。在这两种情况下,如果某个 Auto Scaling 组仍在使用这些角色,您不能编辑也不能删除它们。唯一的区别是角色名称后缀。

您可以在编辑 Amazon Key Management Service 密钥策略指定任一角色,以允许使用您的客户托管密钥对 Amazon EC2 Auto Scaling 启动的实例进行加密。但是,如果您计划对特定的客户托管密钥提供精细访问,应使用自定义后缀服务相关角色。使用自定义后缀服务相关角色可为您提供:

  • 对客户托管密钥的更多控制

  • 能够在 CloudTrail 日志中跟踪哪些 Auto Scaling 组进行了 API 调用

如果您创建并非所有用户都有权访问的客户托管密钥,请按照以下步骤操作,以允许使用自定义后缀服务相关角色:

  1. 创建具有自定义后缀的服务相关角色。有关更多信息,请参阅创建服务相关角色(手动)

  2. 向服务相关角色授予对客户托管密钥的访问权限。有关允许服务相关角色使用密钥的密钥策略的更多信息,请参阅 与加密卷结合使用时必需的 Amazon KMS 密钥策略

  3. 授予用户对您创建的服务相关角色的访问权限。有关创建 IAM policy 的更多信息,请参阅 控制能够传递哪些服务相关角色(使用 PassRole)。如果用户尝试指定服务相关角色而无权将该角色传递给服务,则会收到错误。

服务相关角色授予的权限

Amazon EC2 Auto Scaling 使用名为 AWSServiceRoleForAutoScaling 的服务相关角色或您的自定义后缀服务相关角色。

服务相关角色仅信任以下服务来担任该角色:

  • autoscaling.amazonaws.com

此角色使用 AutoScalingServiceRolePolicy 策略,其中包含以下权限:

{ "Version":"2012-10-17", "Statement":[ { "Sid":"EC2InstanceManagement", "Effect":"Allow", "Action":[ "ec2:AttachClassicLinkVpc", "ec2:CancelSpotInstanceRequests", "ec2:CreateFleet", "ec2:CreateTags", "ec2:DeleteTags", "ec2:Describe*", "ec2:DetachClassicLinkVpc", "ec2:ModifyInstanceAttribute", "ec2:RequestSpotInstances", "ec2:RunInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances" ], "Resource":"*" }, { "Sid":"EC2InstanceProfileManagement", "Effect":"Allow", "Action":[ "iam:PassRole" ], "Resource":"*", "Condition":{ "StringLike":{ "iam:PassedToService":"ec2.amazonaws.com*" } } }, { "Sid":"EC2SpotManagement", "Effect":"Allow", "Action":[ "iam:CreateServiceLinkedRole" ], "Resource":"*", "Condition":{ "StringEquals":{ "iam:AWSServiceName":"spot.amazonaws.com" } } }, { "Sid":"ELBManagement", "Effect":"Allow", "Action":[ "elasticloadbalancing:Register*", "elasticloadbalancing:Deregister*", "elasticloadbalancing:Describe*" ], "Resource":"*" }, { "Sid":"CWManagement", "Effect":"Allow", "Action":[ "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricData", "cloudwatch:PutMetricAlarm" ], "Resource":"*" }, { "Sid":"SNSManagement", "Effect":"Allow", "Action":[ "sns:Publish" ], "Resource":"*" }, { "Sid":"EventBridgeRuleManagement", "Effect":"Allow", "Action":[ "events:PutRule", "events:PutTargets", "events:RemoveTargets", "events:DeleteRule", "events:DescribeRule" ], "Resource":"*", "Condition":{ "StringEquals":{ "events:ManagedBy":"autoscaling.amazonaws.com" } } }, { "Sid":"SystemsManagerParameterManagement", "Effect":"Allow", "Action":[ "ssm:GetParameters" ], "Resource": "*" }, { "Sid":"VpcLatticeManagement", "Effect":"Allow", "Action":[ "vpc-lattice:DeregisterTargets", "vpc-lattice:GetTargetGroup", "vpc-lattice:ListTargets", "vpc-lattice:ListTargetGroups", "vpc-lattice:RegisterTargets" ], "Resource": "*" } ] }

此角色有权执行以下所有操作:

  • ec2 - 创建、描述、修改、启动/停止和终止 EC2 实例。

  • iam - 将 IAM 角色传递给 EC2 实例,以便在实例上运行的应用程序可以访问该角色的临时凭证。

  • iam - 创建 AWSServiceRoleForEC2Spot 服务相关角色以允许 Amazon EC2 Auto Scaling 代表您启动竞价型实例。

  • elasticloadbalancing - 使用 Elastic Load Balancing 注册和取消注册实例,并检查注册目标的运行状况。

  • cloudwatch - 创建、描述、修改和删除用于扩展策略的 CloudWatch 告警,并检索用于预测式扩展的指标。

  • sns - 在实例启动或终止时向 Amazon SNS 发布通知。

  • events - 代表您创建、描述、更新和删除 EventBridge 规则。

  • ssm - 在启动模板中使用 Systems Manager 参数作为 AMI ID 的别名时,从 Parameter Store 中读取参数。

  • vpc-lattice - 使用 VPC Lattice 注册和取消注册实例,并检查注册目标的运行状况。

创建服务相关角色(自动)

首次创建自动扩缩组时,Amazon EC2 Auto Scaling 会为您创建 AWSServiceRoleForAutoScaling 服务相关角色,除非您手动创建自定义后缀服务相关角色并在创建组时指定该角色。

重要

您必须具备创建服务相关角色的 IAM 权限。否则,自动创建操作将失败。有关更多信息,请参阅 IAM 用户指南和本指南中的 创建服务相关角色所需的权限服务相关角色权限

2018 年 3 月,Amazon EC2 Auto Scaling 开始支持服务相关角色。如果您在此之前创建了自动扩缩组,则 Amazon EC2 Auto Scaling 会在您的账户中创建 AWSServiceRoleForAutoScaling 角色。有关更多信息,请参阅 IAM 用户指南中的我的 Amazon Web Services 账户 中出现新角色

创建服务相关角色(手动)

创建服务相关角色 (控制台)
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

  3. 对于选择可信实体,选择 Amazon 服务

  4. 选择将使用此角色的服务下,选择 EC2 Auto ScalingEC2 Auto Scaling 使用案例。

  5. 依次选择 Next: Permissions (下一步: 权限)Next: Tags (下一步: 标签)Next: Review (下一步: 审核)。注意:您无法在创建过程中将标签附加到服务相关角色。

  6. Review(审核)页面上,将 Role name(角色名称)留空,以便创建名称为 AWSServiceRoleForAutoScaling 的服务相关角色,或者输入后缀以创建名称为 AWSServiceRoleForAutoScaling_suffix 的服务相关角色。

  7. (可选)对于角色描述,编辑服务相关角色的描述。

  8. 选择 Create role(创建角色)。

创建服务相关角色 (Amazon CLI)

使用以下 create-service-linked-role CLI 命令可创建名为 AWSServiceRoleForAutoScaling_suffix 的适用于 Amazon EC2 Auto Scaling 的服务相关角色。

aws iam create-service-linked-role --aws-service-name autoscaling.amazonaws.com --custom-suffix suffix

此命令的输出包含服务相关角色的 ARN,您可以用来向服务相关角色提供对客户托管密钥的访问权限。

{ "Role": { "RoleId": "ABCDEF0123456789ABCDEF", "CreateDate": "2018-08-30T21:59:18Z", "RoleName": "AWSServiceRoleForAutoScaling_suffix", "Arn": "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_suffix", "Path": "/aws-service-role/autoscaling.amazonaws.com/", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "autoscaling.amazonaws.com" ] }, "Effect": "Allow" } ] } } }

有关更多信息,请参阅 IAM 用户指南中的创建服务相关角色

编辑服务相关角色

您不能编辑为 Amazon EC2 Auto Scaling 创建的服务相关角色。创建服务相关角色后,您将无法更改角色的名称或其权限。但是,您可以编辑角色的说明。有关更多信息,请参阅 IAM 用户指南中的编辑服务相关角色

注意

在 Amazon 中,不建议修改服务相关角色,因为这可能会导致跨服务混淆代理等安全问题。

删除服务相关角色

如果您不使用某个 Auto Scaling 组,我们建议您删除其服务相关角色。删除此角色会防止您拥有不使用或不主动监视和维护的实体。

只有在先删除相关资源后,才能删除服务相关角色。这可以防止您无意中撤销 Amazon EC2 Auto Scaling 对您的资源的权限。如果某个服务相关角色与多个 Auto Scaling 组结合使用,则必须删除使用该服务相关角色的所有 Auto Scaling 组,然后才能删除该服务相关角色。有关更多信息,请参阅删除 Auto Scaling 基础设施

您可以使用 IAM 删除服务相关角色。有关更多信息,请参阅 IAM 用户指南中的删除服务相关角色

如果删除 AWSServiceRoleForAutoScaling 服务相关角色,则在您创建自动扩缩组但未指定其他服务相关角色时,Amazon EC2 Auto Scaling 将再次创建该角色。

Amazon EC2 Auto Scaling 服务相关角色支持的区域

Amazon EC2 Auto Scaling 支持在该服务可用的所有 Amazon Web Services 区域 中使用服务相关角色。