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

Amazon EC2 Auto Scaling 的服务相关角色

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

服务相关角色提供了一种将权限委托给 Amazon 服务的安全方式,因为只有相关服务才能担任服务相关角色。有关更多信息,请参阅 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 用户或角色对您创建的服务相关角色的访问权限。有关创建 IAM 策略的更多信息,请参阅 控制能够传递哪些服务相关角色(使用 PassRole)。如果用户尝试指定服务相关角色而无权将该角色传递给服务,则会收到错误。

服务相关角色授予的权限

Amazon EC2 Auto Scaling 使用 AWSServiceRoleForAutoScaling 服务相关角色或您的自定义后缀服务相关角色,以代表您自己调用 Amazon API:

角色权限策略允许 Amazon EC2 Auto Scaling 对资源完成以下操作。

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

此角色信任 autoscaling.amazonaws.com 服务来代入它。

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

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

重要

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

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

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

创建服务相关角色 (控制台)

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

  3. 对于 Select trusted entity(选择可信实体),选择 Amazon service(Amazon 服务)。

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

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

  6. 审核页面上,将角色名称留空,以便创建名称为 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 服务相关角色,在您创建 Auto Scaling 组但未指定其他服务相关角色时,Amazon EC2 Auto Scaling 将再次创建该角色。

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

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