启动模板支持
Amazon EC2 Auto Scaling 支持将 Amazon EC2 启动模板与您的 Auto Scaling 组一起使用。我们建议您允许用户从启动模板创建 Auto Scaling 组,因为这样做允许用户使用 Amazon EC2 Auto Scaling 和 Amazon EC2 的最新功能。例如,用户必须指定启动模板才能使用混合实例策略。
您可以使用 AmazonEC2FullAccess
策略授予用户使用其账户中的 Amazon EC2 Auto Scaling 资源、启动模板和其他 EC2 资源的完全权限。或者,您可以创建自己的自定义 IAM policy,为用户授予使用启动模板的精细访问权限,如本主题所述。
您可以为自己使用量身定制的示例策略
下面显示您可以为自身使用量身定制的基础权限策略示例。此策略授予创建、修改和删除所有自动扩缩组的权限,但仅限于组使用标签 environment=test
时。然后,它授予所有 Describe
操作的权限。由于 Describe
操作不支持资源级权限,因此,您必须在不带条件的单独语句中必须指定它们。
具有此策略的 IAM 身份(用户或角色)有权使用启动模板创建或更新自动扩缩组,因为他们还有权使用 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": "*" } ] }
当使用启动模板创建或更新 Auto Scaling 组时,将选中 ec2:RunInstances
。使用此示例策略来构建您自己的限制 ec2:RunInstances
权限的策略,例如,通过要求使用带有特定标签的启动模板。
以下示例显示了您可用于控制当用户使用启动模板时具有的权限的策略语句。
需要具有特定标签的启动模板
以下示例限制对使用位于指定区域中且具有标签 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 组。如果具有此策略的用户忽略版本号以指定 Latest
或 Default
启动模板版本,或者改为指定启动配置,操作将失败。
{ "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 policy 语句的 Action
元素中指定这些附加操作。
您必须向控制台用户授予对 ec2:DescribeLaunchTemplates
和 ec2:DescribeLaunchTemplateVersions
操作的权限。如果没有这些权限,则无法在 Auto Scaling 组向导中加载启动模板数据,并且用户无法逐步通过向导使用启动模板启动实例。
在使用启动模板时,您还必须授予创建、修改、描述和删除启动模板和启动模板版本的权限。您可以通过控制对 ec2:CreateLaunchTemplate
和 ec2:CreateLaunchTemplateVersion
操作的访问来控制谁可以创建启动模板和启动模板版本。有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》中的控制启动模板的使用和示例:使用启动模板。
注意
对于配置为使用 Latest
或 Default
启动模板版本的自动扩缩组,在创建启动模板的新版本时,Amazon EC2 Auto Scaling 不会检查在启动实例时要完成的操作的权限。在为可以创建和管理启动模板版本的用户设置权限时,这是一个重要的考虑因素。
除了 Amazon EC2 操作外,使用指定实例配置文件(IAM 角色的容器)的启动模板创建或更新自动扩缩组的用户还需要 iam:PassRole
权限。有关更多信息和示例 IAM policy,请参阅 在 Amazon EC2 实例上运行的应用程序的 IAM 角色。
以使用 Amazon Systems Manager 参数的启动模板创建或更新自动扩缩组的用户需要 ssm:GetParameters
权限。有关更多信息,请参阅在启动模板中使用 Amazon Systems Manager 参数代替 AMI ID。
了解更多信息
在使用 IAM 管理对启动模板的访问之前,您首先应了解哪些 IAM 功能可与启动模板结合使用。有关更多信息,请参阅《服务授权参考》中的 Amazon EC2 的操作、资源和条件键。