与对象的公共访问相比,存储桶上的公共访问有什么作用?

时间:2018-11-14 13:56:18

标签: amazon-web-services amazon-s3

我是AWS S3的新手,并试图弄清楚它是如何工作的。

为了使单个文件在Internet上公开,您似乎必须在特定对象上将“公共访问”设置为“所有人”。

enter image description here

但是,存储桶本身具有相同的权限;

enter image description here

即使我将存储桶的“公共访问权限”更改为“每个人”,似乎仍然使用了单个对象的权限(屏幕截图1)。

如果是这种情况,那么存储桶上的“公共访问权限”到底能做什么?

2 个答案:

答案 0 :(得分:1)

S3访问权限是一个混乱的事情,主要是因为要理解三种“类型”。

可以在文档中找到权限模型(存储桶访问权限,控制列表和策略)的完整讨论(请参阅:Setting Bucket and Object Access Permissions - Amazon Simple Storage Service)。但是您已经注意到:

  

桶和对象权限彼此独立。对象不会从其存储桶中继承权限。例如,如果您创建存储桶并向用户授予写访问权限,则除非该用户明确授予您访问权限,否则您将无法访问该用户的对象。

“公共访问权限”是指“您帐户外部的用户没有IAM或S3 ACL访问权限”。

与所有存储桶访问权限一样,可以为存储桶操作(允许任何人列出对象/允许任何人创建存储桶中的对象;对访问控制列表执行相同操作)和单个对象(读/写/等)

n.b。如果您是因为要使S3存储桶可公开访问而提出此要求,请参见in this answer。请尽量不要成为新闻中的下一家开放式S3存储桶公司!

答案 1 :(得分:0)

向Amazon S3存储桶或存储桶的一部分授予公共访问权的最佳方法是使用Bucket Policy。这比为每个对象授予公共访问权限要容易。

以下是一项授予公众对整个存储桶的访问权限的政策:

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