目标
每个线上配置变更都是一个决策,唯一的问题它落在代码里还是落在某人的记忆里。定时检测加“分类—吸收—回滚”循环,让所有决策在数日内进代码:合法漂移(事故扩容)被吸收并保留历史,腐坏漂移(调试后忘关的端口)被机械回滚。
步骤要点
- 定时检测漂移:每日跑声明态与实况的 diff,捕获每处分歧及其资源与属性细节。
- 逐处分类:判定每处分歧是合法(需回植代码的紧急变更)还是腐坏(应回滚的未跟踪变更),记录决策人。
- 吸收合法变更:更新基础设施代码以匹配现实,通过评审保留变更历史。
- 机械回滚腐坏:对未记录漂移应用声明态恢复环境,回滚动作入档。
- 对漂移率闭环:按来源(紧急热修、手工调试、工具)统计漂移量,结构性攻击最大来源。
排错提示
调试后忘关的安全组端口是最经典的漂移事故,检测加回滚是机械防线,收紧生产访问才是治源;一刀切全部回滚会毁掉半夜合理修好的环境,先分类再动手;事故扩容的副本数第二天就消失是没被吸收,热修流程要加“吸收进代码”步骤。
适用边界
检测依赖 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%