权限中心设计

前言

权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。

目前在公司负责权限这块, 所以对权限这块的设计比较熟悉, 公司采用微服务架构, 权限系统自然就独立出来了, 其他业务系统包括商品中心, 订单中心, 用户中心, 仓库系统, 小程序, 多个 APP 等十几个系统和终端

1. 权限模型

迄今为止最为普及的权限设计模型是 RBAC 模型, 基于角色的访问控制(Role-Based Access Control)

1.1 RBAC0 模型

RBAC0 模型如下:
在这里插入图片描述
以上是 RBAC 的核心设计及模型分析, 此模型也叫做 RBAC0, 而基于核心概念之上, RBAC 还提供了扩展模式。包括 RBAC1,RBAC2,RBAC3 模型。
下面介绍这三种类型

1.2 RBAC1 模型

在这里插入图片描述
此模型引入了角色继承 (Hierarchical Role) 概念,即角色具有上下级的关系,角色间的继承关系可分为一般继承关系受限继承关系

  • 一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。
  • 而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。这种设计可以给角色分组和分层,一定程度简化了权限管理工作。

1.3 RBAC2 模型

基于核心模型的基础上,进行了角色的约束控制,RBAC2 模型中添加了责任分离关系

其规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。

责任分离包括静态责任分离动态责任分离。主要包括以下约束:

  • 互斥角色:
    同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。
    互斥角色是指各自权限互相制约的两个角色。比如财务部有会计和审核员两个角色, 他们是互斥角色, 那么用户不能同时拥有这两个角色, 体现了职责分离原则
  • 基数约束:
    一个角色被分配的用户数量受限;一个用户可拥有的角色数目受限;同样一个角色对应的访问权限数目也应受限,以控制高级权限在系统中的分配
  • 先决条件角色:
    即用户想获得某上级角色, 必须先获得其下一级的角色

1.4 RBAC3 模型

即最全面的权限管理, 它是基于 RBAC0,将 RBAC1 和 RBAC2 进行了整合。

1.5 用户组

当平台用户基数增大,角色类型增多时,而且有一部分人具有相同的属性,比如财务部的所有员工,如果直接给用户分配角色,管理员的工作量就会很大。

如果把相同属性的用户归类到某用户组,那么管理员直接给用户组分配角色,用户组里的每个用户即可拥有该角色,以后其他用户加入用户组后,即可自动获取用户组的所有角色,退出用户组,同时也撤销了用户组下的角色,无须管理员手动管理角色。

根据用户组是否有上下级关系, 可以分为有上下级的用户组和普通用户组:

  • 具有上下级关系的用户组:
    最典型的例子就是部门和职位,可能多数人没有把部门职位和用户组关联起来吧。
    当然用户组是可以拓展的,部门和职位常用于内部的管理系统,如果是面向 C 端的系统。
    比如淘宝网的商家,商家自身也有一套组织架构,比如采购部,销售部,客服部,后勤部等,有些人拥有客服权限,有些人拥有上架权限等等,所以用户组是可以拓展的
  • 普通用户组:
    即没有上下级关系,和组织架构,职位都没有关系,也就是说可以跨部门,跨职位。
    举个例子,某电商后台管理系统,有拼团活动管理角色,我们可以设置一个拼团用户组,该组可以包括研发部的后台开发人员,运营部的运营人员,采购部的人员等等。

每个公司都会涉及到到组织和职位, 下面就重点介绍这两个。

1.5.1 组织

常见的组织架构如下图:
在这里插入图片描述
我们可以把组织与角色进行关联,用户加入组织后,就会自动获得该组织的全部角色,无须管理员手动授予,大大减少工作量,同时用户在调岗时,只需调整组织,角色即可批量调整。

组织的另外一个作用是控制数据权限, 把角色关联到组织, 那么该角色只能看到该组织下的数据权限。

1.5.2 职位

假设财务部的职位如下图:
在这里插入图片描述
每个组织部门下都会有多个职位,比如财务部有总监,会计,出纳等职位,虽然都在同一部门,但是每个职位的权限是不同的,职位高的拥有更多的权限。

总监拥有所有权限,会计和出纳拥有部分权限。特殊情况下, 一个人可能身兼多职。

1.6 含有组织 / 职位 / 用户组的模型

