发出 http 请求的 s3 托管网站的安全组

Security group for s3 hosted website making http requests

假设我有一个 S3 托管网站。除此之外,我还有一个 EC2,用于接收来自该网站的 http 请求。有没有办法可以设置一个安全组,使 EC2 只能接收来自该网站的 http 请求?我知道如果该网站托管在另一个 EC2 上,我可以使用 IP 地址或负载均衡器,我只是不确定在 S3 网站案例中如何处理。

当您在 S3 上启动网站时,您将获得所有静态 front-end 内容(就像在您的本地计算机上拥有一个没有 Web 服务器的纯 HTML/CSS/Javascript 网站一样)。意味着所有指向您的 EC2 实例的调用、XHR 或嵌入式资源都是 生成的 visitors Browsers 与 Network Source 生成的请求他们的 IP 的来源为“S3 或者如果您将 CloudFront 放在 S3 上,它将是 CloudFront 作为 HTTP Headers 中的来源)与 EC2 的目标目标通信(您的 WebServer 服务的位置在端口 80 或 443 上)。没有可以在 Bucket 上应用的 SG。但是,S3 Buckets 可以配置为 white-list 特定 IP 地址的策略,以访问 Bucket 内容以及随后托管在其上的静态 Web 内容。您还可以执行 CORS 政策并有条件检查 Referees 和 Origins。

抛开存储桶级别策略、IP 白名单、CORS 和条件限制如果您从 CloudFront 分发提供 Web S3 存储桶,您也可以在 CloudFront 级别应用 GEOIP 限制规则。

以防万一,假设您在 EC2 上有一个 API 服务器,您的 CloudFront 域将调用该服务器,您可以在 CloudFront 和 EC2 Web 级别应用一些访问控制以强制执行更严格的 CORS 策略. IE。 Internet 上的其他网站无法劫持您的 API 服务或进行 CSRF 攻击(再次仅作为浏览器级别保护)。