启动模板支持 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

启动模板支持

Amazon EC2 Auto Scaling 支持将 Amazon EC2 启动模板与您的 Auto Scaling 组一起使用。我们建议您允许用户从启动模板创建 Auto Scaling 组,因为这样做允许用户使用 Amazon EC2 Auto Scaling 和 Amazon EC2 的最新功能。此外,用户必须指定启动模板才能使用混合实例策略

您可以使用 AmazonEC2FullAccess 策略授予用户使用其账户中的 Amazon EC2 Auto Scaling 资源、启动模板和其他 EC2 资源的完全权限。或者,您可以创建自己的自定义 IAM 策略,为用户授予使用启动模板的精细访问权限,如本主题所述。

您可以为自己使用量身定制的示例策略

下面显示您可以为自己使用量身定制的权限策略示例。此策略允许 IAM 用户创建、修改和删除所有 Auto Scaling 组,但仅限于该组使用标签 environment=test 时。然后,它授予所有描述操作的权限。由于描述操作不支持资源级权限,因此,您必须在不带条件的单独语句中必须指定它们。

具有此策略的用户有权使用启动模板创建或更新 Auto Scaling 组,因为他们还有权使用 ec2:RunInstances 操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "test" } } }, { "Effect": "Allow", "Action": [ "autoscaling:Describe*", "ec2:RunInstances" ], "Resource": "*" } ] }

ec2:RunInstances当使用启动模板创建或更新 Auto Scaling 组时,将选中 。如果要限制对用于启动实例的资源的访问权限,或限制 IAM 用户可执行的操作,则必须修改此策略以添加您自己的语句来筛选这些权限。

以下示例显示了您可用于控制当用户使用启动模板时具有的权限的策略语句。

需要具有特定标签的启动模板

以下示例限制对使用位于指定区域中且具有标签 environment=test 的启动模板调用 ec2:RunInstances 操作的访问权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/environment": "test" } } } ] }

需要启动模板和版本号

如果他们指定了启动模板的版本号,然后拒绝使用启动配置创建或修改任何 Auto Scaling 组的权限,以下示例允许用户创建和修改 Auto Scaling 组。如果具有此策略的用户忽略版本号以指定 LatestDefault 启动模板版本,或者改为指定启动配置,操作将失败。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

要求使用实例元数据服务版本 2 (IMDSv2)

为了提高安全性,您可以将用户的权限设置为要求使用需要 IMDSV2 的启动模板。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的配置实例元数据服务

以下示例指定用户不能调用 ec2:RunInstances 操作,除非该实例也选择需要使用 IMDSv2(由 "ec2:MetadataHttpTokens":"required" 指示)。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
提示

要强制替换 Auto Scaling 使用新启动模板或配置了实例元数据选项的启动模板的新版本启动模板启动,您可以终止组中的现有实例。Amazon EC2 Auto Scaling 会立即开始启动新实例以替换您终止的实例。或者,您可以启动实例刷新以执行组的滚动更新。有关更多信息,请参阅 基于实例刷新替换 Auto Scaling 实例

限制对 Amazon EC2 资源的访问

以下示例通过限制对 Amazon EC2 资源的访问来控制用户可以启动的实例的配置。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:123456789012:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:123456789012:security-group/sg-903004f88example", "arn:aws:ec2:region:123456789012:network-interface/*", "arn:aws:ec2:region:123456789012:volume/*", "arn:aws:ec2:region::image/ami-04d5cc9b88example" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } } ] }

在此示例中,有两个语句:

  • 第一条语句要求用户使用特定安全组 (subnet-1a2b3c4d) 并使用特定 AMI (sg-903004f88example) 将实例启动到特定子网 (ami-04d5cc9b88example) 中。它还允许用户访问启动实例所需的额外资源:网络接口和卷。

  • 第二个语句允许用户仅启动特定实例类型 (t2.micro) 的实例。

标记实例和卷所需的权限

以下示例允许用户在创建时标记实例和卷。如果在启动模板中指定了标签,则需要此策略。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的在创建过程中授予标记资源的权限

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:123456789012:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }

其他权限

根据要支持的方案,您可以在 IAM 策略语句的 Action 元素中指定这些附加操作。

要使用户能够将 IAM 角色传递给预置实例,该用户必须具有 iam:PassRole 权限。如果启动模板指定具有 IAM 角色的实例配置文件,您可以使用 iam:PassRole 策略允许(或拒绝)用户将角色传递给 Amazon EC2。有关策略示例,请参阅 控制可以传递的 IAM 角色(使用 PassRole)

您必须向控制台用户授予对 ec2:DescribeLaunchTemplatesec2:DescribeLaunchTemplateVersions 操作的权限。如果没有这些权限,则无法在 Auto Scaling 组向导中加载启动模板数据,并且用户无法逐步通过向导使用启动模板启动实例。

要控制对 ec2:CreateLaunchTemplateec2:CreateLaunchTemplateVersion 操作的访问,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的控制启动模板的使用示例:使用启动模板

注意

对于配置为使用 LatestDefault 启动模板版本的组,在创建启动模板的新版本时,Amazon EC2 Auto Scaling 不会检查在启动实例时要完成的操作的权限。在为可以创建和管理启动模板版本的用户设置权限时,这是一个重要的考虑因素。