【问题标题】:How do we address/what are good practices for "serverless" resource abuse?我们如何解决/什么是“无服务器”资源滥用的良好做法?
【发布时间】:2018-08-31 02:55:49
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    AWS API Gateway 还可以处理一些基本级别的 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/

    【讨论】:

      【解决方案2】:

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

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

      当请求提交超过稳态请求率并且 突发限制,API Gateway 无法处理超出限制的请求,并且 向客户端返回 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

      【讨论】:

      • 法比奥,这是每个客户的,对吧?换句话说,如果我使用 S3 托管我的网站......只要客户端请求是唯一的,就不应该有任何限制?
      • @CharlesSaag,请查看我发送的第一个参考,在“如何在 API 网关中应用节流限制设置”部分。节流限制适用于每个客户端(如您所说),但也有服务器端限制以防止您的 API/帐户被过多的请求所淹没。
      猜你喜欢
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多