5656AI开发指南返回服务首页

企业管理系统权限怎么设计?先拆四类控制规则

企业管理系统权限设计应分成四层:功能权限决定能做什么,数据范围决定能看和操作哪些记录,审批授权决定谁能在什么条件下作出业务决定,审计留痕记录谁在何时对什么对象执行了什么结果。先用真实岗位和业务动作建立权限矩阵,再补充临时授权、离岗回收、默认拒绝和跨角色冲突,最后用正向、越权与变更场景共同验收。

01

先从业务动作而不是职位名称开始

权限梳理的第一步不是创建“管理员、经理、员工”三个笼统角色,而是选取真实流程,列出每个岗位需要执行的业务动作及其对象。例如同样处理客户资料,查看、创建、修改、转交、导出和删除代表不同风险,不能因为都在一个页面里就合并成一项权限。

NIST 对基于角色的访问控制说明,权限通过角色而不是逐个用户身份来组织,角色通常对应组织中的工作职能。落到项目中,可以先整理稳定岗位职责,再把人员分配给角色;频繁变化的个人需求不要反过来制造大量只服务一个人的角色,否则后续调岗和审查会迅速失控。

  • 选三到五条高频业务流程作为梳理入口
  • 列出流程中每个岗位实际执行的动作
  • 标明动作针对的单据、客户、文件或配置
  • 区分本人操作、协作查看和最终决策
  • 确认岗位变化时角色是否仍然成立
02

第一层建立功能权限矩阵

功能层回答“能做什么”。建议用“业务对象×动作”建立矩阵,行可以是客户、订单、合同、报表和系统配置,列可以是查看、新建、编辑、提交、撤回、删除、导入、导出和配置。每个角色只勾选完成职责所需的动作,不使用一个含义不清的“完全访问”覆盖所有能力。

界面隐藏只能改善使用体验,不能代替服务端授权。OWASP 的授权指南建议默认拒绝,并在每次请求上验证权限。因此验收时既要点击页面按钮,也要检查直接请求接口、修改记录编号或调用导出地址时是否仍会重新判断;没有明确授予的动作应返回拒绝结果。

  • 查看和编辑分开定义
  • 删除与作废按业务含义分别处理
  • 导入、导出和批量操作单独列出
  • 配置类动作不随普通业务权限自动获得
  • 页面入口与服务端接口使用同一授权规则
  • 未匹配任何规则时默认拒绝
03

第二层单独定义数据范围

数据层回答“能处理哪些记录”。拥有客户查看功能的人,可能只能看本人负责客户、本部门客户、指定区域客户或全公司客户。数据范围必须与功能动作组合判断;不能因为用户能打开客户列表,就默认可以读取所有客户,也不能只过滤列表而遗漏详情、搜索、统计和导出接口。

设计数据范围时要写清组织关系从哪里来、何时更新以及历史记录如何处理。例如员工调岗后,旧部门记录是立即不可见、保留只读还是通过交接转移,应由业务负责人确定。若规则依赖客户负责人、部门、区域或项目成员等属性,还要规定空值、多人负责和跨部门协作时的处理方式。

  • 本人创建与本人负责是否代表同一范围
  • 部门范围是否包含下级部门
  • 跨部门项目按成员还是组织归属授权
  • 详情、搜索、统计和导出的范围保持一致
  • 调岗、离职和交接后数据范围如何变化
  • 范围字段为空或异常时是否安全拒绝
04

第三层把审批权与操作权分离

审批授权不是给某个角色增加一个“审批按钮”就结束。需要明确什么单据、什么条件、什么金额或业务级别进入哪个审批路径,审批人如何确定,能否转交、加签、退回或撤回,以及审批人缺席时怎样临时代理。条件阈值和人员来源都应形成可测试规则。

还要识别不应由同一人同时完成的关键动作。例如申请、最终审批、付款执行和结果核对是否需要分离,要结合实际风险决定,而不是机械套用层级。若小团队确实需要一人承担多个环节,应把例外原因、适用范围、有效期和补充复核措施写清,避免长期使用共享账号绕开规则。

  • 审批条件使用可计算字段而不是口头判断
  • 审批人来源能够在人员变化后自动更新
  • 申请、审批、执行和复核的职责冲突已检查
  • 代理与转交有明确期限和可追踪记录
  • 共享账号不能作为缺岗时的替代方案
