【问题标题】:Creating S3 Bucket folders with different permissions创建具有不同权限的 S3 Bucket 文件夹
【发布时间】:2018-06-23 16:10:19
【问题描述】:

我目前有一个用于提供静态文件的小型 Web 服务器,它被设置为执行以下操作:

所以本质上,/dl/ 是公共文件的存储库,/dl2/ 是私有文件的存储库。然而,将此行为转换为 S3 似乎并不简单。目前,我的政策如下所示:

{
    "Version": "2012-10-17",
    "Id": "StaticPolicy01",
    "Statement": [
        {
            "Sid": "DLALlowPolicy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::static.spookyinternet.com/dl/*"
        }
    ]
}

但是,我找不到任何关于如何设置的具体文档。如何将 S3 存储桶配置为以同样的方式运行?

编辑:一些附加信息,如果适用的话: 这最终将位于使用我个人域名的云端实例后面。

【问题讨论】:

  • dl2 中的资源是否可以通过直接 S3 文件链接公开访问?
  • 是的。如果您有指向 /dl2/ 中资源的直接链接,您应该能够查看/下载它。
  • 当您转到https://my.domain.com/dl2/specfic-file 时,该链接会以某种方式调用直接链接吗?
  • my.domain.com/dl2/specific-file 将是直接链接。 specific-file 是在 /dl/ 或 /dl2/ 中找到的某些文件的占位符。例如,如果我有一个名为 picture.jpg 的文件,my.domain.com/dl2/picture.jpg 将是直接链接。
  • 好的,这就是问题所在。您的文件首先是可公开访问的,任何政策都无法阻止。将文件设为dl2 私有,您的问题就会消失

标签: amazon-web-services amazon-s3


【解决方案1】:

看来你的愿望是:

  • 可以列出的dl 目录,所有文件均可访问
  • dl2 目录,无法列出,但如果有人知道文件名,所有文件都可以访问

首先,这是一个非常糟糕的安全设计。仅仅因为有人无法列出dl2 目录并不能使您的文件安全。任何知道文件名(或能够猜测文件名)的人都可以访问这些文件。 Security through obscurity 的安全性不是很好。

其次,请注意权限不会放在文件夹上。相反,存储桶策略(例如您列出的那个)可以基于路径授予权限,这实际上与授予文件夹级别的权限相同。

另外,请注意 Amazon S3 不是传统的 Web 服务器。它是一个对象存储系统,还通过 HTTP/S 调用提供对对象的访问。因此,它不能执行诸如“提供 /dl/ 中所有可用文件的目录列表”之类的操作。 (它可以提供存储桶中所有文件的 XML 列表,但您通常不希望这样做。)

您希望授予对dl 中所有文件的访问权限的愿望可以通过您上面显示的存储桶策略来满足。如果您还希望授予对 dl2 中所有文件的访问权限(从安全角度来看这很糟糕),只需将其添加到策略中,例如:

"Resource": ["arn:aws:s3:::static.spookyinternet.com/dl/*", 
             "arn:aws:s3:::static.spookyinternet.com/dl2/*"]

S3 无法满足您在 dl 中列出文件的愿望。您可以选择上传默认 index.htm 文件并通过static website sharing 提供它),但您需要一个应用程序来保持列表始终是最新的。

因此,简单来说,存储桶策略可以满足您的所有需求(列出dl 的能力除外)。

但是,您可能会问,什么是更好的做事方式?我很高兴你问!

  • 授予对dl的公共访问权限
  • 制作一个网页,列出dl中的文件和链接
  • 如果您想提供私人文件,请创建一个用户必须进行身份验证的应用程序。应用程序将验证他们的身份,确定是否允许他们访问文件,然后生成一个Amazon S3 Pre-Signed URL,授予对对象的限时访问权限。一旦时间到期,该 URL 将不再有效。因此,这些文件是保密的,但一个特殊的 URL 会授予临时访问权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-16
    • 2012-05-31
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多