通过直接URL访问保护AWS S3对象

时间:2019-01-15 05:07:02

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

我有一个角度应用程序,用作由Cloudfront分发包装的AWS S3的静态托管站点。此外,此角度应用程序还从不同的S3存储桶(随着时间的增长)访问所有图片,例如个人资料图片。该存储桶也被包装在云端分布中。

我的目的是防止任何人使用url直接访问此图像。这些图像只能从我的角度应用程序访问,而不能从外部访问。

我尝试将CORS配置添加到我的S3存储桶中,如下所示:

<CORSRule>
<AllowedOrigin>https://*.XXXX.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>

我还在我的个人资料图片存储桶的Cloudfront分配中添加了原始白名单。仍然无法从浏览器或应用程序访问我的个人资料图片。抛出403。请有人帮忙。

1 个答案:

答案 0 :(得分:0)

方法是创建一个Cloud Front Origin Identity并将其附加到您的发行版。如果通过控制台执行此操作,则Cloud Front本身会生成S3存储桶策略,这将阻止直接访问。(https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-creating-oai

PS:CloudFront发行版可能需要一些时间才能复制。