在2026年使用 IAM 用户是一种人生选择

发布: (2025年12月29日 GMT+8 18:43)
6 min read
原文: Dev.to

Source: Dev.to

传统 IAM 用户的隐藏成本

云安全事件并不是从泄露开始的——它们始于考古。

你打开 IAM 控制台,滚动查看,看到类似下面的内容:

legacy-service-migration
Access keys: active
never
unknown

没有人记得它为什么会存在,也没有人知道删除它会导致什么破坏,所以它一直保留着。这不是疏忽,而是一种营养级联效应。

级联是如何开始的

  1. “我们需要给脚本提供访问权限。”
  2. “CI 需要凭证。”
  3. “这是临时的,稍后再清理。”

创建了一个 IAM 用户,生成了访问密钥,系统继续运行。没有出错,也没有警报。

为什么 IAM 用户会超出其用途而长期存在

IAM 用户不会过期。它们会超出:

  • 脚本
  • CI 流水线
  • 团队
  • 架构决策

快进几年:脚本不见了,流水线变了,团队轮换了,但 IAM 用户仍然在。于是出现了:

  • 所有权不明确的凭证
  • “以防万一” 添加的权限
  • 对影响范围缺乏信心

这就是 身份卫生债务

当临时变为永久

随着时间推移,IAM 用户不再被视为临时的。你会听到:

  • “别动那个。”
  • “它可能在某处被使用。”
  • “我们以后再审计。”
  • “它已经存在很久了。”

安全性从声明式转向历史式:“我们不知道它为什么存在,但它一定是必须的。”

未知的身份比没有身份更糟,这种脆弱性解释了为何真实世界的事故会造成严重伤害。

实际案例:2025 年 SSRF 利用

在 2025 年,针对 CVE‑2025‑51591(Pandoc 文档转换器中的 SSRF 漏洞)的活跃利用尝试,锁定了 AWS 实例元数据服务(IMDS)。攻击者提交了精心构造的 HTML,旨在迫使服务器发起内部请求,特别是针对 IMDS 的以下地址:

  • http://169.254.169.254/latest/meta-data/iam/info
  • http://169.254.169.254/latest/meta-data/iam/security-credentials

为什么是 IMDS? 因为它可以返回 AWS 凭证。

Wiz 观察到攻击者在探测元数据路径。在许多环境中,由于 IMDSv2 的存在,攻击失败了——IMDSv2 需要会话令牌并阻止盲 SSRF。

令人不安的问题

如果这些工作负载使用的是静态 IAM 用户密钥而不是角色,会怎样?

这就是连锁反应的完整过程。

  • 凭证过期 → 会话失效 → 访问自然中断
  • 凭证持久 → 攻击者可稍后返回 → 轮换需手动进行(且常被遗忘)

SSRF 只是一个入口点;IAM 用户的卫生状况决定了冲击范围和持续时间。

常规 IAM 审查的发现

  • IAM 用户创建于 2016–2018
  • 拥有广泛权限(S3、EC2、IAM)的活跃访问密钥
  • 最近没有 CloudTrail 活动
  • 没有文档,没有负责人

删除它们感觉风险很大。真实的失败状态是:不作为比行动更安全,生态系统会腐烂。

现代 AWS 身份假设

  • 短期凭证
  • 明确所有权
  • 上下文访问
  • 自动过期

推荐控制

  • IAM 角色 代替用户
  • 用于联合访问的 OIDCSSO
  • IMDSv2 仅限使用
  • 明确的控制以限制 IAM 用户创建

IAM 用户应当:

  • 稀少
  • 有文档记录
  • 有所有者
  • 经过审计
  • 像放射性物质一样对待(即,不能使用默认设置)

Fixing the Cascade: A Step‑by‑Step Plan

  1. 列出所有 IAM 用户
  2. 识别所有者
  3. 审查最近使用情况(CloudTrail,最近登录)
  4. 删除未使用的密钥
  5. 在可能的情况下用角色替代用户
  6. 在可行的情况下阻止新 IAM 用户(策略防护)
  7. 将未知身份视为缺陷

是的,可能会出现故障。但出现故障总好过悄悄拥有你的云。

结论

使用 IAM 用户在 2026 年并不是因为无知;而是有意识地接受:

  • 永久凭证
  • 无界限的冲击半径
  • 身份考古
  • 脆弱的安全姿态

云故障不是突发的——它们是生态性的。发现 2017 年的 IAM 用户没有人理解,这不仅是技术债务;更是生态系统已经崩溃的警示信号。

Back to Blog

相关文章

阅读更多 »