Amazon EC2 Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

控制对您 Amazon EC2 Auto Scaling 资源的访问权

要访问 Amazon EC2 Auto Scaling,需要具有 AWS 可用于验证您的请求的凭证。这些凭证必须具有执行 Amazon EC2 Auto Scaling 操作的权限

本主题详细说明了如何使用 AWS Identity and Access Management (IAM) 控制哪些用户可以执行 Amazon EC2 Auto Scaling 操作,从而帮助保护您的资源。

默认情况下,全新的 IAM 用户没有执行任何操作的权限。要授予调用 Amazon EC2 Auto Scaling 操作的权限,您可以将一个 IAM 策略附加到需要获得权限的 IAM 用户或组。

在策略中指定操作

在 IAM 策略中,您可以指定任何及所有 Amazon EC2 Auto Scaling 操作。有关更多信息,请参阅 Amazon EC2 Auto Scaling API 参考 中的操作

要指定单个策略,您可以在操作名称中使用以下前缀:autoscaling:。例如:

"Action": "autoscaling:CreateAutoScalingGroup"

要在单个策略中指定多项操作,请使用方括号将操作括起来并以逗号分隔,如下所示:

"Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ]

支持通配符。例如,您可以使用 autoscaling:* 指定所有 Amazon EC2 Auto Scaling 操作。

"Action": "autoscaling:*"

您还可以使用 Describe* 指定名称以 Describe 开头的所有操作。

"Action": "autoscaling:Describe*"

其他 IAM 权限

用户必须在 Amazon EC2 和 IAM 中具有额外的权限才能执行某些操作。您可以在 IAM 策略声明的 Action 元素中指定以下操作。

使用启动配置创建 Auto Scaling 组

  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole

使用启动模板创建 Auto Scaling 组

  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole

  • ec2:RunInstances

更新使用启动模板的 Auto Scaling 组

  • autoscaling:UpdateAutoScalingGroup

  • ec2:RunInstances

创建启动配置

  • autoscaling:CreateLaunchConfiguration

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeKeyPairs

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSpotInstanceRequests

  • ec2:DescribeVpcClassicLink

用户可能需要额外的权限才能创建或使用 Amazon EC2 资源,例如,从控制台中使用卷和管理安全组。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的用于 Amazon EC2 控制台的策略示例。有关创建和更新启动模板的权限的信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例)中的控制如何使用启动模板

此外,还可能需要执行针对 CloudWatch、Elastic Load Balancing、IAM 和 Amazon SNS 的额外 API 操作。例如,需要执行 iam:PassRole 操作以使用实例配置文件

指定资源

可以使用 IAM 策略控制对资源的访问。对于支持资源级权限的操作,您可以使用 Amazon 资源名称 (ARN) 标识策略适用的资源。

要指定 Auto Scaling 组,您必须指定其 ARN,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:uuid:autoScalingGroupName/asg-name"

要指定启动配置,您必须指定其 ARN,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:launchConfiguration:uuid:launchConfigurationName/lc-name"

要使用 CreateAutoScalingGroup 操作指定 Auto Scaling 组,您必须将 UUID 替换为 *,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/asg-name"

要使用 CreateLaunchConfiguration 操作指定启动配置,您必须将 UUID 替换为 *,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:launchConfiguration:*:launchConfigurationName/lc-name"

或者,如果不希望将特定资源作为目标,您也可以将 * 通配符作为资源。

"Resource": "*"

可以在 IAM 策略中使用所有 Amazon EC2 Auto Scaling 操作以授予或拒绝用户使用该操作的权限。但是,并非所有 Amazon EC2 Auto Scaling 操作都支持资源级权限,这些权限允许指定可对其执行操作的资源。

对于不支持资源级权限的操作,您必须将“*”作为资源。

以下 Amazon EC2 Auto Scaling 操作不支持资源级权限:

  • DescribeAccountLimits

  • DescribeAdjustmentTypes

  • DescribeAutoScalingGroups

  • DescribeAutoScalingInstances

  • DescribeAutoScalingNotificationTypes

  • DescribeLaunchConfigurations

  • DescribeLifecycleHooks

  • DescribeLifecycleHookTypes

  • DescribeLoadBalancers

  • DescribeLoadBalancerTargetGroups

  • DescribeMetricCollectionTypes

  • DescribeNotificationConfigurations

  • DescribePolicies

  • DescribeScalingActivities

  • DescribeScalingProcessTypes

  • DescribeScheduledActions

  • DescribeTags

  • DescribeTerminationPolicyTypes

在策略中指定条件

对于支持资源级权限的操作,您可以控制何时允许用户使用这些操作(根据必须满足的条件)。

在授予权限时,您可以使用 IAM 策略语言和预定义的条件键指定条件。

以下条件键是特定于 Amazon EC2 Auto Scaling 的:

  • autoscaling:ImageId

  • autoscaling:InstanceType

  • autoscaling:InstanceTypes

  • autoscaling:LaunchConfigurationName

  • autoscaling:LaunchTemplateVersionSpecified

  • autoscaling:LoadBalancerNames

  • autoscaling:MaxSize

  • autoscaling:MinSize

  • autoscaling:ResourceTag/key

  • autoscaling:SpotPrice

  • autoscaling:TargetGroupARNs

  • autoscaling:VPCZoneIdentifiers

有关可限制的 API 操作的完整列表、每个操作支持的条件键以及 AWS 范围的条件键,请参阅 IAM 用户指南 中的 Amazon EC2 Auto Scaling 的操作、资源和条件键AWS 全局条件上下文键

预定义的 AWS 托管策略

