一、设计原则
1. 最小权限原则
用户仅被授予完成工作所需的最小权限,避免权限滥用或误操作。例如:普通采购员无需访问财务结算模块。
2. 职责分离原则
关键操作需由不同角色协作完成,防止单一用户拥有过高权限。例如:订单审批与支付操作需分离。
3. 动态权限调整
权限需支持根据用户角色、部门、项目等动态分配,适应生鲜行业人员流动性大的特点。
4. 审计与追溯
所有权限变更和操作行为需记录日志,便于事后审计和问题追溯。
二、权限模型选择
1. RBAC(基于角色的访问控制)
- 核心思想:通过角色关联权限,用户通过分配角色获得权限。
- 适用场景:美菜生鲜中可定义“采购员”“仓库管理员”“财务审核员”等角色,每个角色绑定特定权限集。
- 扩展性:支持角色继承(如“高级采购员”继承“采购员”权限并追加特殊权限)。
2. ABAC(基于属性的访问控制)
- 核心思想:根据用户属性(如部门、职级)、资源属性(如数据敏感度)和环境属性(如时间、地点)动态决策权限。
- 适用场景:生鲜供应链中,可限制“跨区域数据访问”或“非工作时间操作”。
3. 混合模型
结合RBAC与ABAC,例如:基础权限通过角色分配,临时权限通过属性动态调整(如“临时授权某仓库管理员访问冷链数据”)。
三、用户权限细分策略
1. 按角色细分
- 管理层:查看全局报表、审批权限、系统配置。
- 采购部:创建采购单、查看供应商信息、修改订单状态(需审批)。
- 仓储部:入库/出库操作、库存盘点、库存预警设置。
- 物流部:配送路线规划、司机任务分配、运输状态更新。
- 财务部:结算审核、发票管理、成本分析。
- 供应商:查看订单、更新库存、对账(仅限合作商品)。
- 客户:下单、查看订单状态、评价(读权限为主)。
2. 按数据敏感度细分
- 公开数据:商品详情、促销活动(所有用户可访问)。
- 内部数据:库存数量、采购价格(仅限相关角色)。
- 机密数据:供应商合同、财务流水(需高层审批访问)。
- 临时数据:促销活动配置(活动结束后权限自动回收)。
3. 按操作类型细分
- 读权限:查看数据(如采购员查看库存)。
- 写权限:修改数据(如仓库管理员更新库存)。
- 执行权限:触发业务流(如财务审核通过后自动付款)。
- 管理权限:配置系统参数(如系统管理员设置角色权限)。
四、技术实现要点
1. 权限校验中间件
在API层或路由层集成权限校验逻辑,例如:
```python
def check_permission(user, resource, action):
if user.role not in resource.allowed_roles[action]:
raise PermissionDenied("无权操作")
```
2. 数据脱敏与行级权限
- 对敏感字段(如供应商联系方式)进行脱敏显示。
- 通过SQL过滤实现行级权限(如“仅显示用户所在仓库的数据”)。
3. 权限变更通知
权限调整后实时推送通知(如企业微信/邮件),确保用户知悉权限变化。
4. 权限回收机制
员工离职或转岗时,自动回收关联权限,避免权限残留。
五、注意事项
1. 避免权限膨胀
定期审计权限分配,清理长期未使用的权限(如“测试账号”的临时权限)。
2. 应急权限管理
设置“紧急突破权限”流程,允许在特殊情况下临时授权(如系统故障时由主管手动授权)。
3. 多终端适配
确保权限在Web端、APP端、POS机等终端同步生效,避免因终端差异导致权限漏洞。
4. 合规性要求
符合《数据安全法》《个人信息保护法》等法规,对用户隐私数据(如客户地址)进行严格保护。
六、案例参考
- 美菜供应商端:供应商仅能查看自己供应的商品库存和订单,无法访问其他供应商数据。
- 冷链物流监控:仅冷链部门角色可查看温度传感器数据,其他角色无权访问。
- 促销活动管理:市场部可配置促销规则,但需财务部审批后生效。
通过精细化权限设计,美菜生鲜系统可实现“安全与效率的平衡”,既防止数据泄露,又确保业务流畅运行。