我想知道Firestore是否具有类似于DDOS的内部机制来阻止请求以防止意外的费用激增,或者是否具有所有者可以限制最大请求/收费的功能。
例如,假设在Firestore中有一个集合,只要用户登录我的应用程序就可以访问该集合。
如果攻击者创建了约100个用户帐户,并编写了一个脚本,该脚本逐渐并连续地从不同计算机上访问集合中的一个条目,每个条目大约有10〜50tps(例如100个随机计算实例,每个用户1个),每天的读取访问数量可以超过2.16亿个请求。
(100个用户* 25个平均TPS * 86400秒/天)= 2.16亿。
这相当于每天约$ 129美元,当前定价单位为$ 0.06 / 10万个请求。
如果攻击者使用list
请求并一次访问10个项目而不是单个项目,则费用可能高达每天$ 1290。如果其中一个馆藏允许用户一次查询多达100条记录,则每天的费用为$ 12900。
我对此可能有点偏执,但我想避免面对一夜积累的1万美元的惊喜账单,并在早上醒来时对其进行了解。我知道发生这种攻击的可能性很小,但是如果有需要,任何攻击者似乎仍然有可能执行该攻击。
由于这种风险,我永远不想将我的Firestore集合直接暴露给客户端SDK(例如,将所有读/写安全规则设置为false),而是希望使用定制端点和Firebase Admin SDK来控制速率限制...但这只是失去了可用的客户端SDK的所有优势,从而减少了延迟并简化了开发。
Firestore是否具有某种形式的机制来防止此类问题的发生?还是它允许速率限制请求类似于AWS dynamoDB中的最大读/写容量限制?
答案 0 :(得分:1)
Cloud Firestore作为独立产品,默认情况下没有任何速率限制。整体而言,Google Cloud Platform具有configurable billing alerts适用于您的整个项目。 (所有Firebase项目也是Google Cloud Platform项目。)
通过将项目放在Flame plan上,您可以将费用限制为每月最多$ 25。
如果您有无法解释的意外账单,请contact Firebase support寻求解决方案。