一、权限设计原则
1. 最小权限原则
每个角色仅授予完成工作所需的最小权限,避免权限滥用。例如:
- 采购员仅能查看/编辑自己负责的供应商数据,无法操作财务模块。
- 仓库管理员仅能操作库存出入库,无法修改商品定价。
2. 职责分离原则
关键业务流程需拆分权限,防止单点风险。例如:
- 订单创建与审批分离(采购员下单,主管审批)。
- 资金支付与对账分离(财务出纳付款,会计核对)。
3. 动态权限原则
根据业务场景动态调整权限,例如:
- 促销期间临时开放市场部对部分商品价格的修改权限。
- 审计期间冻结财务系统数据修改权限。
4. 数据隔离原则
按组织架构或业务线隔离数据,例如:
- 不同区域的仓库管理员仅能看到本区域库存数据。
- 加盟商与直营店的数据权限完全隔离。
二、权限细化维度
1. 角色维度
- 基础角色:
- 管理员(系统配置、权限分配)
- 采购员(供应商管理、订单创建)
- 仓储员(库存管理、出入库操作)
- 财务员(对账、结算、发票管理)
- 销售员(客户管理、订单跟踪)
- 数据分析师(报表查看、数据导出)
- 复合角色:
- 区域主管(管理本区域采购+仓储权限)
- 财务主管(审批权限+跨区域数据查看)
- 审计员(只读权限+操作日志追溯)
2. 资源维度
- 功能权限:
- 菜单级:能否看到“供应商管理”模块。
- 按钮级:能否点击“删除供应商”按钮。
- 字段级:能否查看商品成本价(财务可见,采购员不可见)。
- 数据权限:
- 范围:按区域、仓库、客户分组过滤数据。
- 层级:下级只能查看自己及下属的数据(如区域经理看本区域+下属城市数据)。
3. 时间维度
- 临时权限:
- 设定权限有效期(如“促销期价格修改权限”仅开放3天)。
- 审批后自动回收权限(如“临时数据导出权限”需申请审批)。
- 时段限制:
- 限制操作时间(如财务系统仅在工作日9:00-18:00可操作)。
三、技术实现方案
1. RBAC模型扩展
- 基础RBAC(角色-权限-用户)基础上,增加:
- 数据范围规则:通过SQL条件或API参数过滤数据。
- 权限继承:子角色自动继承父角色权限,支持覆盖。
- 权限互斥:定义冲突权限组(如“采购员”与“供应商审核员”不能同账号)。
2. 权限引擎设计
- 策略存储:使用JSON或YAML定义权限规则,例如:
```json
{
"role": "region_manager",
"permissions": [
{"resource": "inventory", "action": "view", "data_scope": "region_id=1"},
{"resource": "order", "action": "approve", "time_range": "09:00-18:00"}
]
}
```
- 动态评估:每次操作时实时计算权限,支持上下文(如当前用户所在区域)。
3. 审计与追溯
- 记录所有权限变更操作(谁、何时、修改了什么权限)。
- 操作日志关联业务数据(如“张三删除了供应商A”需记录供应商ID)。
四、场景化权限设计示例
场景1:采购流程权限控制
- 采购员:
- 可创建采购订单,但需选择预设的供应商列表。
- 无法修改商品成本价(字段级权限)。
- 采购主管:
- 可审批采购订单,并临时调整供应商优先级。
- 可查看所有采购员的历史订单(数据范围权限)。
场景2:仓储多租户隔离
- 直营仓管理员:
- 操作本仓库存,查看本仓报表。
- 无法操作其他仓数据(数据隔离)。
- 第三方仓管理员:
- 仅能操作授权的SKU库存(字段+数据范围权限)。
- 操作日志自动标记“第三方”标签(审计需求)。
场景3:财务敏感操作
- 出纳:
- 可提交付款申请,但需主管审批。
- 无法查看对公账户余额(字段级权限)。
- 财务总监:
- 可审批所有付款,并查看全公司资金流水。
- 可临时开放“紧急付款”通道(动态权限)。
五、实施建议
1. 权限梳理工具:使用Excel或专业工具(如OpenPolicyAgent)梳理角色-权限矩阵。
2. 灰度发布:先对部分用户开放新权限体系,逐步覆盖全量。
3. 监控与告警:实时监控异常权限操作(如财务员深夜修改价格)。
4. 定期审计:每季度检查权限分配是否符合当前组织架构。
通过以上细化设计,快驴生鲜系统可实现“安全与效率”的平衡,既防止内部风险,又支持业务快速迭代。