这与Host a static site on AWS S3 - granting read only access和AWS S3 Bucket Permissions - Access Denied有关,但是自从这些答案出现以来,AWS改变了一些设置静态网站托管的方式。
我很好奇我是否可以正确设置访问权限和权限,并且没有留下任何安全漏洞。我现在可以访问S3存储桶中的静态html文件,因此可以进行Web访问以进行公共工程,并且可以在AWS Web界面中而不是通过外壳上传文件。
对于静态站点,AWS设置非常简单,但是我要检查:我是否为静态站点正确设置了ACL和权限?
1)为静态网站托管设置了“属性”选项卡:“桶托管”。
2)在“权限”标签中,
a)公共访问是:
b)在访问控制列表中,存储桶拥有者可以访问,而其他AWS账户或公众则没有访问权限。
c)他的存储桶策略被标记为“公共”,并且JSON是标准的:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example.com/*"
}
]
}
d)我没有设置CORS配置。
答案 0 :(得分:2)
是的,您的策略和公共访问设置对于有意通过存储桶策略公开访问所有对象(读取但未列出/写入/删除)的对象的网站是正确的。
请注意,作为这些 correct 设置的副作用,如果请求了不存在的对象,S3将不会返回404 Not Found
。相反,它将返回403 Forbidden
。对此没有真正的解决方法,因为S3认为匿名请求者是未经授权的以确定为什么无法下载该对象(可能是由于不存在或其他原因),除非也授予了s3:ListBucket
,而您不想这样做。