对目标资源进行 API 调用的权限验证 - Application Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

对目标资源进行 API 调用的权限验证

向 Application Auto Scaling API 操作发出授权请求需要 API 调用者有权访问Amazon目标服务和 CloudWatch 中的资源。Application Auto Scaling 会验证与目标服务和 CloudWatch 关联的请求的权限,然后再继续处理请求。为此,我们发出一系列调用来验证目标资源的 IAM 权限。返回响应时,Application Auto Scaling 读取该响应。如果 IAM 权限不允许执行给定操作,则 Application Auto Scaling 将使请求失败,并将错误返回给用户,其中包含有关缺失权限的信息。这可确保用户希望按预期部署函数的扩展配置,并且在请求失败时返回一个有用的错误。

以下信息提供了有关 Application Auto Scaling 如何使用 Aurora 和 CloudWatch 执行权限验证的详细信息。

当 IAM 用户调用RegisterScalableTargetAPI 针对 Aurora 数据库集群,Application Auto Scaling 将执行以下所有检查,以验证 IAM 用户是否具有所需的权限(以粗体显示)。

  • RDS: 创建的数据库实例:为了确定用户是否具有此权限,我们将请求发送到CreateDBInstanceAPI 操作,尝试在用户指定的 Aurora 数据库集群中创建具有无效参数(空实例 ID)的数据库实例。对于授权用户,API 返回一个InvalidParameterValue错误代码响应后,它审计请求。但是,对于未经授权的用户,我们会得到一个AccessDenied错误,并且使 Application Auto Scaling 请求失败ValidationException错误发送给列出缺少权限的用户。

  • RDS: 已删除的数据库实例:我们将一个空实例 ID 发送到DeleteDBInstanceAPI 操作。对于授权用户,此请求会导致InvalidParameterValue错误。对于未经授权的用户,它会导致AccessDenied并向用户发送验证异常(与第一个要点中描述的处理相同)。

  • RDS: 添加存储资源:由于AddTagsToResourceAPI 操作需要亚马逊资源名称 (ARN),则需要使用无效账户 ID (12345) 和虚拟实例 ID(不存在的数据库)指定 “虚拟” 资源来构建 ARN (arn:aws:rds:us-east-1:12345:db:non-existing-db)。对于授权用户,此请求会导致InvalidParameterValue错误。对于未经授权的用户,它会导致AccessDenied并向用户发送验证异常。

  • RDS: 描述 B 群集:我们描述为自动扩展注册的资源的群集名称。对于授权用户,我们会得到一个有效的描述结果。对于未经授权的用户,它会导致AccessDenied并向用户发送验证异常。

  • RDS: 描述实例。我们将DescribeDBInstance带有的 APIdb-cluster-id过滤器,用于筛选用户提供的群集名称以注册可扩展目标。对于授权用户,允许我们描述数据库集群中的所有数据库实例。对于未经授权的用户,此调用会导致AccessDenied并向用户发送验证异常。

  • cloudwatch:PutMetricAlarm:我们将PutMetricAlarmAPI 没有任何参数。由于警报名称缺失,请求会导致ValidationError用于授权用户。对于未经授权的用户,它会导致AccessDenied并向用户发送验证异常。

  • cloudwatch:DescribeAlarms:我们将DescribeAlarmsAPI,将最大记录数设置为 1。对于授权用户,我们希望响应中有一个警报信息。对于未经授权的用户,此调用会导致AccessDenied并向用户发送验证异常。

  • cloudwatch:DeleteAlarms:SEMR TOPutMetricAlarm,我们没有提供参数DeleteAlarms请求. 由于请求中缺少警报名称,因此此调用将失败并显示ValidationError用于授权用户。对于未经授权的用户,它会导致AccessDenied并向用户发送验证异常。

只要发生任何一个验证异常,它就会被记录下来。您可以使用以下步骤来手动识别哪些调用失败,方法是使用Amazon CloudTrail。有关更多信息,请参阅 Amazon CloudTrail 用户指南