Amazon EC2 Auto Scaling 基于身份的策略示例 - Amazon EC2 Auto Scaling
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Amazon EC2 Auto Scaling 基于身份的策略示例

默认情况下, IAM 用户和角色没有创建或修改权限 Amazon EC2 Auto Scaling 资源。他们也不能使用 AWS 管理控制台, AWS CLI,或 AWS API。一个 IAM 管理员必须创建 IAM 为用户和角色授权对所需的指定资源执行特定API操作的策略。然后,管理员必须将这些策略附加到需要这些权限的 IAM 用户或组。

学习如何创建 IAM 基于身份的策略使用这些示例JSON策略文档,请参阅 在JSON选项卡上创建策略IAM 用户指南.

下面介绍权限策略示例。

{ "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:*LaunchConfiguration*", "autoscaling:Describe*" ], "Resource": "*" }] }

此示例策略为用户提供创建、修改和删除的权限 Auto Scaling 但只有在组使用标签时 environment=test...由于启动配置不支持标签,因此 Describe 操作不支持资源级别权限,您必须在不带条件的单独语句中指定这些权限。要了解有关 IAM 策略语句中的元素的更多信息,请参阅。Amazon EC2 Auto Scaling 基于身份的策略.

策略最佳实践

基于身份的策略非常强大。它们确定某个人是否可以创建、访问或删除您账户中的 Amazon EC2 Auto Scaling 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时,请遵循以下准则和建议:

  • 开始使用 AWS 托管策略 – 要快速开始使用 Amazon EC2 Auto Scaling,请使用 AWS 托管策略,为您的员工授予他们所需的权限。这些策略已在您的账户中提供,并由 AWS 维护和更新。有关更多信息,请参阅 IAM 用户指南 中的利用 AWS 托管策略开始使用权限

  • 授予最低权限 – 创建自定义策略时,仅授予执行任务所需的许可。最开始只授予最低权限,然后根据需要授予其他权限。这样做比起一开始就授予过于宽松的权限而后再尝试收紧权限来说更为安全。有关更多信息,请参阅 IAM 用户指南 中的授予最小权限

  • 为敏感操作启用 MFA – 为增强安全性,要求 IAM 用户使用多重身份验证 (MFA) 来访问敏感资源或 API 操作。有关更多信息,请参阅 IAM 用户指南 中的在 AWS 中使用多重身份验证 (MFA)

  • 使用策略条件来增强安全性 – 在切实可行的范围内,定义基于身份的策略在哪些情况下允许访问资源。例如,您可编写条件来指定请求必须来自允许的 IP 地址范围。您也可以编写条件,以便仅允许指定日期或时间范围内的请求,或者要求使用 SSL 或 MFA。有关更多信息,请参阅 IAM 用户指南 中的 IAM JSON 策略元素:Condition

注意

某些 Amazon EC2 Auto Scaling API操作允许您包括特定的 Auto Scaling 可以通过操作创建或修改的策略中的组。您可以通过指定单个 Auto Scaling 组 ARN 来限制这些操作的目标资源。但是,作为最佳做法,我们建议您使用基于标签的策略,以允许(或拒绝)对具有特定标签的 Auto Scaling 组执行操作。

预定义的AWS管理策略

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

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

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

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

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

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

您还可以使用 AmazonEC2FullAccess 授予全部访问权限的政策 Amazon EC2 资源和相关服务,包括 Amazon EC2 Auto Scaling, CloudWatch,和 Elastic Load Balancing.

客户管理的策略示例

您可以创建自己的自定义 IAM 允许或拒绝权限的策略 IAM 要执行的用户或组 Amazon EC2 Auto Scaling 操作。您可以将这些自定义策略附加到需要指定权限的 IAM 用户或组。以下示例显示了几个常见使用情形的权限。

如果您是首次创建策略,建议您先在账户中创建 IAM 用户并按顺序将策略附加到用户。在将每个策略附加到用户时,可使用控制台验证该策略的效果。

