基于命名空间或标签的 Amazon AWS S3 IAM 策略



我有许多存储桶以与assets-<something>相同的命名空间开头,所以我想知道向IAM组授予权限的最佳选择是什么,而维护它的需求最小。

是否可以在 ARN 中使用任何类型的正则表达式?或者也许我可以使用标签?EC2 有 ResourceTag 的条件,但似乎 S3 不存在。

还是我应该为每个存储桶添加新的 ARN 到策略?

同样,我正在寻找最小的解决方案,因此将新策略附加到每个存储桶本身似乎有点多。

IAM 策略可以根据通配符授予对 Amazon S3 存储桶的访问权限。

例如,此策略授予列出存储桶内容和从存储桶中检索对象的权限,但前提是存储桶以 assets- 开头:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SomeSID",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::assets-*",
        "arn:aws:s3:::assets-*/*"
      ]
    }
  ]
}

请注意,Resource部分同时引用存储桶(对于ListBucket)和存储桶的内容(对于GetObject)。

通配符也适用于存储桶名称中的其他地方,例如:arn:aws:s3:::*-record

无法根据标签授予对 Amazon S3 存储桶的访问权限。

ARN 格式

顺便说一句,如果您想知道为什么 Amazon S3 存储桶的 ARN(Amazon 资源名称)中有这么多冒号,这是因为 ARN 的正常格式是:

arn:aws:<service name>:<region>:<account>:<resource>

对于 Amazon S3 存储桶,可以从存储桶名称(全局唯一)中识别区域和账户,因此这些参数留空。

是的,我似乎可以将 IAM 策略与 ARN arn:aws:s3:::assets-*一起使用,并arn:aws:s3:::assets-*/*

相关内容

  • 没有找到相关文章

最新更新