感谢您的光临。
我是Amazon S3的新手,已经设置了一个包含大约100K文件的存储桶。我想限制只从一个域访问这些文件,所以我在存储桶上设置了CORS策略:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.example.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://www.example.com/*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
即使有了这个CORs策略,我也可以直接在浏览器中输入单个文件URL并对其进行访问,因此安全性似乎不起作用。
目前,S3中每个文件的安全性设置为“Everyone”以获得读取权限。我原以为CORS文件会覆盖它。如果我从权限中删除“Everyone”,那么我根本无法访问该文件(即使有适当的CORS策略)。
有什么想法吗?
答案 0 :(得分:1)
CORS配置将仅用于告知浏览器是否可以向此域发送请求,以及使用哪些标头和方法。它对S3授权没有影响。
您可以为可能更适合应用程序管理安全性的对象生成预签名的临时URL。
有关Java SDK示例,请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html。