【问题标题】:Prevent AWS Lambda flooding防止 AWS Lambda 泛滥
【发布时间】:2017-09-29 22:05:43
【问题描述】:

我正在考虑将我的服务从 VPS 转移到 AWS Lambda + DynamoDB 以将其用作 FaaS,因为它基本上是 2 个 API GET 调用,它们从数据库中获取信息并提供服务,以及这些 API 的正常使用电话真的很少(每周大约 50 次)

但这让我想知道...由于我无法设置每个月要服务多少次呼叫的限制,理论上一些攻击者可以通过每天调用数千次来淹没我的服务并让我的 AWS账单极其昂贵。每月设置一个限制也不是一个好主意,因为攻击者可能会在第一天淹没,我不会有更多的请求来服务。理想的做法是对每个客户端的请求率设置一个限制。

有人知道我该如何保护它吗?我看到 AWS 也提供了防火墙,但那是针对 CloudFront 的。有没有办法让它直接与 Lambda 一起工作?

【问题讨论】:

  • 没有理由不能将 CloudFront 放在 Lambda 函数的前面。 AWS 有一个关于这个的教程:aws.amazon.com/blogs/security/…
  • @ceejayoz 我知道,但我觉得这在我的堆栈中添加了一个新的不必要的层......抱歉,我的问题不太清楚,但关键字是“使用 Lambda 直接”。所以我猜答案是“不,如果您不将 CloudFront 与 WAF 一起使用,就无法保护您的应用程序?”
  • 如果您打算将 API Gateway 放在 lambda 之前,您可以使用它的节流和安全功能。

标签: amazon-web-services lambda


【解决方案1】:

您可以将 AWS CloudFront 放在 API Gateway 和 Lambda 前面,这样,流量将通过 CloudFront 提供给外部。

此外,通过配置 AWS WAF 的速率基础阻止,可以阻止攻击者的高频率访问。

但是,在 API Gateway 和 Lambda 前面配置 AWS CloudFront 时,您还需要限制对 API Gateway 的直接访问(因为 API Gateway 将默认公开访问)。这可以通过以下方式实现。

  • 为 API Gateway 启用 API 密钥并在源中的 AWS CloudFront 标头中使用 API 密钥。
  • 使用令牌标头并使用自定义授权方 Lambda 函数对其进行验证。

【讨论】:

    【解决方案2】:

    我想到了两个选项:

    1. 将 API Gateway 放在 Lambda 前面,以便 API 请求 必须经过身份验证。 API Gateway 还具有内置限制和其他有用的功能。

    2. 直接调用 Lambda,这将需要客户端 调用 Lambda 以获得相关的 IAM 凭证。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2016-10-13
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      相关资源
      最近更新 更多