对目标资源进行 Application Auto Scaling API 调用的权限验证
向 Application Auto Scaling API 操作发出授权请求需要 API 调用方具有访问目标服务和 CloudWatch 中的 AWS 资源的权限。Application Auto Scaling 会验证与目标服务和 CloudWatch 关联的请求的权限,然后再继续处理请求。为此,我们将发出一系列调用来验证目标资源的 IAM 权限。返回响应时,Application Auto Scaling 会读取该响应。如果 IAM 权限不允许指定的操作,则 Application Auto Scaling 将使请求失败,并将错误返回给用户,其中包含有关缺少权限的信息。这可确保用户想要部署的扩缩配置按预期工作,并且在请求失败时返回有用的错误。
作为工作原理的示例,以下信息提供了有关 Application 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
并向用户发送验证异常(与第一个要点中描述的处理相同)。 -
rds:AddTagsToResource:由于
AddTagsToResource
API 操作需要 Amazon Resource Name (ARN),因此必须使用无效的账户 ID (12345) 和虚拟实例 ID (non-existing-db) 指定一个“虚拟”资源以构建 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
并向用户发送验证异常。 -
cloudwatch:PutMetricAlarm:我们不带任何参数调用
PutMetricAlarm
API。由于缺少警报名称,对于授权用户,请求会导致ValidationError
。对于未经授权的用户,它会导致AccessDenied
并向用户发送验证异常。 -
cloudwatch:DescribeAlarms:我们调用
DescribeAlarms
API 并将最大记录数的值设置为 1。对于授权用户,我们预期响应中有一个警报的信息。对于未经授权的用户,此调用会导致AccessDenied
并向用户发送验证异常。 -
cloudwatch:DeleteAlarms:与上面的
PutMetricAlarm
类似,但我们不为DeleteAlarms
请求提供参数。由于请求中缺少警报名称,对于授权用户,此调用将失败并显示ValidationError
。对于未经授权的用户,它会导致AccessDenied
并向用户发送验证异常。
只要发生任何一个验证异常,它就会被记录下来。您可以通过使用 AWS CloudTrail,采取步骤手动标识哪些调用验证失败。有关更多信息,请参阅 《AWS CloudTrail 用户指南》。
注意
如果您在使用 CloudTrail 时收到应用程序弹性伸缩提示,则默认情况下,这些提示将包括用于验证用户权限的 Application Auto Scaling 调用。要过滤掉这些提示,请使用 invokedBy
字段,它们包含用于这些验证检查的 application-autoscaling.amazonaws.com
。