目录
一、需求背景
为什么要进行系统的权限设计?有以下几点
1.1 业务复杂性
如订单处理业务,随着业务的推进,订单处理的业务逻辑非常复杂,原先一个人能完成的处理工作,现在必须要由多人才能完成,此时我们就可以通过权限系统,限制每个人的操作权限,如A人员负责订单的录入,B人员负责补充客户信息,C人员负责订单审核发送。。。,通过合理的权限分配把复杂流程拆分了,达到专人专职的效果,提升效率。
1.2 信息安全
就是数据敏感,部门不通,职位不同,看到系统页面数据应该是不一样的,如管理员有操作所有菜单和数据的权限,普通用户只能看到部分菜单或者只能查看数据,无法对其进行增删改。要求严格业务,则可能会维护不同的角色,批量给角色设置菜单权限和数据操作权限。
1.3 操作安全
在一个大型系统中,一个误操作产生的后果可能是非常严重的;权限系统的存在最大程度上避免了这些,只要是界面上出现的功能,都是可以操作或不会产生严重后果的。
1.4 页面简洁
如果系统没有进行权限管理,那么每个帐号登录后看到的界面都是一样的,充斥着各种与自己无关的,冗余的信息,甚至还需要专门培训,花费巨大的成本去学习;经过权限系统的管理,每个帐号登陆后只能看到和自己有关的信息,可以更快速地理解自己工作范围内的业务。
二、权限系统三要素
主要由帐号,角色,权限三要素构成
帐号,是登录系统的唯一身份识别,一个账号代表一个用户。由自己注册或系统管理员统一注册分配。
角色,为账号批量分配权限。在一个系统中,不可能为每个帐号订制权限,所以给同一类帐号赋予一个“角色”,以达到批量分配权限的目的。
权限,又分为操作权限,页面权限和数据权限。其中操作权限指的是用户可以进行的操作,例如是否可以新增、删除、编辑等。页面权限指的是可以看到的页面。数据权限指的是可以查看数据的范围。
三、权限设计思路
账号和角色没什么好说的,主要看权限这一块怎么设计,先来一张网图
系统权限设计是指在一个计算机系统中,对用户、角色、资源等进行权限管理的设计。权限设计的目的是确保系统的安全性和可控性,保护系统的机密性、完整性和可用性,避免非法操作和攻击。
以下是几个权限相关的表(大概情况,可能没有公司表)
t_company(公司表),t_org(部门表/组织结构表),t_user(用户表),t_role(角色表),t_user_role(用户角色表),t_resources(资源表),t_user_resources(用户资源表),t_role_resources(角色资源关联表)
系统权限设计思路如下
3.1 了解用户需求和系统需求
在进行权限设计之前,需要了解系统的功能、架构、安全需求和用户需求等方面的信息。对系统和用户需求的分析是设计权限的基础,可以确保权限分配的合理性和有效性。
3.2 制定权限策略和权限模型
权限策略是指规定权限分配的标准和方法,权限模型是指对权限进行建模和描述的方法。一般来说,权限策略和权限模型应该具有可扩展性、可维护性和可控性。
常见权限模型如下:
ACL:用户 —> 权限,直接规定资源可以被哪些主体进行访问操作。权限是围绕资源来设定的。
RBAC:用户 —> 角色 —> 权限,规定角色可以对哪些资源进行访问,最后再给用户主体分配角色,此种模型最常用。
ABAC:根据用户特征,对象特征,操作类型等属性确定访问权限。即哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些操作。
这个是基于属性的权限控制模型,比较适用于用户数量多并且授权比较复杂的场景。
PBAC:PBAC是一种将角色和属性与逻辑结合以创建灵活的动态控制策略的方法。
3.3 划分角色和权限
在权限设计中,一般会涉及到多种角色和权限。需要根据实际需求,将不同的角色和权限进行划分和分类,建立角色与权限之间的映射关系。角色是指一个或一组用户在系统中所拥有的一组特定权限,权限是指一个用户可以执行的操作。
3.4 配置权限访问控制
在权限设计中,需要考虑到访问控制的问题。访问控制是指对用户访问系统资源的控制。可以通过访问控制列表(ACL)、角色授权、审批流程等方法来实现对访问的控制。
3.5 设计安全审计机制
安全审计是指对系统的操作和事件进行记录和审计。通过对系统的操作进行记录和分析,可以检测到系统的异常操作和攻击行为,从而及时采取相应的安全措施。
3.6 定期更新和优化权限设计
随着系统的不断发展和用户需求的变化,权限设计也需要不断地进行更新和优化。定期审查和修改权限策略和权限模型,保证权限设计的合理性和有效性。
以上是权限系统设计时的一些参考要素,实际设计时还需要根据具体的用户需求来灵活变动。