代码之家  ›  专栏  ›  技术社区  ›  rodrigocf

S3托管网站发出HTTP请求的安全组

  •  1
  • rodrigocf  · 技术社区  · 7 年前

    假设我有一个S3托管的网站。除此之外,我还有一个EC2,它将接收来自该网站的HTTP请求。有没有一种方法可以设置一个安全组,使EC2只能从该网站接收HTTP请求?我知道如果网站是在另一个EC2上托管的,我可以通过这个VOS IP地址或负载均衡器,我只是不知道如何在S3网站案例中实现它。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Zoobin    7 年前

    当你在S3上启动一个网站时,你将得到所有的静态前端内容(就像在你的本地机器上有一个纯HTML/CSS/javascript网站,没有Web服务器一样)。意味着指向EC2实例的所有调用、XHR或嵌入式资源都是 生成 通过 访问者浏览器 带网络 他们的IP来源 如果源站是“S3”,或者如果您在S3上放置一个cloudfront,那么它将作为HTTP头中的源站,与EC2的目标(您的Web服务器在端口80or443上提供服务)通信。桶上没有SG。但是,S3存储桶可以配置一个策略来白名单某些IP地址,以访问存储桶内容,然后访问存储桶内容上承载的静态Web内容。您还可以执行CORS政策,并有条件检查裁判员和来源。

    抛开bucket级别的策略、IP白名单、CORS和条件限制,如果您从cloudfront发行版为Web S3 bucket提供服务,那么也可以在cloudfront级别应用geoip限制规则。

    以防万一,假设您的CloudFront域将调用EC2上的API服务器,您可以在CloudFront和EC2 Web级别应用一些访问控制,以强制实施严格的CORS策略。也就是说,互联网上的其他网站不能劫持您的API服务或进行CSRF攻击(同样仅作为浏览器级别的保护)。