【问题标题】:AWS - Granting access to all resources with specific tagsAWS - 授予对具有特定标签的所有资源的访问权限
【发布时间】:2026-02-01 09:20:03
【问题描述】:

我正在尝试创建一个可以完全访问具有特定标签的所有资源的 IAM 组。

例如,如果 S3 存储桶和 EC2 实例标记为 env:qa,则组 project-qa 应该对它们具有完全访问权限。

到目前为止,我已经尝试了以下策略:

{
        "Version": "2012-10-17",
        "Statement": [
            {
                Effect: "Allow",
                Action: "*",
                Resource: "*",
                Condition: {
                    "StringEquals": {
                        "aws:ResourceTag/env": "qa"
                    }
                }
            }
        ]
    }

我创建了一个帐户来测试这一点,但在浏览存储桶时,我立即被告知我缺乏 s3:ListAllMyBuckets 操作的权限 - 我认为 Action: "*" 会涵盖该操作

【问题讨论】:

  • 基于标签的权限不适用于存储桶。只有对象。

标签: amazon-web-services amazon-iam


【解决方案1】:

是的,ListAllMyBuckets 操作被 * 覆盖,但它的“资源”没有被标记,因为它的资源实际上并不是真正存在的资源,因此您不能执行该操作。您要么拥有ListAllMyBuckets*,要么没有,没有办法根据存储桶来限制它,因为您没有列出存储桶,而是列出了所有存储桶,而这个“所有存储桶”没有一个标签,它实际上没有任何东西,它并不真正存在。见https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.htmlResource types for ListAllMyBuckets 是空的,没有实际的资源可以交互。

在存储桶中列出对象可以基于标签工作,但不会首先列出所有存储桶。很多地方都会发生同样的事情,列出不尊重正在列出的资源的许可。这样看:您可能不被允许对存储桶做任何事情,您无法浏览、配置它,但您仍然可以在列表中查看它。

解决此问题的唯一方法是,一旦您发现缺少这些特殊权限,就一一添加。


请注意,有些实际的 AWS 资源是不可标记的,因此您根本无法使用该策略取得成功。

【讨论】:

  • 天哪,每次我尝试在 AWS 中做一些应该很简单的事情时,我最终都会因为这样的废话而浪费时间。
【解决方案2】:

对上述政策要非常小心,您正在授予销毁资源的权限,例如 route53 DeleteHostedZone@luk2302 指出的许多资源不遵循基于标签的条件全部。

这对我来说是一个来之不易的教训。在编写策略时,请随身携带此文档AWS services that work with IAM

这让您了解哪个服务支持什么样的限制:

  • 资源级权限
  • 基于来源的政策
  • 基于标签的授权
  • 临时凭证
  • 服务相关角色

坦率地说,如果我是你,我会使用我想要的选择性允许操作,因为在 IAM 中默认情况下所有操作都被拒绝。

【讨论】:

  • 您确定授予对这些操作的访问权限吗?如果您尝试基于标签授予权限,但资源不支持标签,iam 策略是否会简单地忽略标签限制而不是因为无法满足限制而拒绝操作?
  • @luk2302 是的,根据 OP 中的原始策略,它将允许所有操作。如果您查看我附加的文档并查看route53 上的Authorization based on tags,它说不,但在政策中一切都是允许的,所以它会让它通过。为此,我与 AWS 支持团队一起花费了数小时。
  • 是的,route53 不支持基于标签的授权,但我希望 IAM 始终拒绝任何 route53 交互,因为"StringEquals": {"aws:ResourceTag/env": "qa"} 永远不会是真的,类似于我写的"StringEquals": {"nonesense": "yes"}。我希望 IAM 查看该语句,检查该语句是否对当前服务“有意义”,如果没有,则忽略该语句。
  • @luk2302 我从通话中得到了好处。 AWS 支持是在该文档下查看基于标签的限制。我不确定事情发生了变化。
  • @rath 它现在拒绝访问,正如我上面提到的。
最近更新 更多