S3桶策略:允许完全访问一个桶及其所有对象。

13

我想要一个存储桶策略,允许访问存储桶中的所有对象,并对存储桶本身执行操作,例如列出对象 (Action 是s3:*)。

我使用了两个不同的资源名称来解决这个问题:一个用于arn:aws:s3 :::examplebucket/*,另一个用于arn:aws:s3 :::examplebucket

有没有更好的方法可以做到这一点 - 有没有一种方式可以指定一个资源标识符,它涵盖了存储桶本身和其中包含的所有对象?


2
不,你现在的做法就是必须要这样做的方式。 - Mark B
2个回答

36

Bucket级别权限和Bucket内Object级别权限是分开的。因此,您必须授予两者权限。

幸运的是,您可以编写一个较短的版本来结合Bucket级别和Object级别的权限:

{
  "Id": "BucketPolicy",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllAccess",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": [
         "arn:aws:s3:::my-bucket",
         "arn:aws:s3:::my-bucket/*"
      ],
      "Principal": "*"
    }
  ]
}

1
此策略包含以下错误:已禁止字段“Principal”。 - patrickdavey
4
将 Bucket Policy(放在 S3 存储桶上的策略)需要一个“主体”(Principal)。但是,如果您将策略放在 IAM 用户或 IAM 用户组上,则不应该有“主体”(因为主体会自动设置为放置策略的 IAM 用户/用户组)。 - John Rotenstein

3
AWS已更新了在权限页面上输入Bucket策略的方式。我使用提供的UI层来添加操作和资源。请使用下面提到的策略,并根据您的Bucket更改资源。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "your_arn/*"
        }
    ]
}

如果AWS更改了存储桶权限和存储桶内对象权限之间的区别,请分享文档链接。 - wrschneider
@wrschneider,可能我的回答没有清楚地表达。他们没有改变区分,但是我们以前输入这些权限的JSON对象的UI视图已经发生了变化。 - Rajat Upadhyay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接