3. 审批流程设计原则
审批流程设计,说白了就是给权限申请设关卡。关卡设少了,安全风险大;设多了,业务骂娘。我这些年踩过的坑,大多跟这三个原则没把握好有关。
咱们一个一个说。
3.1 最小权限原则
这个原则听起来简单——给用户刚刚好的权限,不多给一分。但实际落地时,我见过太多翻车案例。
核心定义:用户只获得完成工作所必需的最小权限集,且权限有效期应尽可能短。
我在项目中遇到过一件事:某运维同事申请服务器 root 权限,理由是“排查问题方便”。审批人没多想就批了。结果呢?他误操作删了一个关键配置文件,导致核心业务中断 40 分钟。
为什么会这样?因为审批时没有追问一句:“你到底需要哪个命令?能不能用 sudo 提权?”
最小权限原则落实到审批流程中,我建议这样操作:
- 权限粒度要细:别给“管理员”角色,给“日志查看员”、“备份操作员”这种具体角色
- 时间窗口要短:临时权限默认 24 小时过期,别设“永久有效”
- 资源范围要窄:只开放特定 IP、特定端口、特定目录
避坑指南:我曾经见过一个审批单,申请的是“数据库全部权限”,理由是“做数据迁移”。实际上迁移只需要 SELECT 和 INSERT 权限。审批人如果懂技术,就该追问。如果不懂,那就需要技术审核节点来把关。
这里有个权限粒度对比表,大家可以参考:
| 维度 | 粗粒度(不推荐) | 细粒度(推荐) |
|---|---|---|
| 系统权限 | root / Administrator | sudo 白名单 + 命令级控制 |
| 数据库权限 | DBA 角色 | SELECT / INSERT / UPDATE 按需分配 |
| 网络权限 | 全端口开放 | 特定 IP + 特定端口 + 协议限制 |
| 文件权限 | 目录完全控制 | 只读 / 追加 / 单文件操作 |
| 有效期 | 永久 | 按小时/天设定,到期自动回收 |
3.2 职责分离
职责分离,说白了就是“不能既当运动员又当裁判员”。这个原则在金融、医疗等强监管行业尤其重要。
我记得有一次做安全审计,发现某公司所有审批流程都是同一个人:申请是他、审批是他、执行也是他。这跟没审批有什么区别?
职责分离的核心要求是:
- 申请者 ≠ 审批者:自己申请自己批,等于没批
- 审批者 ≠ 执行者:批了的人不能自己去操作
- 关键操作需双人复核:比如删除数据、重启服务、修改防火墙策略
注意:职责分离不是越多越好。我见过一个公司,一个简单的权限申请要经过 5 个人审批。结果呢?业务等不起,直接找管理员走后门。审批流程变成了摆设。
我建议的职责分离模型是这样的:
申请者(提出需求)
↓
直属主管(确认业务必要性)
↓
安全管理员(审核权限合规性)
↓
系统管理员(执行权限授予)
↓
审计员(事后审计,不参与审批)
你看,这里每个角色各司其职。申请者不能跳过主管直接找管理员,管理员不能自己审批自己执行。
3.3 审批节点设置
审批节点怎么设?设几个?谁来做审批人?这些问题我几乎每次培训都会被问到。
我的经验是:审批节点不是越多越好,而是越精准越好。
常见的审批节点类型有:
| 节点类型 | 审批人 | 审核重点 | 适用场景 |
|---|---|---|---|
| 业务审批 | 直属主管 / 项目经理 | 需求是否真实、是否必要 | 所有权限申请 |
| 技术审批 | 安全工程师 / 系统管理员 | 权限是否合理、是否存在风险 | 高权限、敏感操作 |
| 合规审批 | 合规官 / 法务 | 是否符合法规、审计要求 | 数据访问、跨境传输 |
| 紧急审批 | 值班经理 / 安全负责人 | 是否真的紧急、事后补流程 | 故障处理、安全事件 |
节点设置有个黄金法则:风险越高,节点越多;风险越低,节点越少。
我举个例子:
- 低风险操作(如查看日志):只需业务审批 1 个节点
- 中风险操作(如修改配置):需要业务审批 + 技术审批 2 个节点
- 高风险操作(如删除数据):需要业务审批 + 技术审批 + 合规审批 3 个节点
个人经验:我曾经帮一家银行设计审批流程,他们一开始设了 7 个节点。我建议他们按风险等级分级:日常操作 2 个节点,敏感操作 3 个节点,紧急操作 1 个节点加事后补审。结果审批效率提升了 60%,安全事件反而下降了。
下面这张图展示了审批节点设置的核心逻辑:
嗯,这里还要注意一点:审批节点要有兜底机制。比如主管审批超时未处理,系统应该自动升级到上级主管,或者触发通知。我见过太多因为审批人出差、请假,导致权限申请卡住好几天的案例。
警告:别把所有审批节点都设成“必须人工审批”。对于低风险、高频次的权限申请(比如开发人员申请测试环境只读权限),完全可以走自动化审批。规则匹配通过就直接授权,只有规则匹配失败才走人工。这样能省下大量时间。
最后总结一下三个原则的关系:
- 最小权限解决的是“给多少”的问题
- 职责分离解决的是“谁来给”的问题
- 审批节点解决的是“怎么给”的问题
三者缺一不可。你想想看,如果只讲最小权限,不讲职责分离,那审批流程就是形同虚设。如果只讲职责分离,不讲审批节点设置,那流程就会变得臃肿低效。
我个人习惯在设计审批流程时,先画一张风险矩阵图,把不同操作的风险等级标出来,然后再根据风险等级决定节点数量和审批人。这样设计出来的流程,既安全又高效。