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%,安全事件反而下降了。

下面这张图展示了审批节点设置的核心逻辑:

审批节点设置核心逻辑 低风险操作 中风险操作 高风险操作 业务审批 执行授权 业务审批 技术审批 执行授权 业务审批 技术审批 合规审批 执行授权 原则:风险越高,审批节点越多;紧急场景可走简化通道,但需事后补审

嗯,这里还要注意一点:审批节点要有兜底机制。比如主管审批超时未处理,系统应该自动升级到上级主管,或者触发通知。我见过太多因为审批人出差、请假,导致权限申请卡住好几天的案例。

警告:别把所有审批节点都设成“必须人工审批”。对于低风险、高频次的权限申请(比如开发人员申请测试环境只读权限),完全可以走自动化审批。规则匹配通过就直接授权,只有规则匹配失败才走人工。这样能省下大量时间。

最后总结一下三个原则的关系:

  • 最小权限解决的是“给多少”的问题
  • 职责分离解决的是“谁来给”的问题
  • 审批节点解决的是“怎么给”的问题

三者缺一不可。你想想看,如果只讲最小权限,不讲职责分离,那审批流程就是形同虚设。如果只讲职责分离,不讲审批节点设置,那流程就会变得臃肿低效。

我个人习惯在设计审批流程时,先画一张风险矩阵图,把不同操作的风险等级标出来,然后再根据风险等级决定节点数量和审批人。这样设计出来的流程,既安全又高效。