VPC/VPN 的 AWS Cloudfront

AWS Cloudfront for VPC/VPN

AWS 是否允许将 Cloudfront 用于网站使用,例如:- 缓存网页。 网站应该只能在公司 VPN 中访问。在一个网络内使用受限应用程序时,在云端缓存网页是个好主意吗?

是的,您的 CloudFront 被设计为网站前面的缓存层。

如果您想限制对 CloudFront 的访问,可以使用 Web Application Firewall 服务。

正如@daxlerod 指出的那样,可以将相对较新的 Web Application Firewall 服务与 CloudFront 一起使用,例如通过 IP 地址范围来限制对内容的访问。

当然,为了在其前面使用 CloudFront,并不要求网站实际托管在 AWS 中。

但是,"will it work?"和"are all the implications of the required configuration acceptable from a security perspective?"是两个不同的问题。

为了在站点上使用 CloudFront,源服务器(CloudFront 在其中获取不在请求内容的边缘节点的缓存中的内容的 Web 服务器)必须可以从 Internet 访问, 为了让 CloudFront 连接到它,这意味着您的私有站点必须在某种程度上暴露给 Internet。

CloudFront IP 地址范围是 public 信息,因此您可以使用原始服务器的防火墙部分保护对原始服务器的访问,但这只能阻止从除通过 CloudFront 以外的任何地方进行的访问——这不是够了,因为如果我知道您的 "secured" 服务器的名称,我就可以创建自己的 CloudFront 分配并通过 CloudFront 访问它,因为 IP 地址将在同一范围内。

CloudFront 提供的用于确保请求来自并通过授权 CloudFront 分发的机制是自定义来源 headers,这允许 CloudFront 将未知的自定义 header 和秘密值注入每个请求它发送到您的原始服务器,以允许您的服务器验证请求不仅来自 CloudFront,而且来自您的特定 CloudFront 分配的事实。当然,您的原始服务器会拒绝没有附带此 header 的请求,而无需解释。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html#forward-custom-headers-restrict-access

当然,您需要在浏览器和 CloudFront 之间使用 https,在 CloudFront 和源服务器之间使用 https。可以将 CloudFront 配置为在前端或后端分别使用(或要求)https,因此如果上述安全考虑使其成为满足您需求的可行解决方案,您将希望确保它针对两者进行了适当配置。

对于不是高度敏感的信息,如果缓存或 CloudFront 的其他功能对您的站点有益,这似乎是一种明智的方法。

将您的网站放入 public 网络 > 在 CloudFront 分发中附加 WAF 规则 > 在 WAF 规则中将您公司的 IP 范围列入白名单范围并将其他所有内容列入黑名单