
“睡前设 10 美元预算预警,结果一觉醒来收到 Google Cloud 的天价欠费账单。”
近日,开发者 venturaxi 陷入了一场令人崩溃的 Google Cloud 天价账单风波,根源直指 Gemini API 密钥被恶意滥用。
不过与过往诸多遭遇类似困境却开发者不同,这一次,venturaxi 在多轮沟通与拉锯之后,最终获得了全额赔偿。但这场损失高达 25672.86 美元(约 17.5 万元)的经历,让他痛定思痛,也让他决定把整个过程公开出来。
在 Reddit、LinkedIn 等平台,他不仅复盘了事情经过,还系统梳理了平台默认设置中的隐患,并整理出一套可执行的防护清单。一方面是给开发者避坑,另一方面,也是对 Google 当前计费与安全机制的一次直接质疑。
老开发者也未能避开 Gemini API 被盗的“坑”
venturaxi 并非新手开发者。
他提到,自己已经在 Google AI Studio 中构建了超过 120 个应用程序,平日里对 Google 平台的技术更新也保持着高度关注:他会在 Google 新的更新日志发布时仔细研读,也会熬夜观看相关直播。
此外,他在项目开发时,会为每个项目设置独立的 API 密钥和计费账户。同时,在可用的地方都开启双重验证(2FA),还启用了云审计日志。
从他自己的标准来看,这些已经算是“该做的都做了”。
让他万万没有想到,自己的谨慎依然没能躲过一劫——一周前的一个夜晚,有人利用他几个月前从 AI Studio 发布的 Cloud Run 服务,攻击了其公开 URL。
更关键的是,服务容器中以明文环境变量形式存储的 API Key,被直接拿来调用 Gemini 接口——等于由 Google 自己的系统代为签署了攻击请求。值得一提的是,这个公开 URL 从未在任何地方分享或被索引,却依然被攻击者精准找到。
事情始末
据 venturaxi 描述,那天半夜,攻击者“攻破”了他的 Google Cloud API 密钥,并以每分钟约 1000 次的频率,疯狂调用他的 Gemini Pro Image 及其他相关 API,一夜之间发起了多达 60000 次图像生成请求。
直到第二天早上 9:30,原本设置了 10 美元预算提醒的 venturaxi 才收到谷歌的邮件提醒——“已达到您 10 美元预算的 150%”。而此时控制台显示的消费,已经达到 3010 美元,并且还在持续上涨。
第 35 分钟,venturaxi 尝试关闭计费账户时,却被谷歌拒绝,直到余额付清;
第 53 分钟:账单的金额已经高达 21,000 美元。
第 35 分钟,venturaxi 尝试关闭计费账户时,却被谷歌拒绝,直到余额付清;
第 53 分钟:账单的金额已经高达 21,000 美元。
在几乎绝望的情况下,venturaxi 又去 X 上发了一条帖子。其表示,尽管只有 4 个粉丝,却在 15 分钟内收到了 Google 的私信。
这件事本身,就已经足够讽刺。
一波三折的申诉之路,信任早已崩塌
事情并没有就此结束。
接着又问:“你能提供一张账户被封的通知截图吗?”
venturaxi 回答:“我没有被封号。”
这位经理又问,“你有没有收到任何关于疑似滥用的邮件?”
venturaxi 称,“哈,我倒是希望有。”
紧接着,venturaxi 如实向对方提供了事情发生的完整时间线,结果却在五分钟后收到了谷歌的违规通知,称他的项目因涉嫌资源劫持类滥用活动已被暂停,要求他提交申诉并解释触发原因。
后续沟通中,谷歌方面又发来消息,询问他是否使用商业级账户,并要求他提供组织名称以核实支持权限,这让 venturaxi 失去耐心,其直接回怼道:“在你们暂停了我的账户后,我的信任已经没了。我不想让你们费心去研究把我分到哪个类别或者给我升级。我想要的是你们给我一些答案,并修复这个我无端陷入的烂摊子。”
这条消息发出后,LinkedIn 上的沟通便再无回应。
好在后续,处理此时的谷歌经理确认了事件确实是核实后的滥用活动,并表示正在处理全额费用调整,事情终于有了转机。
默认设置形同虚设
在后续复盘时,venturaxi 直言:“这不是一个‘你应该开启 2FA’的故事。我设置的一切都是正确的。失败的是谷歌默认设置。一共有九处。”
他一共总结出了 9 个关键问题。这些设置要么是默认关闭的,要么是默认放到最宽,而且几乎没有主动提示机制:
API 密钥限制:关闭。默认是不受限制的。任何 IP、任何来源、任何服务。你必须手动为每个密钥开启限制。
每月支出上限:空白。默认没有上限。2026 年 3 月之前不存在此功能,所以该日期之前创建的任何密钥仍然没有任何设置,除非你之后动过它。
Gemini API 日志:关闭。日志记录在 AI Studio 中是一个单独的开关,但默认不开启。还需要一个活动的计费账户, 所以如果你在事件中禁用了计费,你会立即失去日志访问权限。
API 密钥限制:关闭。默认是不受限制的。任何 IP、任何来源、任何服务。你必须手动为每个密钥开启限制。
每月支出上限:空白。默认没有上限。2026 年 3 月之前不存在此功能,所以该日期之前创建的任何密钥仍然没有任何设置,除非你之后动过它。
Gemini API 日志:关闭。日志记录在 AI Studio 中是一个单独的开关,但默认不开启。还需要一个活动的计费账户, 所以如果你在事件中禁用了计费,你会立即失去日志访问权限。
后付费计费:默认设置。后付费意味着在账单生成之前,你向计费账户提供了无限的信用敞口。预付费在 2026 年 3 月才成为一个选项。
AI Studio 发布应用的 Cloud Run 身份验证:禁用。“发布”按钮部署你的应用时,调用者 IAM 是禁用的,你的 API 密钥作为明文环境变量存储。默认公开。
“你的 AI 支出”诊断:未激活。谷歌拥有的最好的单屏归因工具是一个预览功能,你必须手动激活。没有人会把它推给你。
预算异常检测:不智能。你自己定义阈值。它不会代表你自动检测异常消费模式。
Gemini 错误响应:包含你的 API 密钥。当请求失败或账户被暂停时,Gemini 的默认错误消息会返回 API 密钥值。如果你的应用暴露原始错误,你正在通过自己的日志泄露密钥。
后付费计费:默认设置。后付费意味着在账单生成之前,你向计费账户提供了无限的信用敞口。预付费在 2026 年 3 月才成为一个选项。
AI Studio 发布应用的 Cloud Run 身份验证:禁用。“发布”按钮部署你的应用时,调用者 IAM 是禁用的,你的 API 密钥作为明文环境变量存储。默认公开。
“你的 AI 支出”诊断:未激活。谷歌拥有的最好的单屏归因工具是一个预览功能,你必须手动激活。没有人会把它推给你。
预算异常检测:不智能。你自己定义阈值。它不会代表你自动检测异常消费模式。
Gemini 错误响应:包含你的 API 密钥。当请求失败或账户被暂停时,Gemini 的默认错误消息会返回 API 密钥值。如果你的应用暴露原始错误,你正在通过自己的日志泄露密钥。
venturaxi 表示,这些设置,对于现在正在使用 AI Studio、Vertex、Gemini 的开发者来说,大多数依然处于失败状态。
他感慨,这是他希望在一切发生之前就能运行一遍的清单,而所有操作路径,他都在本周通过实时账户进行了验证,确保每一步都真实可行。
澳新银行的迷惑操作,雪上加霜
在这场天价账单风波中,venturaxi 所使用的澳新银行没帮上忙,也让他十分费解。
当晚,谷歌对 venturaxi 的银行卡发起了密集的扣费请求,结果有的扣费成功,有的扣费失败,整体时间线如下:
晚上 10:00:批准 100 美元
晚上 10:35:批准 200 美元
晚上 10:51:批准 500 美元
晚上 11:02:批准 1,000 美元
晚上 11:33:拒绝 2,000 美元
凌晨 12:24:拒绝 4,000 美元
凌晨 1:26:拒绝 6,000 美元
凌晨 2:32:批准 8,000(拦截了三笔较小的,然后放行了最大的一笔)
最后这笔 8000 美元的付款,直接清空了 venturaxi 账户里的全部余额,导致随后又有一笔 10000 美元的扣费因资金不足被拒绝。
最新进展
经过持续的沟通,截至目前,venturaxi 已经确认,25672.86 美元的费用已被全部免除,而此前 Google 分 5 次逐步尝试扣除的 9800 美元,也已经退回到账。
不过,venturaxi 仍然不得不注销了自己的信用卡,期间也因为这次事件导致多笔账单被直接扣款失败。
他表示,真正关键的问题,依然没有得到任何解释,比如:
Google 的账单默认阈值可以一路升到 10,000 美元,而自己从未手动设置过这个上限。
预算提醒不会停止扣费,只会发一封邮件。如果“使用量暴涨 411,000%”都不算异常提醒,那什么才算?
API Key 滥用没有任何自动风控机制。从一个从未接近过该使用量的账户,突然出现每分钟 1,000 次请求,系统没有任何标记,也没有暂停服务。
ANZ 银行在同一笔商户、同一会话中先后拦截了 2000、4000、6000 美元的交易,但最后却放行了 8000 美元。这到底是什么风控逻辑?反复尝试就放行最大一笔吗?
在调查期间不会自动冻结账户。等到自己终于被告知如何停止扣费时,他再问“能不能追踪来源”,却已经无法做到——因为按照他们的指示操作后,相关能力已经被关闭。
Google 的账单默认阈值可以一路升到 10,000 美元,而自己从未手动设置过这个上限。
预算提醒不会停止扣费,只会发一封邮件。如果“使用量暴涨 411,000%”都不算异常提醒,那什么才算?
API Key 滥用没有任何自动风控机制。从一个从未接近过该使用量的账户,突然出现每分钟 1,000 次请求,系统没有任何标记,也没有暂停服务。
ANZ 银行在同一笔商户、同一会话中先后拦截了 2000、4000、6000 美元的交易,但最后却放行了 8000 美元。这到底是什么风控逻辑?反复尝试就放行最大一笔吗?
在调查期间不会自动冻结账户。等到自己终于被告知如何停止扣费时,他再问“能不能追踪来源”,却已经无法做到——因为按照他们的指示操作后,相关能力已经被关闭。
启示
对于以上问题,venturaxi 并没有答案。
但是基于这次经历,他总结了一套至少对自己而言行之有效的应急方法,也借此分享给更多有同样遭遇的开发者:
首先,立即撤销 API 密钥,将每月支出上限设为 0,最后再禁用计费——切记,在提取 IAM 和日志浏览器的相关证据之前,绝对不要禁用计费,否则会立即失去取证权限;
其次,第一时间给银行打电话,要求立即对银行卡进行欺诈冻结,并撤销所有待处理的授权,不要依赖银行应用的推送通知,它们可能会静默失败,要手动检查账户动态;
然后,在社交平台公开发帖,哪怕粉丝很少,也可能比官方支持渠道更快获得升级处理;
首先,立即撤销 API 密钥,将每月支出上限设为 0,最后再禁用计费——切记,在提取 IAM 和日志浏览器的相关证据之前,绝对不要禁用计费,否则会立即失去取证权限;
其次,第一时间给银行打电话,要求立即对银行卡进行欺诈冻结,并撤销所有待处理的授权,不要依赖银行应用的推送通知,它们可能会静默失败,要手动检查账户动态;
然后,在社交平台公开发帖,哪怕粉丝很少,也可能比官方支持渠道更快获得升级处理;
至此,venturaxi 的经历,给所有使用谷歌相关开发平台的开发者敲响了警钟。venturaxi 表示,他之所以公开自己的经历,就是希望能有更多开发者看到这些教训,避免再有人像他一样,因为谷歌的默认设置漏洞和自身的疏忽,遭受如此巨大的损失。他甚至半开玩笑地说:“Thomas Kurian(谷歌云 CEO)雇我吧,我会无偿帮你设置一些真正的规则。”
参考:
https://old.reddit.com/r/googlecloud/comments/1ssagtw/went_to_bed_with_a_10_budget_alert_woke_up_to/
天盈策略提示:文章来自网络,不代表本站观点。