云上被薅走一台GPU集群,常常只因为一行写死的AccessKey

举报
yd_246753595 发表于 2026/10/31 16:50:29 2026/10/31
【摘要】 云上事故的起点很少是精巧的 0day,更多时候是一段被打进前端、或留在 Git 历史里的长期密钥。把密钥管理当成工程规范问题,比当成攻防对抗问题更接近解法。

某家做图像处理的公司,凌晨收到欠费短信:一天之内多出十几台 GPU 实例,外网下行流量十几 TB。日志里翻不到任何漏洞利用痕迹——攻击者用的是公司自己的 AccessKey,权限齐全,调用完全合法。复盘只花了一小时:开发为了联调方便,把 AK/SK 写进了前端配置,随一个对公网开放的小程序页面上线。

真正的问题不是"开发不规范",而是密钥一旦离开可信环境,它就不再是身份,而是一张可以被无限复制的通行证。

一、AK/SK 为什么比账号密码更难防

账号密码至少有交互环节:登录触发风控,异地登录会发短信。AccessKey 恰恰相反,它就是给脚本用的——调用 API 不需要人参与,也没有二次验证的位置。

一旦泄露,攻击者拿到的是与持有者完全等同的权限:创建算力、读取对象存储、调用按量计费的模型服务。整条链路上不会出现"疑似异常登录",因为在平台看来,这些请求来自合法密钥、合法签名。

更麻烦的是复制成本为零。一个字符串贴进聊天工具、写进一次 commit、打进一层镜像,几分钟内就可能进入扫描器的视野。公开代码托管平台的密钥扫描每年拦截的泄露凭据以百万计,相当一部分在被人发现前就已被用过。

二、三个最常见的泄露位置

前端是重灾区。 为了让浏览器或小程序直接把文件传到对象存储,不少方案把 AK 写进前端代码——这些代码对用户完全可见,等同于把钥匙贴在门上。正确做法是服务端签发临时凭证,限定有效期、桶和路径前缀、操作类型,前端只拿这份短票据。

提交历史比工作区更危险。 密钥从文件里删掉不等于它没出现过,Git 会保留每一次改动,攻击者扫全部 commit 的命中率远高于扫当前分支。这也是"删掉再提交一次"不算修复的原因,必须走密钥轮换。

构建产物是第三个死角。 把 .env 打进镜像、在 CI 里把密钥打印进日志、配置模板的占位符被换成真实值后再上传,都很常见,且往往在镜像仓库里长期存留,比源码活得更久。

三、把身份做短,把权限做窄

身份层:能用委托或角色就不发长期 AK。实例、容器、函数都可以绑定角色,由运行环境自动获取临时凭证,代码里不出现任何密钥字符串。

权限层:给每个用途单独的身份,只授予真正需要的动作和范围。只读日志的脚本不该能创建实例,只写单个前缀的上传服务不该能列出全部对象——权限越宽,横向移动越容易。

审计层:盯几类高信号行为——凌晨创建 GPU 实例、跨区域批量下载对象、密钥首次从陌生 IP 使用、短时间内大量创建类调用。账单异常通常滞后数小时,审计日志是实时的,这个时间差就是损失差额。云厂商普遍提供密钥泄露检测和轮换策略,打开的成本几乎为零。

四、出口与流量也要单独设计

即便密钥没泄露,数据从哪个口出去也值得规划。把存储和计算放在同一区域、走内网 endpoint,可以避开"读取不收费、下行收费"的账单陷阱;给桶配访问日志和防盗链,能在批量拉取时留下证据。很多事件的损失被放大,不是因为数据被读走,而是攻击者顺手把流量费和算力费刷了上去。

结语

云上事故的多数成因,不是攻防对抗的失败,而是默认值没改、临时方案留了下来。检查清单不必很长:代码里还有没有密钥字符串、身份是不是长期有效、权限是不是过宽、审计有没有人真的在看。这四条里任何一条失守,都可能让第二天的账单替安全团队做汇报。

标签:云安全、密钥管理、AccessKey、最小权限、云上审计

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。