AWS 账户触发安全限制?这是我的 56 小时解封全记录

13 阅读9分钟

一次 Access Key 泄露引发的生产事故,从收到 AWS 安全通知到账户完全恢复的完整过程


故事的开端:一条让人后背发凉的邮件

周六的一个下午,我收到了一封来自 AWS 的邮件——而那天是五一假期的第二天。

"We are reaching out to you because your AWS Account may have been inappropriately accessed by a third-party."

翻译过来就是:你的 AWS 账号可能被第三方入侵了。

随之而来的是账户被限制——无法启动 EC2 实例,无法使用部分 AWS 服务。而更让人焦虑的是,新加坡区域有一台生产环境的 EC2 正在运行海外业务,用户还在正常使用。

那一刻的心情,大概只有经历过的人才能理解。

本来计划好的五一假期安排,从收到这封邮件起全部作废。接下来的三天,我几乎住在了 AWS 控制台和工单页面里。 fengjin.png


第 1 阶段:收到通知,紧急处理(第 0-6 小时)

AWS 在通知中给出了明确的安全恢复步骤:

  1. 修改 Root 账户密码
  2. 为 Root 用户启用 MFA
  3. 检查 CloudTrail 日志,排查异常活动
  4. 清理所有未授权的 IAM 用户、角色、策略
  5. 回复工单确认完成

我第一时间登录控制台,按步骤操作:

  • 修改了 Root 密码
  • 启用了 MFA
  • 检查了 CloudTrail 日志,确实发现了异常的 API 调用
  • 清理了所有可疑的 IAM 资源

做完这一切,我在工单中回复:"我已按要求完成所有步骤,请帮我恢复我的账户功能。"

此时我以为很快就能解决,但事实证明这只是开始。


第 2 阶段:发现根因,请求加急(第 6-18 小时)

在排查过程中,我们的开发团队终于搞清楚了密钥泄露的根本原因——项目代码存在漏洞

我们确认已经修复了所有相关代码。随后我紧急请求 AWS 启动新加坡区域的 EC2 实例,因为这个实例已经停机超过 4 小时,海外业务全面瘫痪,用户投诉不断。

启动时的报错信息让人绝望:

This account is currently blocked and not recognized as a valid account.
Please contact AWS Support if you have questions.

此时我开始意识到:安全限制不是做完步骤就能自动解除的,背后还有一套审核流程。


第 3 阶段:安全审核,回答问题(第 18-24 小时)

周日早上,AWS 安全团队回复了,要求确认以下信息:

  1. 你从哪个国家/城市访问 AWS 账户?
  2. 是否有其他人有权访问你的账户?
  3. 如果有,他们从何处登录?
  4. 所有活跃的 IAM 用户和角色是否都已获得你的授权?

我如实回答:

  • 我会使用 VPN 访问,常用节点包括美国、新加坡、中国香港
  • 没有其他人访问我的账户
  • 所有 IAM 用户和角色都是我授权的

安全团队表示已转交审核,请我耐心等待。

期间我不断刷新工单页面,每一分钟都度日如年。


第 4 阶段:清理可疑资源(第 24-30 小时)

周一早上,安全团队发现了新的问题——一个 S3 存储桶可疑:

存储桶名称: logs-94591786-wmn5rp

要求确认该存储桶是否为我业务所需,如果不是则删除。

我检查后发现这个存储桶确实不是我们业务使用的(很有可能是攻击者创建的),立即删除并回复确认。

本以为这下可以解封了,然而还是太天真。


第 5 阶段:48 小时已过,忍无可忍(第 30-48 小时)

从收到通知到现在已经超过 48 小时,账户仍然处于限制状态。生产环境持续停机,海外业务瘫痪。

我再次在工单中表达了强烈诉求:

"我们已经完成所有安全措施,但账户仍然受限。如果问题不能尽快解决,我们将不得不考虑将生产服务迁移到阿里云和其他云服务商。"

这并不是虚张声势——每一分钟的停机都在实实在在地造成损失。

AWS 回复说正在与服务团队协作处理。

别人的五一假期在朋友圈晒旅游,我在工单里写小作文催进度。


第 6 阶段:细节遗漏,Chat 紧急沟通(第 48-52 小时)

周一傍晚,AWS 回复了一封让我意外的邮件:

"The team was unable to perform the required remediation steps. There are some actions needed from your side."

还需要我完成以下操作:

Step 1:删除未授权的 IAM 资源

  • IAM 用户 "Server":删除该角色或添加 MFA

Step 2:重置 Root 密码并更新 MFA

