我想知道 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 中的最大读/写容量限制的速率限制请求?