使用自定义标头将CloudFront限制为特定IP范围的S3静态网站

时间:2019-04-22 13:52:45

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

我想将网站部署到S3存储桶并使用静态网站托管。但是,我有一些严格的安全限制:

  1. 必须使用HTTPS
  2. 对网站的访问必须限制在特定的IP范围内

这是我的计划:

  • 使用AWS WAF限制可以访问网站的IP
  • 使用CloudFront来利用HTTPS
  • 格式化CloudFront发行版以转发自定义标头,该标头的作用类似于访问S3的访问键
  • 限制S3存储桶安全策略,使其仅允许包含上述CloudFront的自定义标头的流量。

这是一个图:

enter image description here

不过,我有一个大问题:在CloudFront 真的之间转发自定义标头是实现此目的的最佳方法吗? AWS文档说,原始访问身份不能用于充当网站(https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)的S3存储桶。自定义标头似乎不如原始访问标识安全,并且更难维护。使用随机字符串作为唯一的安全性使我感到不自在,该安全性可防止某人绕过我的CloudFront发行版并直接访问S3存储桶。如果恶意方猜测

我在这里的另一个选择是硬着头皮移到服务器,在这些服务器上我可以更好地控制很多安全性,但是我想利用S3网站的便利性。

3 个答案:

答案 0 :(得分:1)

您应从S3存储桶中删除网站配置,并使用Origin Access Identity。其余的设置都可以。

您不需要将S3存储桶配置为网站端点,因为您不会直接通过S3提供内容。使用Origin Access Identity,您的存储桶将仅可从CloudFront使用(除非您在存储桶策略中添加了其他内容),而这正是您想要的。

另请参阅https://medium.com/@sanamsoodan/host-a-website-using-aws-cloudfront-origin-access-identity-s3-without-static-website-hosting-43995ae2a9bd

答案 1 :(得分:1)

答案 2 :(得分:0)

您不能在S3上使用任何自定义标头,仅允许某些标头,例如:Referer,User-Agent等。 最好的方法是将OAI与S3 Rest API端点(而不是网站端点)一起使用。

但是,您可以为网站端点选择其他方法: 1.允许CloudFront IP范围访问S3存储桶。

http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

和 2.在CloudFront原始配置上添加Origin客户标头,例如“ Referer:一些随机值”,并创建存储区策略以允许在Referer标头中使用该特定值。

相关问题