

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

# 对目标资源进行 Application Auto Scaling API 调用的权限验证
<a name="security_iam_permission_validation"></a>

向 Application Auto Scaling API 操作发出授权请求要求 API 调用者必须具有访问目标服务中和中的 AWS 资源的权限 CloudWatch。在继续处理请求 CloudWatch 之前，Application Auto Scaling 会验证与目标服务关联的请求的权限。为此，我们将发出一系列调用来验证目标资源的 IAM 权限。返回响应时，Application Auto Scaling 会读取该响应。如果 IAM 权限不允许指定的操作，则 Application Auto Scaling 将使请求失败，并将错误返回给用户，其中包含有关缺少权限的信息。这可确保用户想要部署的扩缩配置按预期工作，并且在请求失败时返回有用的错误。

作为其工作原理的示例，以下信息提供了有关应用程序 Auto Scaling 如何使用 Aurora 和 CloudWatch执行权限验证的详细信息。

当用户针对 Aurora 数据库集群调用 `RegisterScalableTarget` API 时，Application Auto Scaling 会执行以下所有检查以验证用户是否具有所需的权限（以粗体显示）。
+ **rds:CreateDBInstance**：为确定用户是否具有此权限，我们将向 `CreateDBInstance` API 操作发送请求，尝试在用户指定的 Aurora 数据库集群中创建具有无效参数（空实例 ID）的数据库实例。对于授权用户，该 API 将在审计请求后返回 `InvalidParameterValue` 错误代码响应。但是，对于未经授权的用户，我们会收到 `AccessDenied` 错误，使 Application Auto Scaling 请求失败并显示 `ValidationException` 错误，向用户列出缺少的权限。
+ **rds:DeleteDBInstance**：我们将向 `DeleteDBInstance` API 操作发出一个空实例 ID。对于授权用户，此请求会导致 `InvalidParameterValue` 错误。对于未经授权的用户，它会导致 `AccessDenied` 并向用户发送验证异常（与第一个要点中描述的处理相同）。
+ **rdsAddTagsToResource:**: 由于 `AddTagsToResource` API 操作需要亚马逊资源名称 (ARN)，因此必须使用无效的账户 ID (12345) 和虚拟实例 ID（不存在的数据库）指定 “虚拟” 资源来构建 ARN ()。`arn:aws:rds:us-east-1:12345:db:non-existing-db`对于授权用户，此请求会导致 `InvalidParameterValue` 错误。对于未经授权的用户，它会导致 `AccessDenied` 并向用户发送验证异常。
+ **rds:DescribeDBClusters**：我们描述为自动扩缩注册的资源的集群名称。对于授权用户，我们将得到一个有效的描述结果。对于未经授权的用户，它会导致 `AccessDenied` 并向用户发送验证异常。
+ **rds:DescribeDBInstances**：我们使用 `db-cluster-id` 筛选条件调用 `DescribeDBInstances` API，该筛选条件可筛选用户提供的用于注册可扩展目标的集群名称。对于授权用户，我们可以描述数据库集群中的所有数据库实例。对于未经授权的用户，此调用会导致 `AccessDenied` 并向用户发送验证异常。
+ **cloudwatchPutMetricAlarm:**: 我们在调用 `PutMetricAlarm` API 时不带任何参数。由于缺少警报名称，对于授权用户，请求会导致 `ValidationError`。对于未经授权的用户，它会导致 `AccessDenied` 并向用户发送验证异常。
+ **cloudwatchDescribeAlarms:**: 我们在调用 `DescribeAlarms` API 时将最大记录数值设置为 1。对于授权用户，我们预期响应中有一个警报的信息。对于未经授权的用户，此调用会导致 `AccessDenied` 并向用户发送验证异常。
+ **cloudwatchDeleteAlarms:**: 与`PutMetricAlarm`上述类似，我们不提供任何参数可供`DeleteAlarms`请求。由于请求中缺少警报名称，对于授权用户，此调用将失败并显示 `ValidationError`。对于未经授权的用户，它会导致 `AccessDenied` 并向用户发送验证异常。

只要发生任何一个验证异常，它就会被记录下来。您可以使用采取措施手动识别哪些呼叫未通过验证 AWS CloudTrail。有关更多信息，请参阅 [AWS CloudTrail 《用户指南》](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。

**注意**  
如果您使用收到有关应用程序 Auto Scaling 事件的警报 CloudTrail，则默认情况下，这些警报将包括用于验证用户权限的应用程序 Auto Scaling 调用。要过滤掉这些提示，请使用 `invokedBy` 字段，它们包含用于这些验证检查的 `application-autoscaling.amazonaws.com`。