首页/系统与基础设施/自动化运维速查/配置漂移的检测与收敛
配置管理与编排60 条

配置漂移的检测与收敛

配置漂移的检测是把实际配置与期望值(或上一次存档)比对,找出「和应该有的不一样」的项;收敛是按既定策略把实际拉回期望。实操顺序通常是先只报不改,摸清真实漂移来源与频率,再对低风险项开启自动纠正,对高危项保留人工确认。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​​‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

检测与收敛做什么

检测有两条口径:一是与期望值比(基线、模板渲染结果、配置管理工具的期望状态),回答「是否符合要求」;二是与上次快照比,回答「最近被改了什么」。前者适合合规与统一性检查,后者适合排障与变化追溯。收敛是检测之后动作的总称,可以是自动纠正、告警后人工处理,或只记录不处理。选哪种收敛策略取决于该项的风险与业务耦合度:高危项自动覆盖可能引发新故障,低风险项人工处理则必然堆积成告警噪音。

基本信息

适用场景合规巡检、变更后验证、故障时追溯最近改动、批量收敛整组主机
检测方式内容与指纹比对、配置管理工具的空跑模式、设备配置差异比对
追溯手段变更留档、版本库比对、系统审计子系统记录文件写入者
关键约束自动收敛会覆盖手工改动,必须先明确边界与豁免机制

典型使用场景

  • 合规巡检:周期比对基线与实际,输出不符合项清单
  • 故障排查:先看关键配置文件最近有没有被改,再看改动内容
  • 变更后验证:变更窗口结束后立即比对,确认只改了该改的项
  • 大促与重要节点前:提前收敛一批长期未处理的偏离项
  • 设备侧巡检:网络与安全设备的运行配置与期望策略比对
  • 批量收敛:对同一角色的多台主机统一下发期望配置

两条检测口径的落地

两条检测口径的落地
# 口径一:与上次快照比,回答最近改了什么
find /etc -type f -name '*.conf' -exec sha256sum {} + | sort > /var/lib/baseline/etc-$(date +%F).sum
sha256sum -c /var/lib/baseline/etc-2026-10-01.sum 2>/dev/null | grep -v ': OK$'   # 只列变化项
diff -u /var/lib/baseline/sshd_config /etc/ssh/sshd_config | head -40           # 看具体改了哪几行

# 口径二:与期望值比,回答是否符合要求
# ansible-playbook site.yml --check --diff     # 空跑,只报告将发生的变更

# 追溯「谁改的」:对关键配置目录设审计监控,再用审计工具查询
# auditctl -w /etc/ssh/sshd_config -p wa -k cfg_watch
# ausearch -k cfg_watch -ts recent             # 输出写入者与时间

收敛策略与取舍

策略适用项优点风险
自动纠正低风险、纯声明式项收敛彻底,人工成本低覆盖紧急热修,可能打断在手的排障
告警后人工高危或与业务强耦合项可控,保留人工判断响应不及时则长期不符合
只记录不处理审计与报表用途零干扰,数据完整问题只被记录,不会消失
豁免登记确需长期偏离的项避免反复覆盖豁免不清会演变成事实标准
刚上检测时建议先只报不改跑一到两个周期:记录漂移集中在哪些文件、由谁改、是否属于正常运维动作。摸清来源后再决定哪些项可以自动收敛,能显著降低误覆盖带来的故障。
自动收敛与周期性调和任务叠加时,可能与正在进行的紧急处置冲突:运维刚手工关闭某项以止血,周期任务几分钟后又把它打开。高风险服务应设置维护标记或临时豁免,并在收敛后复核业务状态。

易错点

  • 只报不改且无人认领:告警逐日堆积,最后被整体静音,等于没有检测
  • 检测口径用「与上次快照不同」却当作漂移结论:正常变更也被算成偏离,报告失去参考价值
  • 检测粒度太粗(整个文件一个指纹):同目录里无关的注释改动也触发告警,掩盖真实风险项
  • 开着自动收敛又允许手工热修,却不做豁免登记:人改一次被覆盖一次,排障被迫与工具赛跑
  • 收敛后不回读校验:以为下发成功即生效,实际服务未重载或配置被后续覆盖

数据来源与参考

  • Ansible 官方文档:--check 与 --diff 空跑模式
  • Linux audit(auditd)手册:文件监控与审计查询
  • NIST SP 800-53:配置变更控制与配置监控(CM-3、CM-6)

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/configuration-drift-detect-remediate.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​​‌‌​​‌‌​‌​​‌​‌‌​​‌‌‌​‌‌‌​‌​‌​‌‌‌​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​​‌​​​‌‌‌​​‌​​‌‌​‌​​‌​‌‌​​‌‌​​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌​​​‌‌​​‌​‌​‌‌‌​‌​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​‌‌​‌​‌‌​​‌​‌​‌‌​​‌​​​‌‌​‌​​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​‌​‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​