保护源站以实现专属CloudFront访问的最佳实践

0

【以下的问题经过翻译处理】 客户想要保护其 CloudFront 分发的源服务器 (ALB+ EC2),使其仅接收来自 CloudFront 分发的流量,防止其他可能绕过 CloudFront 的来源访问。客户可以考虑使用 WAF

我们讨论的方法基本上有三种:

  1. 鉴于 ALB 有其安全组(SG),使用 Lambda 函数更新 SG 规则,仅允许来自 CloudFront Edge 位置服务 IP 范围的请求。每次向全球 Amazon PoPs 添加/移除新边缘位置时,此 IP 范围都可以进行修改。因此,可以使用 SNS 主题通过 Lambda 函数自动编辑 SG 中的规则来触发规则更新(包括更新 IP 范围)。这在此 博客文章 中有很好的描述。
  2. 在 CloudFront 分发和 ALB(用户 -> CF - > WAF -> ALB -> 计算服务)之间使用 WAF 的相同设置,与解决方案 1 的不同之处在于,Lambda 函数将基于 IP Set 更新 WAF 规则,而不是更新 ALB 安全组规则。
  3. 仅在 CloudFront 分发(用户 -> CF -> WAF -> ALB -> 计算服务)之间使用 WAF,并配置 CF 以在源请求中 添加自定义加密头,以标识所有来自 CloudFront 的请求,并设置 WAF,只允许带有特定自定义头的请求,拒绝所有其他请求到源点 (ALB)。有一个 外部博客文章实际上使用了这种方法,但在 AWS 文档/博客中并没有很完整地记录这种可能的案例。 我的问题/疑惑是

就配置工作/运行效率而言,您认为以下哪种方法是最佳选择?我的想法是,第 1 种方法虽然具有成本效益高(因为不使用 WAF,而且 SG 是免费的)和经过充分验证的优点,但却比较老式。如果可能的话,我会转向第三种方法。

1 Antwort
0

【以下的回答经过翻译处理】 我认为安全组的问题(尽管最近可能有所改变)在于它无法处理所有 CloudFront IP 地址。因此,使用 WAF 是首选的解决方案。

无论您使用哪种方法来限制基于 IP 地址的访问,这些 IP 地址都会被所有 CloudFront 分配使用,因此仅靠这种保护是不够的,我可以创建自己的分配并将其指向您的 ALB。因此,您确实需要在自定义标头中使用共享密钥来访问源。由于 WAF 支持基于标头内容的保护功能,你也可以用它来限制 IP 地址的访问。如果使用自定义标头,是否需要 IP 保护?也许不需要,但最好还是进行深度防御。我之前写了一篇博客文章,虽然与使用MediaStore作为源有关,但讲述了使用共享密钥限制对CloudFront分发的访问。

此外,定期更换自定义标头中的共享密钥也是一种好的做法,但我不知道有特定的博客文章或文档来实现此操作。可以通过使用定时运行的Lambda函数来更新CloudFront配置和WAF来实现此操作(确保有一个合适的窗口同时接受新旧密文)。

profile picture
EXPERTE
beantwortet vor 6 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen