我在 AWS 资源中添加了标签,但我的 IAM 策略不起作用。哪些 AWS 服务支持基于授权的标签?

上次更新日期:2022 年 2 月 17 日

我的资源使用正确的标签密钥和值进行贴标签,但我的 AWS Identity and Access Management (IAM) 策略没有评估资源上的标签。

简短描述

IAM 策略可以使用全局条件密钥 aws:ResourceTag 以根据资源的标签密钥和值控制访问权限。并非所有 AWS 服务都支持标签授权。可以对某些 AWS 资源贴标签,例如 AWS Lambda 函数和 Amazon Simple Queue Service (Amazon SQS) 队列。但是,不能在 IAM 策略中使用这些标签来控制对资源的访问。有关支持基于标签的授权的 AWS 服务的列表,请参阅 AWS services that work with IAM(使用 IAM 的 AWS 服务)。

解决方法

如果 AWS 服务不支持基于标签的授权,请检查该服务的操作、资源和条件密钥,以查看 IAM 策略中支持的资源级别权限和条件密钥。有些 AWS 服务,例如 Amazon SQS 中管理访问的概览AWS Lambda 基于身份的 IAM 策略,都有包含示例 IAM 策略的文档。

某些 Lambda 操作(如 DeleteFunction 和 PublishVersion)可以通过使用资源级别权限限制为特定的 Lambda 函数。将此示例 IAM 策略附加到 IAM 用户允许执行这些 Lambda 操作,但只能对单个 Lambda 函数执行这些操作。
注意:编辑 IAM 策略以包含您自己的 Lambda 函数 ARN

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowActionsOnSpecificFunction",
      "Effect": "Allow",
      "Action": [
        "lambda:DeleteFunction",
        "lambda:PublishVersion"
      ],
      "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function"
    }
  ]
}