如何通过IP限制AWS Lambda或API网关?

时间:2019-06-04 21:25:54

标签: amazon-web-services aws-lambda aws-api-gateway throttling

我目前正在尝试使用S3静态网站,API Gateway和AWS Lambda设计无服务器应用程序。我想将此网站公开,所以每个用户没有API密钥。

我想防止将这些端点滥用到非常低的水平,例如每5秒对给定的公共IP请求1。

是否可以使用AWS Shield或在其中的任何服务中?

2 个答案:

答案 0 :(得分:5)

不幸的是,如果您有以下要求:我想防止将这些终结点滥用到非常低的水平,例如每5秒对给定的公共IP请求一次。,那么AWS WAF将不适合。

您可以为基于WAF费率的规则设置的最低阈值为5分钟内2000个请求。

enter image description here

如果您要基于IP实施基于积极的费率规则,则需要编写自己的解决方案,其中之一:

  • 检查CloudFront访问日志并追溯禁止不良IP
  • 使用Lambda @ Edge实时评估请求+相应地禁止

更适合您的用例的是在API阶段使用限制,而不是基于IP。您可以做的是平均设置最大每秒请求数,并在超出该数目时让API返回429个太多请求。您可以使用它来真正激进,或者使用十进制值来放松:

enter image description here

答案 1 :(得分:1)

来自AWS Announces Rate-Based Rules for AWS WAF

  

AWS今天宣布了 AWS WAF的基于费率的规则。这种新的规则类型可保护客户网站和API免受诸如Web层DDoS攻击,暴力登录尝试和不良机器人之类的威胁。当来自客户端的Web请求达到一定的可配置阈值时,将自动触发基于费率的规则。

     

使用基于评分的规则,客户还可以阻止来自将来尝试向其网站的某些部分(例如登录页面)发送大量请求的客户端的请求。客户还可以将此新规则与CloudWatch Alarms和AWS Lambda集成,以对对API端点进行异常高调用的客户端执行自定义操作。客户还可以使用基于比率的规则,通过结合基于比率的规则和条件来识别与不良僵尸程序相关的特定恶意用户代理,从而缓解有害的僵尸程序。