我在 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"
}
]
}