我有一个ELB来平衡一些EC2实例。 ELB公开了整个系统的端点。
现在我正在通过此ELB创建CloudFront分配。 有没有办法允许用户仅使用CloudFront端点连接并拒绝直接连接到ELB?
由于
答案 0 :(得分:3)
您必须将安全组限制为CloudFront使用的IP地址范围列表。这是已发布列表here的子集。
不幸的是,该列表可能会发生变化,因此您不能只设置一次而忘记它。亚马逊发布了一个教程here,它将指导您设置一个Lambda函数,该函数将在Amazon发布更新的IP列表时自动更新您的安全组。
答案 1 :(得分:2)
不幸的是,目前没有直接的方法可以做到这一点。
ELB访问只能受IP范围的限制。您可以尝试将ELB限制为CloudFront's IP ranges,但这是相当脆弱的并经常更改。如果引入了新的IP范围,您最终可能会意外阻止CloudFront。我会说这种方法不可行,但我已经看到它在强制要求时完成了。它确实破了几次。
答案 2 :(得分:1)
您可以设置一个自动安全组,该组仅允许Cloudfront IP,并允许Lambda函数在Cloudfront IP范围更改时更新它。在我的博客文章中,您可以找到一个完整的Cloudformation模板,为您设置:
https://medium.com/cagataygurturk/restricting-elb-access-to-cloudfront-8b0990dea69f
答案 3 :(得分:0)
如果R53中没有使用您的负载均衡器的记录,并且只有cloudfront定义了负载均衡器使用的备用域名(CNAME),那么您可以将WAF ACL与您的负载均衡器关联,从而丢弃任何不匹配备用域名。 在这种情况下,您必须为负载均衡器强制使用CloudFront分配。
答案 4 :(得分:0)
AWS博客有一个solution for this scenario。
它的作用基本上是创建一个Lambda函数,该函数订阅SNS主题,该主题接收有关AWS IP地址范围更改的通知(该主题归AWS拥有)。然后,此lambda动态更新ELB / ALB安全组。 Lambda代码可用here。