在不暴露来源的情况下将 AWS API 网关与 Cloud Front 集成
Integrating AWS API Gateway with Cloud Front without exposing origin
我正在从事一个采用无服务器架构的项目。
我发现尽管 AWS 说 API 网关可以保护您的资源免受 DDoS 攻击。
但是如果有恶意用户不断向您的服务发送垃圾邮件,
API 网关无法提供适当的方式来处理此类问题。
所以我开始思考我能做什么:
- AWS WAF 显然是一个解决方案。
我在 Whosebug 上找到了这个 post:
然后为了设置WAF,
我在 API 网关前面放置了一个 Cloud Front 分布。
我意识到这可能是一个变通解决方案,但真的是这样吗?
这是我发现的问题:
我有一个云前端分发,它的域名是cdn.net
我将原始路径设置为我的 api 网关:https://sampleagigw.amazon.com
,并将路径设置为其阶段 dev
.
当我调用 GET http://cdn.net/posts
时,它将 return 一个我期望的结果。
然后如果你把 http://cdn.net/posts
放在浏览器上,它比你想象的更让你惊讶,它也暴露了 API 网关的 url 在 url 浏览器栏:https://sampleagigw.amazon.com/dev/posts
这意味着所有WAF和Cloud front的工作都是没有意义的。
我是不是理解错了什么?
检查您的附加 CloudFront 分配 (cdn.net) 上的 "Viewer Protocol Policy" 并确保将其设置为 "Redirect HTTP to HTTPS" 或 "HTTPS Only"。或者,您可以编辑您的来源并将 "Origin Protocol Policy" 设置为 "HTTPS Only"。
如果您将 "Viewer Protocol Policy" 设置为 "HTTP and HTTPS" 并将 "Origin Protocol Policy" 设置为 "Match Viewer",那么我可以看到您将如何获得此结果。您在浏览器中输入 http://cdn.net/posts
,然后 cdn.net 分发尝试连接到 http://sampleagigw.amazon.com
(没有 https/tls/ssl)。这将转到由 API 网关创建的 CloudFront 分配,该网关设置为 "Redirect HTTP to HTTPS"。由于它收到 HTTP 请求,它 returns 302 重定向到 http://sampleagigw.amazon.com
。这是由 cdn.net 分发返回给浏览器的。然后浏览器跟随 302 重定向,在浏览器的 URL 栏中留下 http://sampleagigw.amazon.com
URL。
我正在从事一个采用无服务器架构的项目。
我发现尽管 AWS 说 API 网关可以保护您的资源免受 DDoS 攻击。
但是如果有恶意用户不断向您的服务发送垃圾邮件,
API 网关无法提供适当的方式来处理此类问题。
所以我开始思考我能做什么:
- AWS WAF 显然是一个解决方案。
我在 Whosebug 上找到了这个 post:
然后为了设置WAF,
我在 API 网关前面放置了一个 Cloud Front 分布。
我意识到这可能是一个变通解决方案,但真的是这样吗?
这是我发现的问题:
我有一个云前端分发,它的域名是
cdn.net
我将原始路径设置为我的 api 网关:
https://sampleagigw.amazon.com
,并将路径设置为其阶段dev
.当我调用 GET
http://cdn.net/posts
时,它将 return 一个我期望的结果。然后如果你把
http://cdn.net/posts
放在浏览器上,它比你想象的更让你惊讶,它也暴露了 API 网关的 url 在 url 浏览器栏:https://sampleagigw.amazon.com/dev/posts
这意味着所有WAF和Cloud front的工作都是没有意义的。
我是不是理解错了什么?
检查您的附加 CloudFront 分配 (cdn.net) 上的 "Viewer Protocol Policy" 并确保将其设置为 "Redirect HTTP to HTTPS" 或 "HTTPS Only"。或者,您可以编辑您的来源并将 "Origin Protocol Policy" 设置为 "HTTPS Only"。
如果您将 "Viewer Protocol Policy" 设置为 "HTTP and HTTPS" 并将 "Origin Protocol Policy" 设置为 "Match Viewer",那么我可以看到您将如何获得此结果。您在浏览器中输入 http://cdn.net/posts
,然后 cdn.net 分发尝试连接到 http://sampleagigw.amazon.com
(没有 https/tls/ssl)。这将转到由 API 网关创建的 CloudFront 分配,该网关设置为 "Redirect HTTP to HTTPS"。由于它收到 HTTP 请求,它 returns 302 重定向到 http://sampleagigw.amazon.com
。这是由 cdn.net 分发返回给浏览器的。然后浏览器跟随 302 重定向,在浏览器的 URL 栏中留下 http://sampleagigw.amazon.com
URL。