创建和更新 Auto Scaling 组时,某些操作要求执行某些其他操作。您可以在 Action 一个 IAM 政策声明。例如,还有其他API操作 Elastic Load Balancing, CloudWatch,和 Amazon SNS 可能需要根据您要为用户提供的访问权限而定。

控制哪个标签键和标签值可以使用

您可以在您的 IAM 控制标签密钥和标签值的策略 Auto Scaling 组。

为用户提供创建或标记 Auto Scaling 只有当他们指定某些标签时,使用 aws:RequestTag 状态键。要仅允许特定标签密钥,请使用 aws:TagKeys 条件键与 ForAllValues 修饰剂。

以下策略需要用户在请求中指定包含键 environment 的标签。TheThethe "?*" 值强制实施标签密钥的一些值。要使用通配符,您必须使用 StringLike 条件运算符。

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

以下策略指定用户只能标记 Auto Scaling 带标签的组 purpose=webservercost-center=cc123,仅允许使用 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"] } } }] }

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

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

对于条件,条件键不区分大小写,条件值区分大小写。因此,要强制标签键区分大小写,请使用 aws:TagKeys 条件键,其中标签键指定为条件中的值。

控制访问 Auto Scaling 基于标签的资源

您还可以在您的 IAM 根据附加到 Auto Scaling 使用 autoscaling:ResourceTag 状态键。

控制创建和管理访问权限 Auto Scaling 组和扩展策略

以下策略赋予用户使用所有权限的权限 Amazon EC2 Auto Scaling 包括字符串的操作 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": "*" }] }

控制可删除哪些扩展策略

以下策略允许用户使用 autoscaling:DeletePolicy 操作删除扩展策略。但是,如果 Auto Scaling 已经对应的组具有标签 environment=production.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:DeletePolicy", "Resource": "*" }, { "Effect": "Deny", "Action": "autoscaling:DeletePolicy", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "production" } } }] }

控制容量限制 Auto Scaling 组

Amazon EC2 Auto Scaling 允许您限制可以创建的 Auto Scaling 组的大小。以下策略允许用户创建和更新所有 Auto Scaling 带标签的组 allowed=true,只要没有指定小于1的最小大小或大于10的最大大小。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/allowed": "true" }, "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }] }

控制 IAM 可以通过角色(使用Passrole)

如果您希望用户能够创建 Amazon EC2 Auto Scaling 指定实例配置文件的资源(容器用于 IAM 角色),您必须使用一个策略包含允许用户通过角色的声明,例如以下示例。通过指定ARN,策略授予用户只能通过其名称以 qateam-...有关详细信息,请参阅 IAM 对于运行的应用程序的角色 Amazon EC2 实例.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws-cn:iam::123456789012:role/qateam-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com" ] } } } ] }

允许用户更改 Auto Scaling 组

以下策略允许用户使用 SetDesiredCapacityTerminateInstanceInAutoScalingGroup API操作。TheThethe Resource 元素使用通配符(*)表示用户可以更改任何 Auto Scaling 组。

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

如果您不使用标签来控制访问 Auto Scaling 组中,您可以调整以前的语句,以便用户权限更改只能更改 Auto Scaling 名称以 devteam-...有关指定ARN值的详细信息,请参阅 Resources.

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

您还可以通过将多个 ARN 包含在列表中来指定它们。包括 UUID 可确保将访问权授予特定的 Auto Scaling 组。新组的 UUID 与删除的同名组的 UUID 不同。

"Resource": [ "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/devteam-1", "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/devteam-2", "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:60d6b363-ae8b-467c-947f-f1d308935521:autoScalingGroupName/devteam-3" ]

允许用户创建和使用启动配置

如果实例类型为“实例类型”,则以下策略允许用户创建启动配置 t2.micro,但只有启动配置的名称以 qateam-...有关指定ARN值的详细信息,请参阅 Resources. 他们可以指定启动配置 Auto Scaling 仅在其名称以 qateam-.

