我目前有一个用于提供静态文件的小型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存储桶使其具有相同的行为?
编辑:一些其他信息(如果适用): 最终,它将使用我的个人域名坐在一个Cloudfront实例后面。
答案 0 :(得分: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
中的文件并链接到文件