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

时间:2014-11-26 12:50:43

标签: regex amazon-web-services amazon-s3 amazon policy

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

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

或者我应该为每个桶添加新的ARN到策略吗?

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

2 个答案:

答案 0 :(得分:6)

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(亚马逊资源名称)中有这么多冒号,那是因为ARN的正常格式是:

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

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

答案 1 :(得分:0)

是的确看来我可以在ARN arn:aws:s3:::assets-*arn:aws:s3:::assets-*/*使用IAM政策