AWS WAF 对 cloudfront 后面的 apigateway 没有影响

Posted

技术标签:

【中文标题】AWS WAF 对 cloudfront 后面的 apigateway 没有影响【英文标题】:AWS WAF has no effect on apigateway behind cloudfront 【发布时间】:2021-03-21 22:54:49 【问题描述】:

我有一个指向 API 网关端点的 CloudFront 分配。我在该发行版上插入了 WAF ACL,它似乎可以工作。当我使用 CloudFront 访问 API 网关端点时,我被阻止(这是我在 ACL 上配置的所需行为)

   https://<my-cloudfront-domain-name>/<my>/<api>/<endpoint> -> deny and I get a 403/blocked -> OK!

如果我“单独”到达我的端点(不在 cf 分发之后),我可以正常到达端点。即使我以孤立的方式访问 API,我也希望被阻止

 https://<api-id>.execute-api.us-east-1.amazonaws.com/<my>/<api>/<endpoint> -> passed and I get a 200 -> NOT OK...

我的堆栈是使用 serverless framework 构建的,我的 API 网关来自 edge 类型

【问题讨论】:

【参考方案1】:

API Gateway 可以通过 API 密钥限制访问。 CloudFront 可以在访问源时发送自定义的秘密 x-api-key 标头。对 API 网关的其他请求中缺少该标头将导致 API 请求被 403 Forbidden 拒绝。

请参阅使用 Amazon API Gateway 和 AWS WAF 保护您的 API,one 和 two 部分。

【讨论】:

我的问题是我遵循第一部分,但我仍然可以访问 api。如果您验证第一部分,请在受 cf 保护的 apigateway 和 cdn 上插入一个 waf。在我的情况下它失败了。第二部分需要一个 auth api - 如果可以的话,我希望避免它。

以上是关于AWS WAF 对 cloudfront 后面的 apigateway 没有影响的主要内容,如果未能解决你的问题,请参考以下文章

如何使用AWS WAF防止热链接

AWS WAF API 调用记录在哪里?

CloudFront 后面的 API Gateway 不支持 AWS_IAM 身份验证吗?

通过 IP 限制对 CloudFront 的访问

没有密钥对(RSA 私钥)的 aws cloudfront 中的签名 cookie

开始使用 Python 进行安全 AWS CloudFront 流式传输