Firestore 是否有内部机制来保护应用程序免受 DDOS 请求的过度收费?

use*_*594 14 firebase google-cloud-firestore

我想知道 Firestore 是否有内部机制来阻止类似于 DDOS 的请求以防止成本突然激增,或者是否有一个功能让所有者限制最大请求/费用。

例如,假设 Firestore 中有一个集合,只要用户登录我的应用程序就可以访问该集合。

如果攻击者创建了大约 100 个用户帐户,并编写了一个脚本,该脚本从不同的计算机(例如 100 个随机计算实例,每个用户 1 个)逐渐连续地访问集合中的一个条目,每个条目大约 10~50 tps,则读取总数每天的访问量可以超过 2.16 亿次请求。

(100 个用户 * 25 平均 TPS * 86400 秒/天)= 2.16 亿。

这相当于每天 129 美元左右,当前定价单位为 0.06 美元/10 万个请求。

如果攻击者一次使用list请求和访问 10 个项目而不是一个项目,则费用可能高达 1290 美元/天。如果其中一个集合允许用户一次查询多达 100 条记录,则这可能会变成 12900 美元/天。

我可能对此过于偏执,但我想避免面对一夜之间累积的 1 万美元意外账单,并在早上醒来时了解它。我知道这种攻击发生的可能性很低,但如果需要,任何攻击者似乎仍然有可能执行它。

由于这种风险,我不想将我的 Firestore 集合直接公开给客户端 sdks(例如将所有读/写安全规则设置为 false),而是想使用自定义端点和 Firebase Admin SDK 来控制速率限制...但这只是失去了可用客户端 sdks 的所有优势,以减少延迟和简化开发。

Firestore 是否有某种形式的机制来防止此类问题的发生?或者它是否允许类似于 AWS dynamoDB 中的最大读/写容量限制的速率限制请求?

Dou*_*son 3

Cloud Firestore 作为独立产品,默认情况下没有任何速率限制。总体而言,Google Cloud Platform 具有适用于您整个项目的可配置计费提醒。(所有 Firebase 项目也是 Google Cloud Platform 项目。)

如果您有无法解释的意外账单,请联系 Firebase 支持以帮助解决该问题。

  • 这将被视为一个重大缺陷。是否有任何类型的 UX 设计或内容模型可以防止 DDOS 式攻击?我想知道数据库本身中的某种用户计数器是否可以实现某种速率限制机制,但这需要对计数器和资源进行双重查询...... (16认同)
  • 因此,Firebase 按使用量收费,但不提供设置硬预算限制的选项,并且不提供针对 DDOS 或其他机器人攻击的保护。这对开发商来说所代表的风险绝对是巨大的! (13认同)
  • 是否可以在 Firestore 中设置规则来限制用户/IP/令牌等写入集合的速率?说一分钟不超过10次什么的? (2认同)