AWS 创建的托管策略将授予针对常用案例的必要权限。您可以根据您的 IAM 用户所需的访问权限将这些策略附加到这些用户。每个策略授予 Amazon EC2 Auto Scaling 的全部或部分 API 操作的访问权限。

下面是适用于 Amazon EC2 Auto Scaling 的 AWS 托管策略:

  • AutoScalingConsoleFullAccess — 授予使用 AWS 管理控制台访问 Amazon EC2 Auto Scaling 的完全权限。

  • AutoScalingConsoleReadOnlyAccess — 授予使用 AWS 管理控制台访问 Amazon EC2 Auto Scaling 的只读权限。

  • AutoScalingFullAccess — 授予 Amazon EC2 Auto Scaling 的完全访问权限。

  • AutoScalingReadOnlyAccess — 授予 Amazon EC2 Auto Scaling 的只读访问权限。

您也可以使用 AmazonEC2FullAccess 策略授予所有 Amazon EC2 资源和相关服务的完全访问权限。

客户管理的策略

您可以创建自定义 IAM 策略来向 IAM 用户授予对特定资源执行特定操作的权限。以下是 Amazon EC2 Auto Scaling 的示例策略。

示例:需要启动模板

以下策略为 IAM 用户授予在一定条件下创建或更新 Auto Scaling 组的权限。他们必须使用启动模板并指定该组用于启动实例的启动模板版本。每个实例在启动期间使用用户指定的启动模板版本。用户可以访问在启动模板中指定的 Amazon EC2 资源。

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

autoscaling:LaunchTemplateVersionSpecified 条件键接受以下值:

  • true - 确保制定启动模板版本。

  • false - 确保指定 Latest (最新)Default (默认) 启动模板版本。

  • null - 确保未指定启动模板。

ec2:* 授予调用所有 Amazon EC2 API 操作和访问所有 Amazon EC2 资源的权限。

示例:创建并管理启动配置

以下策略允许用户使用在名称中包含 LaunchConfiguration 字符串的所有 Amazon EC2 Auto Scaling 操作。或者,您还可以明确地列出每项操作,而不是使用通配符。但是,此策略不会自动应用于其名称中包含 LaunchConfiguration 的任何新 Amazon EC2 Auto Scaling 操作。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:*LaunchConfiguration*", "Resource": "*" }] }

以下策略授权用户在实例类型为 t2.micro 且启动配置的名称以 t2micro- 开头时创建启动配置他们可以仅当其名称以 t2micro- 开头时为 Auto Scaling 组指定启动配置。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:CreateLaunchConfiguration", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:launchConfiguration:*:launchConfigurationName/t2micro-*" ], "Condition": { "StringEquals": { "autoscaling:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "autoscaling:LaunchConfigurationName": "t2micro-*" } } }] }

示例:创建并管理 Auto Scaling 组和扩展策略

以下策略允许用户使用在名称中包含 Scaling 字符串的所有 Amazon EC2 Auto Scaling 操作。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*" }] }

以下策略授权用户使用其名称中包含 Scaling 字符串的所有 Amazon EC2 Auto Scaling 操作,前提是 Auto Scaling 组具有标签 purpose=webserver。由于 Describe 操作不支持资源级权限,因此,您必须在不带条件的单独语句中必须指定它们。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*Scaling*", "Resource": "*" }] }

以下策略授权用户使用其名称中包含字符串 Scaling 的所有 Amazon EC2 Auto Scaling 操作,前提是它们未指定小于 1 的最小大小或大于 10 的最大大小。由于 Describe 操作不支持资源级权限,因此您必须在不带条件的单独语句中必须指定它们。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*", "Condition": { "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*Scaling*", "Resource": "*" }] }

示例:使用标签控制访问

要授予用户创建 Auto Scaling 组或为该组添加标签(仅当用户指定特定标签时)的权限,请使用 aws:RequestTag 条件键。要仅允许特定的标签键,请使用带 ForAnyValue 修饰符的 aws:TagKeys 条件键。

以下策略需要用户使用标签 purpose=webservercost-center=cc123 标记任何 Auto Scaling 组,并且仅允许 purposecost-center 标签(不能指定其他标签)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

以下策略需要用户在请求中指定包含键 environment 的标签。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "*" } } }] }

以下策略需要用户在请求中指定至少一个标签,并且仅允许 cost-centerowner 键。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }

以下策略授权用户访问具有标签 allowed=true 的 Auto Scaling 组,并允许它们仅应用标签 environment=test。由于启动配置不支持标签并且 Describe 操作不支持资源级权限,因此您必须在不带条件的单独语句中指定它们。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:*Scaling*", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/allowed": "true" }, "StringEqualsIfExists": { "aws:RequestTag/environment": "test" }, "ForAllValues:StringEquals": { "aws:TagKeys": "environment" } } }, { "Effect": "Allow", "Action": [ "autoscaling:*LaunchConfiguration*", "autoscaling:Describe*" ], "Resource": "*" }] }

示例:更改 Auto Scaling 组的容量

以下策略授权用户使用 SetDesiredCapacity 操作更改任何 Auto Scaling 组的容量。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:SetDesiredCapacity", "Resource": "*" }] }

以下策略授权用户使用 SetDesiredCapacity 操作更改指定的 Auto Scaling 组的容量。包括 UUID 可确保将访问权授予特定的 Auto Scaling 组。新组的 UUID 与删除的同名组的 UUID 不同。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:SetDesiredCapacity", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/group-1", "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/group-2", "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:60d6b363-ae8b-467c-947f-f1d308935521:autoScalingGroupName/group-3" ] }] }

以下策略授权用户使用 SetDesiredCapacity 操作更改其名称以 group- 开头的任何 Auto Scaling 组的容量。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:SetDesiredCapacity", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:*:autoScalingGroupName/group-*" ] }] }