S3 存储桶策略:允许完全访问存储桶及其所有对象

wrs*_*der 3 amazon-s3 amazon-web-services

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

我能够通过使用两个不同的资源名称来解决这个问题:一个 forarn:aws:s3:::examplebucket/*和一个 for arn:aws:s3:::examplebucket

有没有更好的方法来做到这一点 - 有没有办法一次性指定一个资源标识符,该标识符指的是存储桶本身及其所有包含的对象?

Joh*_*ein 15

针对 Bucket 的权限与针对 Bucket 内的对象的权限是分开的。因此,您必须向两者授予权限。

幸运的是,您可以编写一个较短的版本来组合存储桶级和对象级权限:

{
  "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": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • @patrickdavey 存储桶策略(在 S3 存储桶本身上)需要一个“Principal”。但是,如果您将策略放在 IAM 用户或 IAM 组上,那么它不应该有“主体”(因为主体会自动设置为放置策略的 IAM 用户/IAM 组)。 (4认同)