完整的 sso + RBAC 用户权限控制系统设计和实现

摘要:
1、 概念1.1sso1.2restfulauth1.3RBACRBAC

一,概念

1.1 sso

1.2 restful auth

1.3 RBAC

RBAC:
基于角色的权限访问控制(Role-Base-Access Control)


从RBAC0到RBAC3分别需要5到12张表
1. RBAC0
RBAC0是RBAC中的基础模型,后续的模型都是RBAC0的改进
RBAC0引入了角色概念来解决用户与权限之间的分离问题,用户实际上没有权限,而只有给用户赋予某种角色之后,才拥有相应的权限.
RBAC0主要解决了权限的分离问题


数据表模型:
我们需要5张表来完成RBAC0
分别是:
1.用户表(User)
字段:用户名,密码
2.角色表(Role)
字段:角色名,角色父ID
3.权限表(Permission)
字段:权限名,类方法名,权限父ID
4.权限角色关联表(PA) ->多对多
字段:角色ID,权限ID
5.用户角色关联表(UA) ->多对多
字段:用户ID,角色ID


现在我们实现了一个基本的RBAC0的基础模型
我们来对这个模型加以改进:
当用户数量过多的时候,我们需要引入用户组的概念.角色不仅可以对用户进行关联,也可以对用户组进行关联,所现在我们需要添加三张表
添加以下三张表
6. 用户组表(UserGroup)
7. 用户组角色关联表(UGA)
8. 用户组与用户关联表(UUG)
在公司中,我们还有所谓的上下级关系,一个部门部长下面要管理副部长,经理等等.这时我们就要引入角色的继承关系来表示上下级关系,体现在数据表上,就要添加一张角色继承表
9.角色继承关系表
到了这一步我们基本上实现了RBAC1的标准规范
而在角色的继承中,我们其实对继承的角色权限也要加以控制,毕竟不可能让继承过来的角色拥有父角色的所有权限,所以就需要多加一张对来对继承的角色进行权限约束
10.角色权限约束
我们除了对角色进行约束,其实还可以对用户来进行一些相关的约束来更好的保证整个系统的责任链分离,如果你也添加了用户的约束规则,那么我们就基本上达到了RBAC2的规范了
11.用户激活约束
在这个基础上,我们再来看看权限授权这一部分
这时候,如果我们需要判定的功能权限太多,那么就可以将权限划分模块,然后统一将角色授权给某个模块.
12.权限模块表
13.权限模块与权限关联表
14.角色与模块的关系表

15.操作表

16.资源表
到此个人认为已经达到了比较完善的RBAC权限控制

二,

免责声明:文章转载自《完整的 sso + RBAC 用户权限控制系统设计和实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Hbase常用命令分享我们必须知道的高速GTX技术下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django 菜单权限

一.什么是权限 能做哪些事情,不能做哪些事情,可以做的权限 二.设计权限 思路: web应用中,所谓的权限,其实就是一个用户能够访问的url,通过对用户访问的url进行控制,从而实现对用户权限的控制. 每个用户代表不同的的角色,每个角色具有不同的权限. 一个用户可以有多重角色,多个人也可以是一种角色(比如说一个公司可以有多个销售),所以说,用户与角色之间的...

PyCasbin: 支持 ACL、RBAC、ABAC 多种模型的 Python 权限管理框架

PyCasbin 是一个用 Python 语言打造的轻量级开源访问控制框架( https://github.com/casbin/pycasbin ),目前在 GitHub 开源。PyCasbin 采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。 PyCasbin 的主要特性包括 1.支...

基于角色的访问控制rbac itprobie

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个...

PHP与RBAC设计思路讲解与源码

在说权限管理前,应该先知道权限管理要有哪些功能: (1)、用户只能访问,指定的控制器,指定的方法 (2)、用户可以存在于多个用户组里 (3)、用户组可以选择,指定的控制器,指定的方法  (4)、可以添加控制器和方法 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若...

如何在.netcore 上实现 Rbac 权限管理

如何在.netcore 上实现 Rbac 权限管理 1、.netcore 的权限系统      .netcore 的权限系统是将认证系统和授权系统分两步实现的 public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { ......

Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)

文章转载自:https://blog.csdn.net/BigData_Mining/article/details/88849696 基于角色的访问控制(Role-Based Access Control, 即”RBAC”)使用”rbac.authorization.k8s.io” API Group实现授权决策,允许管理员通过Kubernetes AP...