3. 权限管理核心概念与模型
在食品生产环境中,权限管理并不是“给每个员工开一个账号”这么简单。它要回答三个基本问题:谁能对什么对象执行什么操作。这三个要素分别对应权限主体(Subject)、权限客体(Object)和操作类型(Operation)。只有把这三者定义清楚,后续的模型选择、规则配置和审计追溯才有稳定的基础。
一、权限三要素在食品生产中的具体化
权限主体是发起操作的一方,既可以是具体的人(如配料员、杀菌工序操作工、质检员、生产主管),也可以是系统身份(如MES采集服务账号、SCADA网关账号、批次追溯接口账号)。权限客体是被操作或访问的对象,在食品工厂中通常包括:配方与工艺参数(如杀菌温度、时间、pH控制点)、设备控制回路(如灌装机速度设定值)、批次记录、检验报告、电子签名记录、报警阈值、审计日志等。操作类型则要细化到动作粒度,例如“查看”“录入”“修改”“审核”“批准”“下发”“回滚”“导出”“删除”。
需要特别强调的是,食品生产中的“修改”往往不是普通的数据编辑。以杀菌工序为例,把杀菌温度设定值从121℃改为119℃,可能直接影响食品安全,因此这类操作应被定义为“关键参数变更”,需要独立的授权路径和电子签名,而不能与“查看报表”共用同一个权限。
二、RBAC:以角色为中心的批量授权
RBAC(基于角色的访问控制)的核心思路是“权限赋给角色,角色赋给用户”。它适合岗位职责相对稳定、人员流动有规律的生产场景。典型做法是先梳理岗位角色,例如:配料操作员、杀菌操作员、灌装操作员、在线质检员、班组长、工艺工程师、系统管理员。每个角色绑定一组权限,用户通过任职关系获得角色。
RBAC的优点是管理成本低、授权关系清晰、易于审计。当一名新员工入职时,只需分配对应角色,不必逐条勾选权限。但它也有明显局限:RBAC是静态的,难以表达“同一角色在不同班次、不同产线、不同批次状态下权限应不同”这类动态约束。例如班组长在正常生产时可以修改工艺参数,但在关键控制点(CCP)监控报警未解除时,是否还应允许修改?纯RBAC很难自然表达这种条件。
三、ABAC:以属性与条件为核心的精细控制
ABAC(基于属性的访问控制)把授权判断建立在属性之上,包括主体属性(岗位、班组、培训资质、是否持证)、客体属性(产线、产品类别、参数敏感级别、批次状态)、环境属性(时间、班次、设备状态、是否处于清洁验证期)以及操作属性。策略通常写成“当满足某组条件时允许/拒绝某操作”。
在食品生产中,ABAC特别适合处理以下情形:只有持有“杀菌工艺资质”且当前处于当班状态的人员,才能修改杀菌温度设定值;当批次处于“已放行”状态时,任何角色都不得再修改该批次的检验记录;夜班期间,关键参数变更必须由两名具备资质的人员共同确认。这些规则用RBAC表达会非常笨重,而用ABAC可以较自然地描述。
但ABAC的代价是策略复杂度和治理成本上升。属性来源是否可靠、策略之间是否冲突、策略变更是否经过评审,都会直接影响权限系统的可维护性。因此实际方案中常见的是RBAC与ABAC混合:用角色做粗粒度授权,用属性策略做关键操作的细粒度约束。
四、最小权限与职责分离
最小权限原则要求每个主体只拥有完成其当前任务所必需的最小权限,且权限应有时效。落到食品生产场景,就是:操作工不应拥有配方修改权限;质检员不应拥有修改生产参数权限;临时支援人员不应默认继承长期权限。实现上可通过“按需申请+限时授权+到期自动回收”来落地。
职责分离(SoD)则要求不相容的职责不能由同一人同时承担。食品生产中典型的不相容组合包括:参数修改与参数审核、检验录入与检验批准、批次放行与放行复核、用户授权与权限审计。职责分离既要在角色设计层面避免冲突,也要在运行时阻止同一人完成全流程。例如某员工提交了杀菌参数变更申请,就不能再由其本人批准该变更。
五、模型在食品生产场景中的适用性判断
选择模型时,不应追求“最先进”,而应看业务风险与治理能力是否匹配。可以用一个简单的判断思路:如果权限差异主要来自岗位,且岗位稳定、人员变动可预期,优先用RBAC打底;如果关键操作需要依赖资质、班次、批次状态、设备状态等条件,则在RBAC之上叠加ABAC策略;如果某类操作一旦被单人完整执行就会产生不可接受的食品安全或合规风险,则必须引入职责分离约束。
以“杀菌温度设定值修改”为例,一个可落地的组合是:RBAC层面只把“参数修改”权限授予“杀菌工艺工程师”角色;ABAC层面要求操作人持有有效的杀菌工艺培训资质、当前处于当班状态、目标批次尚未放行;职责分离层面要求修改提交后由另一名具备审核资质的人员批准,系统阻止提交人自审。这样既控制了授权范围,又保留了动态条件判断,还避免了单人闭环。
六、落地时的关键检查点
第一,权限客体要按敏感级别分层。配方、CCP参数、放行记录属于高敏感客体,查看与修改应分开授权;普通报表、历史趋势可作为低敏感客体。第二,操作类型要避免“万能修改”。把“修改”拆成“草稿编辑”“提交变更”“批准变更”“下发执行”,才能让职责分离真正生效。第三,角色设计要做冲突检测。例如“参数修改”与“参数审核”不应出现在同一角色的权限集合中;若历史原因已存在,应通过运行时规则阻断同一人完成两步。第四,最小权限要配合时效管理。临时授权应设置到期时间,到期自动回收,避免权限长期沉淀。第五,所有授权、变更、审批动作都要进入审计日志,日志本身应设为只读客体,防止被篡改。
总体来看,RBAC解决“岗位到权限”的批量管理问题,ABAC解决“条件到动作”的精细判断问题,最小权限控制授权范围,职责分离控制流程风险。四者不是互斥选项,而是食品生产权限体系中相互配合的四条约束线。把主体、客体、操作类型定义清楚,再按风险高低组合使用这些模型,才能让权限管理既不过度复杂,也不留下关键缺口。