05

第四层规定授权生命周期

权限不是上线时配置一次就不再变化。入职、转岗、兼岗、项目加入、临时支援和离职都会改变授权。每一种变化都应定义申请人、批准人、生效时间、失效时间和回收动作;临时权限默认带截止日期,到期自动失效,确需延长时重新说明原因。

个人例外应当少而可见。长期职责优先通过角色配置,短期需求才使用临时授权,并在管理页面显示来源和期限。定期复核时,不只看用户拥有哪些角色,还要检查角色本身是否累积了多余能力、组织关系是否过期、离岗账号是否停用以及高权限是否仍有业务必要。

  • 新增授权有申请依据和批准人
  • 临时授权设置明确失效时间
  • 转岗时先回收旧职责再授予新职责
  • 离职和外部协作结束触发账号与权限回收
  • 定期复核用户、角色和个人例外三张清单
06

审计留痕要能还原关键操作

审计记录至少要帮助回答:谁在什么时间,通过哪个入口,对什么对象执行了什么动作,结果成功还是失败,权限或数据在操作前后发生了什么关键变化。OWASP 的日志指南把权限变更、管理操作、数据导入导出和访问控制失败列为需要重点考虑的事件,这些内容应在需求阶段进入范围。

记录越多不一定越安全。日志应服务于追溯和告警,同时避免直接保存密码、访问令牌、连接串等秘密信息,对个人和商业敏感字段做掩码或必要的受控存储。日志本身也需要访问权限、防篡改措施和保留规则;普通管理员能随意删除自己的操作记录,会破坏审计价值。

  • 登录、授权失败和权限配置变更有记录
  • 高风险新增、修改、删除、导入与导出可追溯
  • 记录包含操作者、对象、动作、时间和结果
  • 敏感凭证与不必要的个人数据不进入日志
  • 日志读取、导出和删除本身也受控并留痕
  • 异常事件有明确的查看人与处理方式
07

用三类场景完成权限验收

权限验收不能只让管理员登录后确认菜单齐全。第一类是正向场景,验证每个角色能完成职责;第二类是越权场景,验证同级跨数据、低权限调用高权限接口、猜测记录编号和直接导出都会被拒绝;第三类是变更场景,验证调岗、代理到期、离职和角色调整后权限及时变化。

验收表应把前置账号、角色、数据归属、操作步骤、预期结果和实际结果写在同一行,并覆盖网页、移动端、接口和批量任务等真实入口。上线前保留一份经过业务负责人确认的权限矩阵作为基线,后续新增模块或角色时继续补充测试。如果准备定制系统,可在首页提交真实流程,由业务与开发共同把权限表转成验收场景。

  • 每个角色至少有一条完整正向业务路径
  • 每项高风险动作至少有一条拒绝测试
  • 同级越权和上下级越权分别验证
  • 调岗、离职、代理到期和权限回收均有测试
  • 新增接口与批量任务不会绕过既有规则
  • 权限矩阵、测试记录和上线配置能够对应
常见问题

继续把边界问清楚

角色是不是设置得越细越安全?

不是。角色应对应相对稳定的工作职责;过细会造成大量重复和个人专属角色,难以复核。先保持角色清楚,再用数据范围和有期限的例外授权处理差异。

只隐藏没有权限的按钮可以吗?

不可以。隐藏按钮只能避免误操作,用户仍可能直接请求接口或修改参数。服务端必须在每次请求时验证功能权限和数据范围,未明确授权时默认拒绝。

部门经理默认能看全部门数据吗?

不能仅凭职位名称推断。应由业务负责人明确部门范围是否包含下级、跨部门项目如何处理,以及详情、统计和导出是否使用相同边界,再配置和验收。

临时代理审批应该怎么设置?

代理授权应写明代理人、业务范围、开始与结束时间、批准依据,并自动失效。代理期间的每次审批仍记录实际操作者,不能共享原审批人的账号。

权限日志需要保存所有页面操作吗?

不一定。应根据追溯、告警和业务要求选择事件,重点覆盖权限变更、高风险操作、数据导入导出和越权失败,同时避免记录密码、令牌等敏感秘密。