4. 用户角色与权限:RBAC模型、角色定义与权限粒度设计

在数字工地管理许可工作流中,不同岗位的人员需要访问不同的功能模块和数据范围。本章基于基于角色的访问控制(RBAC)模型,定义核心角色并设计权限粒度,确保工作流安全、合规、高效运行。

4.1 RBAC模型概述

RBAC(Role-Based Access Control)通过“用户→角色→权限”的映射关系,将权限授予角色而非直接授予用户。当用户岗位变动时,只需调整角色分配,无需逐个修改权限。

RBAC 核心模型:用户 → 角色 → 权限 用户(Users) 张三(安全员) 李四(施工员) 王五(审批人) 赵六(管理员) …… 分配 角色(Roles) 管理员 安全员 施工员 审批人 …… 授权 权限(Permissions) 查看许可申请 创建/编辑许可 审批/驳回许可 用户与角色管理 系统配置 核心原则:用户不直接拥有权限,权限通过角色间接授予,便于集中管理和审计。

4.2 角色定义与职责

根据数字工地管理许可工作流的实际业务场景,定义以下四种核心角色:

角色 职责描述 典型用户
管理员 系统配置、用户管理、角色分配、审计日志查看、全局参数设置 项目经理、IT 运维
安全员 现场安全巡检、许可申请审核、安全措施确认、违规记录与上报 专职安全员、HSE 工程师
施工员 创建许可申请、上传作业方案、查看本人申请进度、现场作业执行 班组长、作业负责人
审批人 审批/驳回许可申请、签署电子签名、查看待办与历史审批记录 部门主管、监理工程师
角色设计提示:实际项目中可根据组织架构增加“观察员”“审计员”等只读角色,但核心工作流角色建议控制在 4~6 个以内,避免权限碎片化。

4.3 权限粒度设计

权限粒度决定了角色能“做什么”以及“做到什么程度”。本系统采用三级粒度设计:

  • 功能权限:控制模块入口(如“许可管理”“人员管理”“报表中心”)。
  • 操作权限:控制具体操作按钮(如“创建”“编辑”“删除”“审批”“导出”)。
  • 数据权限:控制数据可见范围(如“仅本人”“本部门”“全部项目”)。
权限粒度三层模型 第一层:功能权限(模块级) 第二层:操作权限(按钮级) 第三层:数据权限(范围级)

4.4 角色-权限矩阵

以下矩阵展示了各角色在许可工作流中的具体权限分配(✓=有权限,—=无权限):

功能模块 操作 管理员 安全员 施工员 审批人
许可申请 创建 ✓ — ✓ —
编辑(本人) ✓ — ✓ —
删除(本人) ✓ — ✓ —
许可审批 查看待办 ✓ ✓ — ✓
审批/驳回 ✓ ✓ — ✓
安全巡检 创建巡检记录 ✓ ✓ — —
查看巡检报告 ✓ ✓ ✓ ✓
系统管理 用户管理 ✓ — — —
审计日志 ✓ — — —
权限设计要点:
  • 最小权限原则:每个角色只授予完成本职工作所需的最小权限集合。
  • 职责分离:施工员不能审批自己的申请,安全员与审批人不能由同一人兼任。
  • 数据隔离:施工员只能查看和编辑自己的申请;安全员可查看所有待办;管理员可查看全部数据。

4.5 权限配置示例(JSON)

以下为系统内部权限配置的简化示例,展示如何将权限与角色绑定:

{
  "roles": [
    {
      "roleId": "admin",
      "roleName": "管理员",
      "permissions": [
        {"module": "permit", "actions": ["create","edit","delete","view","approve","reject"], "scope": "all"},
        {"module": "user",   "actions": ["create","edit","delete","view"], "scope": "all"},
        {"module": "audit",  "actions": ["view"], "scope": "all"}
      ]
    },
    {
      "roleId": "safety_officer",
      "roleName": "安全员",
      "permissions": [
        {"module": "permit", "actions": ["view","approve","reject"], "scope": "all"},
        {"module": "inspection", "actions": ["create","view"], "scope": "all"}
      ]
    },
    {
      "roleId": "worker",
      "roleName": "施工员",
      "permissions": [
        {"module": "permit", "actions": ["create","edit","delete","view"], "scope": "self"},
        {"module": "inspection", "actions": ["view"], "scope": "self"}
      ]
    },
    {
      "roleId": "approver",
      "roleName": "审批人",
      "permissions": [
        {"module": "permit", "actions": ["view","approve","reject"], "scope": "all"}
      ]
    }
  ]
}
注意:生产环境中权限配置应存储在数据库或配置中心,避免硬编码。同时建议增加权限版本号,便于变更审计与回滚。

4.6 权限审计与动态调整

权限体系需要持续维护:

  • 定期审计:每月检查角色-权限映射是否与实际岗位职责一致。
  • 临时授权:支持管理员为特定用户临时增加权限(如代班审批),到期自动回收。
  • 变更记录:所有权限变更写入审计日志,保留至少 180 天。

通过以上 RBAC 模型与权限粒度设计,数字工地管理许可工作流能够实现精细化的访问控制,既保障作业效率,又满足安全合规要求。