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

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

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

本主题提供了详细信息来说明 IAM 管理员如何使用 AWS Identity and Access Management (IAM) 控制哪些用户可执行 Amazon EC2 Auto Scaling 操作,从而对您的资源进行保护。

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

有关为用户授予 Amazon EC2 Auto Scaling 的完全访问权限的策略,请参阅预定义的 AWS 托管策略。您也可以创建自己的策略来指定允许或拒绝的操作及资源,以及在允许或拒绝操作时所适用的条件。有关示例,请参阅 客户托管策略示例。但是,我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 Amazon EC2 Auto Scaling 资源访问的基本概念和选项。

在策略中指定操作

在 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 用户或组。以下示例显示了几个常见使用情形的权限。

示例:限制能够传递哪些服务相关角色(使用 PassRole)

如果您的用户需要能够将自定义服务相关角色传递到 Auto Scaling 组,请根据所需访问权限将策略附加到用户或角色。我们建议您将此策略限制为仅针对用户必须访问的服务相关角色。

在您将不同服务相关角色的访问权限提供给不同密钥时,以下示例有助于提升客户托管 CMK 的安全性。根据需求,您可能有三个 CMK 分别供开发团队、QA 团队和财务团队使用。首先,创建具有对所需 CMK 访问权限的服务相关角色,例如,名为 AWSServiceRoleForAutoScaling_devteamkeyaccess 的服务相关角色。然后,要授予权限以将该服务相关角色传递到 Auto Scaling 组,请将该策略附加到您的 IAM 用户,如下所示。

以下示例中的策略向用户授予权限,传递 AWSServiceRoleForAutoScaling_devteamkeyaccess 角色用于创建名称以 devteam 开头的任意 Auto Scaling。如果用户尝试指定不同的服务相关角色,则会收到错误。如果用户选择不指定服务相关角色,则改为使用默认 AWSServiceRoleForAutoScaling 角色。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws-cn:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_devteamkeyaccess", "Condition": { "StringEquals": { "iam:PassedToService": [ "autoscaling.amazonaws.com" ] }, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/devteam*" ] } } } ] }

有关更多信息,请参阅 适用于 Amazon EC2 Auto Scaling 的服务相关角色与加密卷结合使用时必需的 CMK 密钥策略

示例:需要启动模板

以下策略向 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 – 确保指定 LatestDefault 启动模板版本。

  • 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:region: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:region:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/group-1", "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/group-2", "arn:aws-cn:autoscaling:region: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:region:123456789012:autoScalingGroup:*:autoScalingGroupName/group-*" ] }] }