← 中文资源

简体中文版本

环境漂移检测与修复工作流

定期检测声明态与实际态的配置漂移,把每处漂移分类为合法或腐坏,再对症修复。

阅读英文原文

目标

每个线上配置变更都是一个决策,唯一的问题它落在代码里还是落在某人的记忆里。定时检测加“分类—吸收—回滚”循环,让所有决策在数日内进代码:合法漂移(事故扩容)被吸收并保留历史,腐坏漂移(调试后忘关的端口)被机械回滚。

步骤要点

  1. 定时检测漂移:每日跑声明态与实况的 diff,捕获每处分歧及其资源与属性细节。
  2. 逐处分类:判定每处分歧是合法(需回植代码的紧急变更)还是腐坏(应回滚的未跟踪变更),记录决策人。
  3. 吸收合法变更:更新基础设施代码以匹配现实,通过评审保留变更历史。
  4. 机械回滚腐坏:对未记录漂移应用声明态恢复环境,回滚动作入档。
  5. 对漂移率闭环:按来源(紧急热修、手工调试、工具)统计漂移量,结构性攻击最大来源。

排错提示

调试后忘关的安全组端口是最经典的漂移事故,检测加回滚是机械防线,收紧生产访问才是治源;一刀切全部回滚会毁掉半夜合理修好的环境,先分类再动手;事故扩容的副本数第二天就消失是没被吸收,热修流程要加“吸收进代码”步骤。

适用边界

检测依赖 IaC 覆盖度,控制台手改的未纳管资源是盲区要逐步收编;回滚窗口内合法变更会短暂被回退,分类时效要快于回滚时效。

代码示例

daily drift report (2026-10-22):
  prod-cluster:
    sg-web: ingress rule 0.0.0.0/0:9200
      (declared: absent)           classification?
      -> ROT (debug session, Oct 03)  -> revert
    api-deploy: replicas 14
      (declared: 12)                classification?
      -> LEGITIMATE (incident INC-2966
         capacity bump)            -> absorb into tf

remediation:
  rot:      terraform apply (sg reverted)
  legit:    PR #5404 updates replicas, links INC-2966

drift by source (30d):
  manual debugging    61%   -> prod access review tightened
  emergency hotfix    29%   -> hotfix SOP gains "absorb" step
  tooling             10%