我们如何解决/“无服务器”资源滥用的良好做法是什么?

时间:2018-08-30 18:40:57

标签: amazon-web-services aws-lambda aws-sdk aws-security-group

如果我使用AWS API Gateway创建公共端点,那么全世界都可以访问它。这将是一个问题,因为端点将触发AWS Lambda函数。如果假设我无法查询数据源来确定传入IP地址过去查询资源的频率,那么保护该端点免受滥用的最佳实践是什么?我还有其他安全选项吗?

我意识到我可以使用reCaptcha,但这仍然会调用AWS Lambda函数,并且如果在短时间内完成一百万次会产生成本。

2 个答案:

答案 0 :(得分:1)

一种非常简单的保护API网关的方法

  1. 使用具有TTL 0的AWS Cloudfront并将自定义标头从AWS Cloudfront传递到API网关
  2. 将AWS WAF与AWS Cloudfront结合使用

AWS API网关还处理一些基本级别的DDOS攻击。

请同时查看这些博客,以确保AWS API Gateway的安全

https://aws.amazon.com/blogs/compute/protecting-your-api-using-amazon-api-gateway-and-aws-waf-part-i/

https://aws.amazon.com/blogs/compute/protecting-your-api-using-amazon-api-gateway-and-aws-waf-part-2/

答案 1 :(得分:1)

您可能正在寻找节流限制配置或使用计划定义:

  

为防止您的API被太多的请求所淹没,   Amazon API Gateway使用令牌限制对您的API的请求   桶算法,令牌为请求计数。特别,   API网关对稳态速率和突发请求设置了限制   您帐户中所有API的提交。在令牌桶中   算法中,突发是最大存储桶大小。

     

当请求提交超过稳态请求速率且   突发限制,API网关使超出限制的请求失败,并且   向客户端返回429 Too Many Requests错误响应。在   捕获此类异常,客户端可以重新提交失败的请求   以限速方式,同时遵守API网关   节流极限。

     

作为API开发人员,您可以设置各个API阶段的限制   或改善您所有API中整体性能的方法   帐户。或者,您可以启用使用计划以限制客户端   将请求提交到指定的请求速率和配额内。这个   限制整个请求提交,以使它们不会发送   大大超过了帐户级别的限制。

参考文献:

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-usage-plans-with-console.html#api-gateway-usage-plan-create