【问题标题】:Amazon S3 - is it possible to restrict users to scan folders of public folders?Amazon S3 - 是否可以限制用户扫描公共文件夹的文件夹?
【发布时间】:2021-11-29 00:57:00
【问题描述】:

我有一个 Amazon S3 存储桶,其中包含多个文件名随机的文件。文件名很难猜测(例如:id84hBDs4g0a73nb0Ms9.png),我只希望知道文件名的用户访问它们。这意味着 Amazon S3 存储桶在技术上是公开的,但我必须限制用户“扫描”/“列出”文件夹。用户应该只能访问他们知道文件名的文件,而不能访问其他文件。这是 Amazon S3 中的可能设置吗?

【问题讨论】:

  • 为什么不使用 s3 预签名 URL?
  • 我检查了文档中的预先设计的 url,但似乎该资源只能在有限的时间内查看,我需要保持访问权限。我还可以通过编程方式创建它们并控制链接吗?
  • 是的,您可以以编程方式创建,但不,它不会是持久的 - 否则有什么意义?用户可以分享链接
  • 您是 cognito 的用户吗?如果您拥有链接,或者即使多人拥有该链接,但只有 1 个特定用户可以访问,您是否只是希望链接可以访问?
  • 用户共享链接是完全可以的,所有资产仍然是公开的,我们只是不想让它们如此容易被共享。但最重要的是,不能以编程或自动方式发现文件夹中的所有对象。

标签: amazon-web-services amazon-s3 amazon-ec2


【解决方案1】:

您想要实现Security through obscurity - Wikipedia。请注意,这不是一种完全安全的形式,因为任何知道对象名称的人都可以访问它们。

您可以简单地添加一个 Bucket Policy,使存储桶中的所有对象(或存储桶中的路径)“公开”。此策略允许访问对象,但不允许列出存储桶。

来自Bucket policy examples - Amazon Simple Storage Service

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

您首先需要在存储桶上禁用阻止公共访问才能存储此存储桶策略。

【讨论】:

  • 我明白了,所以拥有s3:GetObject 操作集应该足以通过默默无闻来实现安全性?关闭Block all public access
  • 感谢约翰的回答,这让我很放心。顺便说一句,您是否会说 108 位纯随机性的文件名足以通过默默无闻获得足够的安全性?假设我们有 10^9 个文件,我们不希望未经授权的用户找到其中的任何一个。
  • 有些人会争辩说,通过默默无闻的安全性根本不是安全性,因为一旦有人知道一个链接,任何人都可以访问它。但是,如果您对此感到满意,那么标准的 UUID 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2016-01-24
相关资源
最近更新 更多