4. 用户角色与权限:RBAC模型、角色定义与权限粒度设计
在数字工地管理许可工作流中,不同岗位的人员需要访问不同的功能模块和数据范围。本章基于基于角色的访问控制(RBAC)模型,定义核心角色并设计权限粒度,确保工作流安全、合规、高效运行。
4.1 RBAC模型概述
RBAC(Role-Based Access Control)通过“用户→角色→权限”的映射关系,将权限授予角色而非直接授予用户。当用户岗位变动时,只需调整角色分配,无需逐个修改权限。
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 模型与权限粒度设计,数字工地管理许可工作流能够实现精细化的访问控制,既保障作业效率,又满足安全合规要求。