跳转到主要内容
Chinese, Simplified

本文由Heitor Lessa提供,AWS专业解决方案架构师- Serverless

今天,我很兴奋地向您介绍Amazon API网关与AWS WAF的本地集成。以前,如果希望使用AWS WAF在Amazon API网关中保护API,就必须部署一个区域性API端点,并使用自己的Amazon CloudFront发行版。现在,这个新特性允许您提供任何—API网关端点,并使用AWS WAF保护它,而无需配置自己的CloudFront发行版来添加该功能。

在本系列的第1部分中,我描述了如何使用AWS WAF保护API网关提供的API。

在本系列的第2部分中,我描述了如何使用API密钥作为CloudFront发行版和API网关之间的共享秘密,以确保在API网关中对API的公共访问是安全的。这种新的AWS WAF集成意味着不再需要第2部分中描述的方法。

下面的图像描述了在这个特性可用之前和之后在API网关中保护API的方法。

地点:

  1. AWS WAF仅保护CloudFront端点。
  2. AWS WAF本地保护Amazon API网关端点。

为Amazon API网关管理的API启用AWS WAF

对于本演练,您可以使用现有的宠物商店API或您可能已经部署的API Gateway中的任何API。您将创建一个新的AWS WAF web ACL,该ACL稍后与您的API网关阶段相关联。

按照以下步骤创建web ACL:

  1. 打开AWS WAF控制台。
  2. 选择Create web ACL。
  3. 对于Web ACL名称,输入ApiGateway-HTTP-Flood-Sample。
  4. 对于地区,选择美国东部(北弗吉尼亚)。
  5. 选择Next,直到您达到步骤3:创建规则。
  6. 选择Create rule并输入HTTP Flood Sample。
  7. 对于规则类型,选择基于速率的规则。
  8. 对于速率限制,输入2000并选择Create。
  9. 对于默认操作,选择“允许不匹配任何规则的所有请求”。
  10. 选择Review并创建。
  11. 确认您的选项与下图相似,然后选择Confirm和create next。

您现在可以按照以下步骤为API网关中的现有API启用AWS WAF web ACL:

  1. 打开Amazon API网关控制台。
  2. 选择阶段,刺激。
  3. 在Web应用程序防火墙(Web Application Firewall, WAF)下,选择ApiGateway-HTTP-Flood-Sample(或您刚刚创建的Web ACL)。
  4. 选择保存更改。

在API网关中测试您的API,现在由AWS WAF保护

AWS WAF提供HTTP洪水保护,这是一个基于速率的规则。当来自客户机的web请求超过可配置阈值时,将自动触发基于速率的规则。阈值由一个IP地址在5分钟内允许的最大传入请求数定义。

在突破这个阈值之后,IP地址的其他请求将被阻塞,直到请求速率低于该阈值为止。对于本例,您将2000个请求定义为基于HTTP洪泛率规则的阈值。

火炮是一个开源的现代负载测试工具包,用于将大量请求直接发送到API网关调用URL,以测试AWS WAF本机集成是否正常工作。

首先,按照以下步骤检索正确的宠物商店API调用URL:

  • 打开API网关控制台。
  • 在左侧导航窗格中,打开PetStore API。
  • 选择stage、选择prod并复制Invoke URL值。

其次,使用cURL查询您的分布,并在触发速率限制规则之前查看API输出:

$ curl -s INVOKE_URL/pets

[
  {
    "id": 1,
    "type": "dog",
    "price": 249.99
  },
  {
    "id": 2,
    "type": "cat",
    "price": 124.99
  },
  {
    "id": 3,
    "type": "fish",
    "price": 0.99
  }

然后,用Artillery 在短时间内发送大量请求,触发你的速率限制规则:

$ artillery quick -n 2000 --count 10 INVOKE_URL/pets

使用这个命令,炮兵 artillery 从10个并发用户向PetStore API发送2000个请求。通过这样做,您可以在5分钟内触发速率限制规则。简而言之,我没有在这里发布炮兵输出。

炮兵完成任务后,尝试重新运行cURL命令。你不应该再看到宠物列表:

{“message”:”Forbidden”}

从输出中可以看到,请求被AWS WAF阻塞。当您的IP地址低于请求限制速率时,将从阻塞列表中删除。

结论

正如您所看到的,通过AWS WAF与Amazon API网关的本机集成,您不再需要管理自己的Amazon CloudFront发行版来使用AWS WAF保护您的API。AWS WAF本机集成使此过程无缝。

我希望这篇文章中的信息对你有所帮助。请记住,您现在可以将此集成用于所有Amazon API网关端点(Edge、Regional和Private)。它在下列区域提供:

  • US East (N. Virginia)
  • US East (Ohio)
  • US West (Oregon)
  • US West (N. California)
  • EU (Ireland)
  • EU (Frankfurt)
  • Asia Pacific (Sydney)
  • Asia Pacific (Tokyo)

 

原文:https://aws.amazon.com/cn/blogs/compute/amazon-api-gateway-adds-support-for-aws-waf/

本文:http://pub.intelligentx.net/amazon-api-gateway-adds-support-aws-waf

讨论:请加入知识星球或者小红圈【首席架构师圈】

Article
知识星球
 
微信公众号
 
视频号