Agent Skills
返回列表
🔒

Terraform 状态取证工具

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,把 @user_3c6cb52e/terraform-state-forensics-tool 安装到当前 AI 助手中。

技能介绍

要解决的具体问题

Terraform 的 state 文件长期被视为基础设施的事实来源,但这份文件在真实环境里经常和线上资源不一致:有人直接在控制台做过变更、有历史资源在代码删除后没有清理、模块之间的引用绕成环,等到 terraform plan 输出时,往往已经是一堆难以快速读懂的差异。排查这类问题目前主要靠人工 grep state JSON,或者在 CI 里临时拼脚本,缺少一套统一、可复用的取证流程。

技能如何工作

这个技能把状态取证拆成三个相对独立的分析维度:

  • 漂移检测:将当前 state 与最新的 plan 输出做对比,定位实际状态和代码声明状态之间的偏差,包括属性变化和外部修改的字段。
  • 孤儿资源识别:遍历 state 中登记的资源,结合 Terraform CLI 的 state 相关命令,找出代码里已不存在但仍残留在 state 中的资源。
  • 依赖循环检测:从 state 的依赖关系中查找环,提前暴露可能导致 plan 或 apply 失败的循环引用。

安全维度通过 tfsec 对配置和状态做扫描;成本维度调用 Infracost API 对相关资源做估算,帮助判断某个漂移或孤儿资源是否值得优先处理。

适用边界与注意点

  • 依赖本地可用的 Terraform CLI;tfsec 和 Infracost 分别需要可用的扫描环境与 API Key,缺失时对应维度会失败而不是降级。
  • Infracost 的估算基于公开定价,不含承诺折扣、代金券或私有合同价,结果只能作为方向性参考。
  • 未内置对 state 中敏感字段的脱敏处理,报告可能包含明文密钥或密码,输出需按敏感信息保管。
  • 在超大 state 上运行依赖检测可能耗时较长,建议先在子模块粒度上执行。
  • 技能只负责分析,不会自动修复漂移或删除孤儿资源,后续修复仍需回到 Terraform 流程中手动确认。

使用场景

  • 接手遗留环境,先跑一次 `state` 与 `plan` 对比,确认哪些属性被控制台直接改过
  • 代码里删除模块后,用 state 命令核对 `state` 中是否还残留未被管理的资源
  • `plan` 因依赖环中断时,从 `state` 的依赖关系里定位循环引用的具体模块
  • 评审前用 tfsec 做安全扫描,并通过 Infracost 评估漂移资源对月度费用的影响

适合人员

  • 负责多环境 Terraform 的 SRE,需要在变更窗口前快速定位漂移与潜在故障
  • 云基础设施审计人员,要用统一方式记录 `state` 中的残留资源和安全扫描结果
  • FinOps 工程师,需要把某个漂移或孤儿资源的成本影响量化后写进评审材料
  • 平台工程团队负责人,想用固定流程替代临时脚本,做状态取证和复盘