说实话,这大概是我今年看过最让人心跳加速的“恐怖故事”了。

不是鬼故事,比鬼故事更吓人——这是一张 54,000 欧元(约 42 万人民币) 的云端账单。

AI配图

故事的主角是一个只有简单功能的 Firebase 项目,原本安安静静地跑了一年多,仅仅用了点身份验证服务。结果,就在开发者决定给项目加点“AI 作料”的短短 13 个小时后,灾难降临了。

一夜之间,账单爆炸。

这不仅仅是钱的问题,更是关于云服务那些看不见的“坑”,以及我们在 AI 时代如履薄冰的安全感。

一切始于那个“无害”的浏览器密钥

事情是这样的。

这个开发团队想在现有的 Firebase 项目里加个小功能:根据文本提示生成网页片段。听起来很美好,对吧?于是他们启用了 Firebase AI Logic,接入了 Gemini API。

这本该是一次平平无奇的功能迭代。

但在云服务的世界里,有时候“平平无奇”就是最大的陷阱。他们使用了一个 Firebase 浏览器密钥,而且最致命的是——这个密钥没有任何 API 访问限制

这就好比你在家门口放了个保险箱,里面装满了现金,然后大方地把钥匙插在锁孔上,甚至还在门口挂了个牌子:“钥匙在此,欢迎自取”。

结果可想而知。

AI配图

流量在短时间内疯狂飙升,但并不是来自真实用户。这是一场典型的自动化攻击,恶意请求像洪水一样涌入。等开发者从睡梦中醒来,一切都已经太晚了。

80欧元的警报,成了最大的笑话

这里有个细节,真的让人很无语。

这团队其实并不傻,他们设置了 80 欧元的预算警报,甚至还配置了“费用异常警报”。

按照常理,花了 80 块钱就该有人敲门提醒了,对吧?

现实却给了他们一记响亮的耳光。

警报确实触发了,但延迟了整整几个小时。当那封邮件终于躺进收件箱时,账单上的数字已经不是 80 欧元,而是 28,000 欧元

等他们手忙脚乱地关掉 API、轮换密钥时,最终账单定格在了 54,000 欧元

为什么?因为费用上报本身就有延迟。

这就像是你的车已经开下了悬崖,仪表盘才慢悠悠地亮起红灯提示“请注意安全”。

评论区里有人一针见血地指出:所谓的预算警报,根本就是个心理安慰剂。 甚至有人讽刺说,这根本不是 Bug,这就是云厂商的 Feature(功能)。

官方回应:这是“有效使用”,请付款

如果你觉得这就够惨了,那 Google 的回应可能会让你更心寒。

团队联系了 Google Cloud 支持,提交了日志和分析。逻辑很清晰:流量明显异常,不是用户驱动的,这显然是被盗刷了。

但 Google 的回复冷冰冰且“合乎逻辑”:

因为这些请求确实源自你的项目,使用了你的密钥,所以被判定为 “有效使用”

退款申请?驳回。

这逻辑简直无懈可击:钥匙是你给别人的,别人开了门拿走了东西,怪谁?

有意思的是,这事儿在论坛发酵后,Google 的产品经理 Logan Kilpatrick 火速赶到了现场。

他在回复中列出了一堆“亡羊补牢”的措施:比如正在推出硬性消费上限、预付费模式、自动检测公开暴露的密钥并关闭等等。

甚至他还留了私人邮箱,表示“我们会认真对待,团队会深入调查”。

说实话,这个态度是好的,但对于那个面临 5.4 万欧元账单的团队来说,这些更新来得太迟了。这就像房子烧没了,消防员才跑来说:“我们刚给消防栓换了新水管。”

玩火自焚,还是陷阱太深?

老实讲,这事儿到底赖谁?

评论区吵翻了天。

有人觉得开发者太 naive,把未受限的浏览器密钥放在客户端,这本身就是“玩火”。正如一位网友所说:“如果你玩汽油,就不能抱怨车库被烧了。”

但更多的人把矛头指向了云厂商的设计逻辑。

为什么在 2024 年(甚至有人吐槽是 2026 年),设置一个“硬性消费上限”依然这么难?

我试着在 GCP 里找了一个小时,最后只能去 Reddit 上求助,发现唯一的办法是:设置预算警报 -> 触发 Pub/Sub 消息 -> 调用 Cloud Function -> 关闭计费。

听听这流程,这得是多硬核的极客才能搞定的“安全气囊”?普通开发者面对这种复杂的配置,简直就是在裸奔。

更讽刺的是,有人在 Google 的培训课上随手生成了一个 API 密钥,没分享给任何人,也没上传到任何地方,结果一个月后收到了 6909 美元 的账单。

这就不是“玩火”了,这简直是“人在家中坐,债从天上来”。

独立开发者的至暗时刻

个人觉得,这件事最让人后怕的,不是那个密钥泄露的错误——那个错误确实低级——而是整个生态对独立开发者和小团队的 不友好

大公司有专门的 FinOps 团队,有复杂的熔断机制。而小开发者呢?

我们把大量时间花在思考如何防止意外成本、如何检测和限制它们上。以前我只需要把东西扔到 VPS 上,现在为了用点 AI 服务,不得不把自己变成半个安全专家。

Google 提到的“预付费”模式,或许是唯一的解药——充多少用多少,用完即停。这才是普通用户需要的“安全锁”,而不是那些延迟几小时的所谓“警报”。

这次 5.4 万欧元的惨案,给所有人提了个醒:在云服务和 AI 的狂欢里,没有所谓的“默认安全”

如果你现在去检查你的 GCP 控制台,发现那个“硬性上限”的按钮还是灰的,那才是最恐怖的事情。

【锐评】:云厂商的“按量付费”本质是便利与风险的博弈,但连“紧急刹车”都不给用户留,这吃相未免太难看,5.4万欧元的学费,代价实在太高。

参考链接:
https://discuss.ai.google.dev/t/unexpected-54k-billing-spike-in-13-hours-firebase-browser-key-without-api-restrictions-used-for-gemini-requests/140262