可是这些我早就做过了啊?仔细一看,是 IAM 用户 "Server" 的 MFA 没有被正确识别。

我没有再通过工单回复——这次我选择了 Chat 在线聊天

接线的 Melissa 非常专业:

  • 确认了我对 IAM 用户 "Server" 的 MFA 设置
  • 要求再次重置 Root 密码并更新 MFA 信息
  • 确认没问题后,立即更新了服务团队

这里要划重点:在紧急情况下,Chat 比工单回复高效得多,建议直接选这个渠道。


最终章:解封!(第 52-56 小时)

周一晚上 21:48,终于收到了那封让我松了一口气的邮件:

"We've verified that you've taken the required steps, and we've reinstated your AWS account."

账户终于解封了!所有限制都已解除。

从周六 14:06 收到通知,到周一 21:48 解封,整整 56 小时。 整个五一假期就这样泡汤了,我的假期余额全部充值到了 AWS 工单系统里。其中生产环境的中断时间也差不多是这个长度,海外业务直接瘫痪了一个完整的周末加周一。

jiefeng.png


完整时间线回顾

licheng.png

注:以下时间全部发生在五一假期期间。

周六 14:06 — 收到 AWS 安全通知,账户被限制
周日 01:08 — 完成初步安全步骤,请求恢复
周日 04:14 — 找到根因(代码漏洞),请求加急
周日 04:22 — EC2 已停机 4h+,紧急请求启动
周日 10:38 — 安全团队提问(访问地点/人员等)
周日 10:45 — 回答完毕,转交审核
周一 09:54 — 要求删除可疑 S3 存储桶
周一 11:06 — 删除完成,请求恢复并升级
周一 12:1148h+ 仍未解封,强烈抗议
周一 15:07 — AWS 确认要求服务团队解除限制
周一 18:02 — 新要求:处理 IAM Server + 重置密码
周一 18:07 — Chat 在线指导,完成操作
周一 21:48 — 账户解封!

经验总结与建议

1. 安全第一,防患于未然

这次事故的根因是代码漏洞导致 Access Key 泄露。事后我们做了以下改进:

  • 代码仓库中硬编码的密钥全部清理
  • 使用 AWS Secrets Manager 或类似服务管理密钥
  • 在 git 仓库中配置 git-secrets 等工具防止密钥提交
  • 定期轮换 Access Key

2. 理解 AWS 的解封流程

整个流程可以概括为:

收到通知 → 执行安全步骤 → 安全审核 → 补充操作 → 最终审核 → 解封

关键时间可能会超过 48 小时,如果涉及生产环境,要有充分的应急预案。

3. 紧急情况选对渠道

渠道适用场景响应速度
工单回复常规沟通、提供信息慢(数小时到十几小时)
Chat 在线紧急问题、需要指导快(即时)
电话极其紧急最快

如果是生产环境故障,直接选 Chat 或电话,不要等在工单下面回复。另外,沟通时强烈建议使用英文,因为AWS的安全团队成员大多数看不懂中文,所以如果用中文沟通,还需要经中文客服转交一手。

4. 提前配置好安全联系人

AWS 强烈建议配置备用安全联系人。这样当账户出现异常时,AWS 可以通过多个渠道联系到你,不会错过关键通知。

5. 设置预算告警和成本异常检测

这次事件还有一个附带发现——AWS 的 Cost Anomaly Detection 和预算告警可以在异常消费发生时第一时间通知你。如果当时我们有设置这些,可能在 AWS 发现之前自己就已经察觉到了异常。


写在最后

五一假期本是用来休息和陪伴家人的,结果变成了全天候守在电脑前跟 AWS 工单死磕。虽然过程煎熬,但也是一次宝贵的实战经验。

这次经历让我学到了几件事:

技术层面: 密钥泄露听起来很远,但一个代码漏洞就能让它变成现实。安全不是一个开关,而是一个持续的过程。

流程层面: AWS 的安全审核机制虽然让人心急,但从另一个角度看,它确实在保护你的账户。如果随随便便就能解封,那安全防线就形同虚设了。

心态层面: 56 小时的停机很痛苦,但与其抱怨流程漫长,不如把精力放在如何加速沟通、如何准备充分的材料上。

最后想说的是——一定要在生产环境出问题之前,把安全联系人、预算告警、密钥管理这些东西配置好。 因为这些事在风平浪静的时候总觉得"不急",等风暴来的时候,就已经晚了。


你有遇到过云服务商的安全限制经历吗?欢迎在评论区分享你的故事和踩过的坑。