AWS Cloudfront(使用WAF)+ API网关:如何通过Cloudfront强制访问?

Fre*_*ert 13 amazon-web-services amazon-cloudfront aws-api-gateway amazon-waf

我想把WAF放在API网关的前面,并且我发现只有通过在APIG面前手动添加启用了WAF的额外Cloudfront发行版才能获得(小)信息.这有点遗憾,特别是因为APIG现在本身支持自定义域,但它应该有效.

现在为了使解决方案安全而不仅仅是模糊,我想强制要求只能通过Cloudfront发行版访问API.这样做的最佳选择是什么?

  • 我希望能够使用类似于S3的'Origin Access Identities',但不知道如何做到这一点.
  • 如果我可以将一个IAM用户(或角色?)分配给Cloudfront发行版,我可以使用API​​G IAM功能,但我不知道如何做到这一点.
  • 我可能需要在APIG中使用API​​密钥,并将其作为来自Cloudfront的Origin Custom Header传递.这可能有用,只要我们不想将API密钥用于其他目的,所以我对此并不完全满意.
  • 可以使用虚拟(!)自定义授权程序,令牌验证表达式实际检查从Cloudfront作为Origin自定义标头传递的秘密.应该工作,它更灵活,但有点脏......或不?

有更好的想法吗?或者也许"正确的方式"存在,但我忽略了它?

Bal*_*aji 5

我来自API Gateway.

不幸的是,我们现在拥有的最佳解决方案是在CloudFront中注入原始自定义标头并在自定义授权器中验证(在您的问题中选项4).

我们已经意识到这种局限性并没有那么好的解决方法.我们希望将来提供更好的WAF集成,但我们没有ETA.

  • 你不知道这给我们带来了多少麻烦.请将ASF集成添加到API Gateway ASAP (3认同)
  • 现在,您可以使用区域域名,并在区域域端点前面创建自己的CloudFront分配.您可以在CloudFront分配中设置WAF.有关详细信息,请参阅https://aws.amazon.com/about-aws/whats-new/2017/11/amazon-api-gateway-supports-regional-api-endpoints/ (3认同)