|
|
很多团队在事故复盘里都会提到两个高频词:误删、权限误配。看起来像低级错误,实际却是流程与习惯的系统性问题。下面这套日常操作规范,既不花哨,也不依赖昂贵工具,但落地后能显著降低“人祸”的概率。
首先,把“删改即发布”的冲动扼杀在流程上。任何破坏性操作(删除、覆盖、批量变更)都要有“影子模式”:先做一次干跑(dry run)或只读校验,输出受影响对象清单。数据库用 where 命中行数确认;对象存储先列出 key 前缀;CI/CD 用 plan 展示变更。只有当受影响范围与预期完全一致,才执行真实操作。这个动作听起来多余,但它把“错对象”“错范围”这类低级事故提前拦截掉。
第二,权限设计坚持最小必要与临时提升。把管理权限拆成读、写、审批、执行四个粒度,日常账号默认只读或读写受限;需要执行破坏性动作时,通过带过期时间的工单或临时令牌提权,操作完自动回落。更重要的是,把“谁能批、谁能执”分离,避免一个人既写单又落地。很多公司工具齐全,真正的问题是没用起来——提权不过夜、审批不过群是两条很实用的红线。
第三,建立可回滚的工作方式。凡是可能“误删”的地方,都要做到“可找回、可复原”。数据库强制开启 PITR(按时间点恢复),对象存储开启版本化与回收站,重要配置用 Git 管理并要求合并前评审,线上变更通过流水线而非手工命令。日常里还需要演练:季度至少一次恢复演习,随机抽样从备份到验证,确保不是“纸面可回滚”。
第四,把“确认”做成结构化动作,而不是喊一句“大家看下”。例如危险命令前置模板:目标范围、命令/变更、预期影响、干跑结果、回滚方案、执行与监督人。发布在固定频道,留有最短观察期(如 10 分钟)并收集到变更台账。结构化的好处是逼你把不确定性摊在台面上,也便于事后审计。
第五,规范命名与分层,减少手抖成本。生产与测试资源在命名、账户、颜色主题上做“强区分”,比如生产控制台用深色主题与明显徽标;数据库把只读副本后缀化为 -ro,避免连错;云账户按环境分账而不是打标签凑合。越是看起来“形式主义”的区分,越能在临界一秒提醒大脑:你在生产。
第六,默认启用“二次保险”。删除操作尽量走“软删”(状态位、移动到隔离区)而不是物理删除;K8s 配置加上保护注解,禁止级联删命名空间;IaC 模板设置资源保护标志;自动化脚本对关键参数加白名单校验。脚本里永远不要写带通配的大杀器,宁可多几行过滤。
第七,把统计与复盘常态化。记录每一次提权、删除、重大变更的元数据:谁、何时、何地、为何、结果如何;每月做一次轻量复盘,关注“险些出事”的 near-miss。很多改进点就在这些擦肩而过里,比如一条误导性的文档描述、一个默认全选的 UI。
最后,文化层面要允许“犹豫与叫停”。任何人发现不一致,都可以按下暂停键,不被嘲笑“拖进度”。相反,对“快点执行”“先上了再说”的激励要克制。防误删与防误配,本质是把不确定性从生产现场驱离,转移到可控、可验证的流程里。把这些小习惯固定成制度,你会发现事故工单明显变少,而大家的心态也更踏实。 |
|