此语句的最后一部分授予用户描述启动配置和访问其 AWS 账户中的某些 Amazon EC2 资源的权限。这为用户提供了从 Amazon EC2 Auto Scaling 控制台创建和管理启动配置的最低权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:CreateLaunchConfiguration", "Resource": "arn:aws-cn:autoscaling:region:123456789012:launchConfiguration:*:launchConfigurationName/qateam-*", "Condition": { "StringEquals": { "autoscaling:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "autoscaling:LaunchConfigurationName": "qateam-*" } } }, { "Effect": "Allow", "Action": [ "autoscaling:DescribeLaunchConfigurations", "ec2:DescribeImages", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeSpotInstanceRequests", "ec2:DescribeSpotPriceHistory", "ec2:DescribeVpcClassicLink", "ec2:DescribeVpcs", "ec2:DescribeSubnets" ], "Resource": "*" }] }

您可以向此策略添加 API 操作以便为用户提供更多选项,例如:

  • iam:ListInstanceProfiles: :列出实例配置文件。

  • ec2:CreateSecurityGroup: : 创建新安全组。

  • ec2:AuthorizeSecurityGroupIngress: :添加入站规则。

  • ec2:CreateKeyPair: :创建新的密钥对。

允许用户创建和使用启动模板

有关示例策略,请参阅 启动模板支持.

创建服务链接角色所需的权限

Amazon EC2 Auto Scaling 需要权限才能在您的 AWS 帐户呼叫 Amazon EC2 Auto Scaling API操作。如果服务相关角色尚不存在,Amazon EC2 Auto Scaling 会在您的账户中创建此角色。此服务相关角色向 Amazon EC2 Auto Scaling 授予权限,以便它能代表您调用其他服务。

为使自动角色创建操作成功,用户必须具有 iam:CreateServiceLinkedRole 操作的权限。

"Action": "iam:CreateServiceLinkedRole"

以下示例显示允许用户创建一个权限策略的权限 Amazon EC2 Auto Scaling 服务链接角色 Amazon EC2 Auto Scaling.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws-cn:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", "Condition": { "StringLike": { "iam:AWSServiceName":"autoscaling.amazonaws.com" } } } ] }

控制可通过哪种服务链接角色(使用Passrole)

如果您的用户需要能够将自定义后缀服务相关角色传递到 Auto Scaling 组,则必须根据所需访问权限将策略附加到用户或角色。我们建议您将此策略限制为仅针对用户必须访问的服务相关角色。有关自定义后缀服务相关角色的更多信息,请参阅 服务链接角色 Amazon EC2 Auto Scaling.

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

本示例中的策略赋予用户通过 AWSServiceRoleForAutoScaling_devteamkeyaccess 创建任何 Auto Scaling 名称以 devteam-...如果他们尝试指定不同的服务链接角色,则会收到错误。如果选择不指定服务链接角色,默认 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-*" ] } } } ] }

API所需的权限

当从以下操作中调用 Amazon EC2 Auto Scaling API,用户必须拥有权限 Amazon EC2 和 IAM 执行某些操作。您在 Action 一个 IAM 政策声明。

使用启动配置创建 Auto Scaling 组

  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole(如果您使用的是默认服务相关角色并且该角色尚不存在,则必需)

使用启动模板创建 Auto Scaling 组

  • autoscaling:CreateAutoScalingGroup

  • ec2:RunInstances

  • iam:CreateServiceLinkedRole(如果您使用的是默认服务相关角色并且该角色尚不存在,则必需)

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

  • autoscaling:UpdateAutoScalingGroup

  • ec2:RunInstances

创建启动配置

  • autoscaling:CreateLaunchConfiguration

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeKeyPairs

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSpotInstanceRequests

  • ec2:DescribeVpcClassicLink