根据以上场景, 新的权限模型就可以设计出来了, 如下图:
在这里插入图片描述
根据系统的复杂度不同, 其中的多对多关系和一对一关系可能会有变化

1、在单系统且用户类型单一的情况下,用户和组织是一对一关系,组织和职位是一对多关系,用户和职位是一对一关系,组织和角色是一对一关系,职位和角色是一对一关系,用户和用户组是多对对关系,用户组和角色是一对一关系,当然这些关系也可以根据具体业务进行调整。

模型设计并不是死的, 如果小系统不需要用户组, 这块是可以去掉的。

2、分布式系统且用户类型单一的情况下,到这里权限系统就会变得很复杂,这里就要引入了一个 “系统” 概念。

3、此时系统架构是个分布式系统,权限系统独立出来,负责所有的系统的权限控制,其他业务系统比如商品中心,订单中心,用户中心,每个系统都有自己的角色和权限,那么权限系统就可以配置其他系统的角色和权限。

4、分布式系统且用户类型多个的情况下,比如淘宝网,它的用户类型包括内部用户,商家,普通用户,内部用户登录多个后台管理系统,商家登录商家中心,这些做权限控制,如果你作为架构师,该如何来设计呢? 大神可以在评论区留言交流哦!

2. 授权流程

授权即给用户授予角色, 按流程可分为手动授权和审批授权。权限中心可同时配置这两种, 可提高授权的灵活性。
手动授权:
管理员登录权限中心为用户授权,根据在哪个页面授权分为两种方式:给用户添加角色,给角色添加用户。
给用户添加角色就是在用户管理页面,点击某个用户去授予角色,可以一次为用户添加多个角色;给角色添加用户就是在角色管理页面,点击某个角色,选择多个用户,实现了给批量用户授予角色的目的。
审批授权:
即用户申请某个职位角色,那么用户通过 OA 流程申请该角色,然后由上级审批,该用户即可拥有该角色,不需要系统管理员手动授予。

3. 表结构

有了上述的权限模型, 设计表结构就不难了, 下面是多系统下的表结构, 简单设计下, 主要提供思路:
在这里插入图片描述

4. 权限框架

Apache Shrio
Spring Security
在项目中可以采用其中一种框架, 它们的优缺点以及如何使用会在后面的文章中详细介绍。

5. 结语

权限系统可以说是整个系统中最基础,同时也可以很复杂的,在实际项目中,会遇到多个系统,多个用户类型,多个使用场景,这就需要具体问题具体分析,但最核心的 RBAC 模型是不变的, 我们可以在其基础上进行扩展来满足需求。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SaaS 权限架构设计是指在 SaaS(软件即服务)系统中,如何设计合理的权限管理机制,以控制用户对系统资源的访问和操作。以下是关于 SaaS 权限架构设计的一些建议: 1. 角色基础设计:首先,根据系统功能和用户需求,定义一组基本角色。例如,管理员、普通用户、审批人员等。每个角色应具有对应的权限和功能。 2. 权限控制:通过在系统中设置权限来限制用户对不同资源的访问权限权限可以按模块、功能或数据范围进行划分。例如,只有管理员有权对用户进行管理操作,普通用户只能查看自己的信息。 3. 权限继承:为了减少权限设置的复杂性,可以引入权限继承机制。意味着用户拥有某个角色的权限,就会自动继承该角色下所有权限。这样可以简化权限分配过程。 4. 细粒度的权限控制:对于一些敏感操作,可以实施细粒度的权限控制。例如,只有特定的用户能够审核并批准某些操作,而其他用户只能查看操作的状态,但无法执行类似的审核操作。 5. 用户自定义权限:为提升用户体验,一些系统可能需要提供用户自定义权限的功能。例如,用户可以自行选择某个模块中的操作按钮是否可见或可用。 6. 审计和日志记录:建立完善的审计和日志记录机制,以追踪系统中的权限操作,及时发现和解决潜在的安全问题。 7. 安全性考虑:在设计权限架构时要考虑系统的安全性。需要确保系统有足够的防护措施,防范恶意用户对系统进行破坏。 综上所述,SaaS 权限架构设计需要根据具体系统需求进行合理规划,确保用户的访问和操作权限可以被精确控制,同时保障系统的安全性和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

teacher-ning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值