

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 基于身份的扩缩计划策略示例
<a name="security_iam_id-based-policy-examples"></a>

默认情况下，全新的 IAM 用户没有执行任何操作的权限。IAM 管理员必须创建并分配 IAM policy，以便为 IAM 身份（例如用户或角色）授予使用扩展计划的权限。

要了解如何使用这些示例 JSON 策略文档创建 IAM policy，请参阅*《IAM 用户指南》*中的[在 JSON 选项卡上创建策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

**Topics**
+ [

## 策略最佳实践
](#security_iam_service-with-iam-policy-best-practices)
+ [

## 允许用户创建扩展计划
](#example-policies-scaling-plans)
+ [

## 允许用户启用预测式扩展
](#example-policies-predictive-scaling)
+ [

## 其他必需的权限
](#aws-auto-scaling-additional-permissions)
+ [

## 创建服务相关角色所需的权限
](#aws-auto-scaling-slr-permissions)

## 策略最佳实践
<a name="security_iam_service-with-iam-policy-best-practices"></a>

基于身份的策略决定了某人是否可以在您的账户中创建、访问或删除 AWS Auto Scaling 资源。这些操作可能会使 AWS 账户产生成本。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+ **开始使用 AWS 托管策略并转向最低权限权限** — 要开始向用户和工作负载授予权限，请使用为许多常见用例授予权限的*AWS 托管策略*。它们在你的版本中可用 AWS 账户。我们建议您通过定义针对您的用例的 AWS 客户托管策略来进一步减少权限。有关更多信息，请参阅《IAM 用户指南》**中的 [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[工作职能的AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为*最低权限许可*。有关使用 IAM 应用权限的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的策略和权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定必须使用 SSL 发送所有请求。如果服务操作是通过特定的方式使用的，则也可以使用条件来授予对服务操作的访问权限 AWS 服务，例如 CloudFormation。有关更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：条件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 验证您的 IAM 策略，以确保权限的安全性和功能性**：IAM Access Analyzer 会验证新策略和现有策略，以确保策略符合 IAM 策略语言（JSON）和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM Access Analyzer 验证策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重身份验证 (MFA**)-如果 AWS 账户您的场景需要 IAM 用户或根用户，请启用 MFA 以提高安全性。若要在调用 API 操作时需要 MFA，请将 MFA 条件添加到您的策略中。有关更多信息，请参阅《IAM 用户指南》**中的[使用 MFA 保护 API 访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

有关 IAM 中的最佳实操的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 允许用户创建扩展计划
<a name="example-policies-scaling-plans"></a>

以下示例所示为用于授予创建扩展计划权限的基于身份的策略。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "autoscaling-plans:*",
              "cloudwatch:PutMetricAlarm",
              "cloudwatch:DeleteAlarms",
              "cloudwatch:DescribeAlarms",
              "cloudformation:ListStackResources"
            ],
            "Resource": "*"
        }
    ]
}
```

------

要使用扩缩计划，终端用户必须拥有额外的权限，以允许他们使用其账户中的特定资源。这些权限在 [其他必需的权限](#aws-auto-scaling-additional-permissions)中列出。

每个控制台用户还需要权限，允许他们发现其账户中的可扩展资源并从 AWS Auto Scaling 控制台查看 CloudWatch 指标数据图表。下面列出了使用 AWS Auto Scaling 控制台所需的其他权限集：
+ `cloudformation:ListStacks`：列出堆栈。
+ `tag:GetTagKeys`：查找包含特定标签键的可扩展资源。
+ `tag:GetTagValues`：查找包含特定标签值的资源。
+ `autoscaling:DescribeTags`：查找包含特定标签的 Auto Scaling 组。
+ `cloudwatch:GetMetricData`：查看指标图表中的数据。

## 允许用户启用预测式扩展
<a name="example-policies-predictive-scaling"></a>

以下示例所示为用于授予启用预测式扩展权限的基于身份的策略。这些权限可扩展设置为扩展 Auto Scaling 组的扩展计划的功能。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
              "cloudwatch:GetMetricData",
              "autoscaling:DescribeAutoScalingGroups",
              "autoscaling:DescribeScheduledActions",
              "autoscaling:BatchPutScheduledUpdateGroupAction",
              "autoscaling:BatchDeleteScheduledAction"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 其他必需的权限
<a name="aws-auto-scaling-additional-permissions"></a>

要成功配置扩展计划，必须授予最终用户要为其配置扩展的每个目标服务的权限。要授予使用目标服务所需的最低权限，请阅读本章节中的信息，并在 IAM 策略语句的 `Action` 元素中指定相关操作。

**自动扩缩组**

要将 Auto Scaling 组添加到扩展计划，用户必须具有来自 Amazon EC2 Auto Scaling 的以下权限：
+ `autoscaling:UpdateAutoScalingGroup`
+ `autoscaling:DescribeAutoScalingGroups`
+ `autoscaling:PutScalingPolicy`
+ `autoscaling:DescribePolicies`
+ `autoscaling:DeletePolicy`

**ECS 服务**

要将 ECS 服务添加到扩展计划，用户必须具有来自 Amazon ECS 和 Application Auto Scaling 的以下权限：
+ `ecs:DescribeServices`
+ `ecs:UpdateService`
+ `application-autoscaling:RegisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeleteScalingPolicy`

**竞价型实例集**

要将 Spot 队列添加到扩展计划，用户必须具有来自 Amazon EC2 和 Application Auto Scaling 的以下权限：
+ `ec2:DescribeSpotFleetRequests`
+ `ec2:ModifySpotFleetRequest`
+ `application-autoscaling:RegisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeleteScalingPolicy`

**DynamoDB 表或全局索引**

要将 DynamoDB 表或全局索引添加到扩展计划，用户必须具有来自 DynamoDB 和 Application Auto Scaling 的以下权限：
+ `dynamodb:DescribeTable`
+ `dynamodb:UpdateTable`
+ `application-autoscaling:RegisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeleteScalingPolicy`

**Aurora 数据库集群**

要将 Aurora 数据库集群添加到扩展计划，用户必须具有来自 Amazon Aurora 和 Application Auto Scaling 的以下权限：
+ `rds:AddTagsToResource`
+ `rds:CreateDBInstance`
+ `rds:DeleteDBInstance`
+ `rds:DescribeDBClusters`
+ `rds:DescribeDBInstances`
+ `application-autoscaling:RegisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeleteScalingPolicy`

## 创建服务相关角色所需的权限
<a name="aws-auto-scaling-slr-permissions"></a>

AWS Auto Scaling 当您的任何用户首次创建启用预测性扩展的扩展计划时，需要权限才能 AWS 账户 创建服务相关角色。如果服务相关角色尚不存在，请在您的账户中 AWS Auto Scaling 创建该角色。服务相关角色向授予权限， AWS Auto Scaling 以便它可以代表您调用其他服务。

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

```
"Action": "iam:CreateServiceLinkedRole"
```

以下示例所示为用于授予创建服务相关角色权限的基于身份的策略。

------
#### [ JSON ]

****  

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

------

有关更多信息，请参阅 [预测性扩缩服务相关角色](aws-auto-scaling-service-linked-roles.md)。