AWS S3 公开存储桶

Posted

技术标签:

【中文标题】AWS S3 公开存储桶【英文标题】:AWS S3 make bucket public 【发布时间】:2020-08-05 18:23:38 【问题描述】:

我以管理员权限登录 AWS。我正在尝试使存储桶公开读取,写入。我已取消选择这些选项。我也关注了这个Duplicate 并尝试更新存储桶策略,但出现访问被拒绝错误。所有这些答案都来自 2018 年。

【问题讨论】:

您可以分享您正在使用的存储桶策略吗? 【参考方案1】:

您提到的link 仍然可以正常工作!

连同“Bucket Public Access”选项,您应该在“Bucket Policy”中粘贴以下存储桶策略:


   "Version":"2012-10-17",
   "Statement":[
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal":"*",
      "Action":[
         "s3:GetObject",
         "s3:PutObject"
      ],
      "Resource":[
         "arn:aws:s3:::your-bucket-arn-here/*"
      ]
    ]

这会将读取和写入操作授予您的存储桶。

请记住更改您存储桶的 Amazon 资源名称 (arn),其中存储桶策略中的键指向 “资源”

您可以在存储桶策略粘贴字段上方找到存储桶的 arn。

此外,您可以使用AWS policies generator 来获得更多访问权限。

希望能帮到你。

【讨论】:

我试过了,但在应用策略时遇到了访问被拒绝的问题。我已经用拒绝访问的图片更新了我的问题。【参考方案2】:

如果您的存储桶策略使用以下内容,那么至少将其设置为允许公共读写。请注意,这是匿名的,因此任何人都可以对存储桶执行读取或写入操作,您仍需对此负责。


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

请注意,如果涉及 ACL,您还需要应用 s3:PutObjectAcl 的权限。此外,ACL 需要授予公共读/写权限,这会违反直觉,因为您使用存储桶策略来执行此操作。

如果您在更新存储桶策略时访问被拒绝,您的用户将被禁止执行该操作。

发生这种情况的原因有几个:

您的 IAM 用户没有 IAM 策略权限。 您的账户是 AWS 组织的一部分,该组织使用 SCP(服务控制策略)来禁止应用存储桶策略。 您的 IAM 用户已配置了一个禁止此访问的 IAM 边界。

如果您无法修改您的权限,或者您的帐户是通过服务提供给您的,您需要与他们沟通。

【讨论】:

访问被拒绝是实际问题,我是拥有完整管理员权限的用户,我再次创建了一个拥有完整管理员权限的用户,但同样的问题访问被拒绝。 SCP 被禁用。你知道如果我采用不同原则的相同策略,如“Principal”:“AWS”:“arn:aws:iam::accountnumber:root”,我可以做到,其中帐号是我的实际帐号 "Principal" : "AWS" : "*" 怎么样 它同样的访问被拒绝,我认为它是别的东西。

以上是关于AWS S3 公开存储桶的主要内容,如果未能解决你的问题,请参考以下文章

在 Amazon S3 中公开存储桶 [关闭]

从 AWS S3 存储桶访问文件

只能从我的 ElasticBeanStalk 实例访问 AWS S3 存储桶

从 Azure 数据块读取 Amazon S3 特定文件夹,无需公开访问存储桶

气流:每日刷新后如何在 s3 存储桶中公开对象

无需凭据即可从特定 IP 授予对 AWS S3 存储桶的访问权限