Amazon S3 存储:可以在私有存储桶中列出公用文件夹吗?

Posted

技术标签:

【中文标题】Amazon S3 存储:可以在私有存储桶中列出公用文件夹吗?【英文标题】:Amazon S3 storage: possible to list public folders in a private bucket? 【发布时间】:2018-12-04 00:05:58 【问题描述】:

我有一个默认模式下所有设置的 Amazon S3 存储桶。当我转到我的存储桶权限选项卡并查看公共访问/所有人部分时,所有选项都是空的,所以一切都是私人的。

现在我创建了一个带有很长随机 sha1-hash 的文件夹,我在这个文件夹中上传了一些文件和子文件夹,并将整个文件夹公开。是否可以检测(列出)此文件夹?

当我在浏览器中访问我的存储桶时 https://s3.xxx.amazonaws.com/my-private-bucket 我看到了:<Code>AccessDenied</Code>

看起来不错。但也许还有另一种方法可以检测我的公用文件夹?

【问题讨论】:

【参考方案1】:

如果您的存储桶策略只是为该文件夹授予 s3:GetObject,则不应公开表明该文件夹存在。但是,当您的用户的请求通过 Internet 到达 Amazon S3 时,各种系统可能会记录对这些对象的访问。您至少应该使用 HTTPS 来访问对象。

见:TechnoSophos: Allow only HTTPS on an S3 Bucket

请注意,Security through obscurity - Wikipedia 通常被认为是一种糟糕的安全形式,因为任何知道文件链接的人都可以访问该文件。不要使用“隐藏文件夹”作为敏感信息的安全措施。

仅向授权人员授予访问权限的首选方法是让应用程序验证用户的身份,然后让它生成Amazon S3 pre-signed URLs,从而授予对 Amazon S3 中对象的限时访问权限。

【讨论】:

以上是关于Amazon S3 存储:可以在私有存储桶中列出公用文件夹吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node JS 从 Amazon S3 私有存储桶中检索图像

列出 Amazon S3 存储桶中所有文件的快速方法?

主账户内的 Amazon S3 存储桶未在成员账户中列出

复制同一 Amazon S3 存储桶中的文件

为啥我可以在未经许可的情况下删除/列出 S3 存储桶中的对象

如何(批量)删除Amazon S3存储桶中几百个文件的列表