rabc--权限控制解读

takemyjavalisfe takemyjavalisfe     2023-03-02     331

关键词:

一、基于RBAC的概念介绍

1、RBAC(Role-Based Access Control )基于角色的访问控制。

2、RBAC认为权限的过程可以抽象概括为:判断【Who是否可以对What进行How的访问操作(Operator)】这个逻辑表达式的值是否为True的求解过程。即将权限问题转换为Who、What、How的问题。who、what、how构成了访问权限三元组。

3、RBAC96是一个模型族,其中包括RBAC0~RBAC3四个概念性模型。

1、)基本模型RBAC0定义了完全支持RBAC概念的任何系统的最低需求。

2、)RBAC1和RBAC2两者都包含RBAC0,但各自都增加了独立的特点,它们被称为高级模型。

    RBAC1中增加了角色分级的概念,一个角色可以从另一个角色继承许可权。

    RBAC2中增加了一些限制,强调在RBAC的不同组件中在配置方面的一些限制。

3、)RBAC3称为统一模型,它包含了RBAC1和RBAC2,利用传递性,也把RBAC0包括在内。这些模型构成了RBAC96模型族。

技术分享图片

二、基于RBAC的几种权限体系设计

1、用户-角色-权限

这种权限体系其实就是RBAC0的模式了。这里面又包含了2种:

  1. 用户和角色是多对一关系,即:一个用户只充当一种角色,一种角色可以有多个用户担当;
  2. 用户和角色是多对多关系,即:一个用户可同时充当好几种角色,一种角色可以有多个用户担当;

技术分享图片

如上图:对于左边的用户-角色对应,每个人只能同时拥有一种角色,但是同一个角色里边,可能会含有多个用户(如:李四和王麻子都是业务员);而右边的用户-角色对应,是在左边的基础上,增加了一个用户可拥有多种角色的情况(如:小马哥既是经理,也要负责财务的工作);

那么,什么时候该使用多对一的权限体系,什么时候又该使用多对多的权限体系呢?

我的建议是:尽量可能地使用多对多的权限体系。如果这个系统的功能比较单一、使用人员较少、岗位权限相对清晰且不会出现兼岗的情况,这种情况也可以考虑用多对一的权限体系。

2、用户-组织-角色-权限

 

技术分享图片技术分享图片

在“用户-角色-权限”的基础上,我们增加了用户与组织的关联关系,组织决定了用户的数据可视权限。但要想真正达到这个效果,我们还需要做2件事:

  1. 组织层级划分。如下图,我们需要对组织进行梳理,并划分层级;
  2. 数据可视权限规则制定。比如:上级组织职能看到下级组织员工负责的数据,而不能看到其他平级组织及其下级组织的员工数据等。

技术分享图片

通过以上两点,系统就可以在用户登录时,自动判断要给用户展示哪些数据了。

3、用户-组织-岗位-角色-权限

第三种权限体系又是在第二种权限体系上进行优化的,增加了用户与岗位的关联关系,示意图如下:

技术分享图片

增加岗位有以下几点好处:

  1. 识别用户的主要身份。一个人可能身兼多职(多个角色),但是他的主要职能是固定的,那怎么告诉系统用户的主要职能是什么呢?答案就是:通过岗位!拿上面的小马哥举例:小马哥虽然身兼经理和财务两种身份,但他的本职工作是“经理”,因此,他的系统岗位应该“经理”。当他登录时,系统会识别他的身份为“经理”,只不过这个“经理”刚好兼具了其他岗位的职能而已;
  2. 通过“组织-岗位”关联,快速甄别用户岗位。公司在不断地发展的过程中,系统的用户角色也会不断增加,当角色达到一定数量以后,管理员每新增一个用户都要花相当的时间去寻找角色。引入岗位后,可将组织和岗位、岗位和角色提前进行关联,配置账号时,管理员只要选定组织,系统就给出与该组织关联的岗位,而这些岗位,又是提前关联好角色的,选择起来,既方便又高效!

文章参考:http://www.woshipm.com/pd/872372.html

                 https://www.cnblogs.com/vinozly/p/4851364.html

 

在新项目下使用rbc权限(代码片段)

...建数据库迁移5.注册admin,录入数据-->自动发现并录入权限URL6.在登录流程中初始化权限信息7.注册中间件‘rbac.middleware.rbac.RBACMiddleware‘,8.在settings.py中设置#--------------权 查看详情

解读suid权限位

...关系,请听我继续啰嗦。所谓SUID就是给文件所有者赋予s权限位,我举个例子:普通用户也可以给自己改密码,为什么?大家来看一下passwd这个命令的权限:650)this.width=650;"src="http://s1.51cto.com/wyfs02/M02/89/70/ 查看详情

git的核心概念解读

...样才能更好的使用它,让工具成为我们得力的助手。版本控制系统Git是目前世界上最优秀的分布式版本控制系统。版本控制系统是能够随着时间的推进记录一系列文件的变化以便于你以后想要的退回到某个版本的系统。版本控制... 查看详情

shiro源码分析-授权过程(代码片段)

二。shiro的授权过程源码分析1.shiro不管是基于url的粗粒度权限控制,还是基于方法的细粒度权限控制。每个请求,都会经过PathMatchingFilter类的preHandle方法来校验url。关于shiro的filter再将。我们就从RolesAuthorizationFilter的isAccessAllowed(... 查看详情

prism源码解读2-view的加载和控制

原文:Prism源码解读2-View的加载和控制目录介绍4、ViewDiscovery5、ViewInjection6、ViewActivationDeactivation总结 回到顶部介绍上一篇介绍了Region,这一篇跟Region息息相关,讲一下Region中View的加载方式及控制。回到顶部4、ViewDiscovery在创... 查看详情

php配置优化:php-fpm配置解读(代码片段)

...HP-FPM管理进程的相关参数,比如工作子进程的数量、运行权限、监听端口、慢请求等等。我们在编译安装PHP的时,在./configure的时候带–enable-fpm参数即可开启PHP-FPM。PHP-FPM配置文件为php-fpm.conf,其语法类似php.ini。一般我们可以在... 查看详情

解读tcp协议

本文内容如下:   1)TCP协议概念   2)TCP头部结构和字段介绍   3)TCP流量控制      滑动窗口   4)TCP拥塞控制      慢启动、 查看详情

redis新特性篇:多线程模型解读(代码片段)

...下:多线程处理网络IO;客户端缓存;细粒度权限控制(ACL);RESP3协议的使用;用于 查看详情

prism源码解读2-view的加载和控制

...这一篇跟Region息息相关,讲一下Region中View的加载方式及控制。4、ViewDiscovery在创建好Region后需要将View添加到Region中。先补充几个概念在上一篇将了如何创建Region,现在让我们看看Region类是什么privateViewsCollectionviews;privateViewsCollect... 查看详情

c++类和对象(类的介绍用法等及this指针)详细解读(代码片段)

...口protected:保护型成员private: 私有成员;对类成员访问权限的控制,是通过设置成员的访问控制属性而实现的。访问控制属性可以有以下3种:公有类型(pu 查看详情

了解权限控制框架shiro之实际应用.

  ApacheShiro1.权限控制分为a.粗粒度URL级别权限控制        b.细粒度方法级别权限控制  2.使用shiro进行权限控制主要有四种主要方式:  a、在程序中通过Subject编程方式进行权限控制  b、配置Filter实现... 查看详情

acl权限控制机制?

...thers)目前在Linux/Unix文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件系统权限控制模式。ACL(AccessControlList)访问控制列表包括三个方面:权限模式(Scheme)1、IP:从IP地址粒度进行权限控制2、Digest:最... 查看详情

acl权限控制机制?

...thers)目前在Linux/Unix文件系统中使用,也是使用最广泛的权限控制方式。是一种粗粒度的文件系统权限控制模式。ACL(AccessControlList)访问控制列表包括三个方面:权限模式(Scheme)1、IP:从IP地址粒度进行权限控制2、Digest:最... 查看详情

软件开发的权限控制和权限验证

...,我们经常会遇到账号体系,那么就不可避免地涉及到了权限控制或者叫权限管理。很多人容易把权限控制和权限验证搞混淆,以为在前端隐藏了某个按钮就控制好权限了,其实用户可以直接发送一个接口请求服务端来完成这个... 查看详情

权限控制

用户配置系统菜单,操作权限(菜单和操作按钮有一套标码规范,名称、id等)-》用户配置用户角色的菜单、操作权限->后台生成权限树->用户登录业务系统,根据权限树控制菜单和操作->后台拦截器控制请求 作者:hui... 查看详情

基于角色与基于资源的权限访问控制

  基于角色的权限访问控制RBAC(role-basedaccesscontrol)是以角色为中心进行的访问控制,也就是判断主体subject是那个角色的方式进行权限访问控制,是粗粒度的  基于资源的权限访问控制RBAC(resource-basedaccesscontrol)是以资源... 查看详情

facl访问控制权限管理

...控制列表,该属性可以利用文件扩展保存额外的访问控制权限,比如有一下情况:storm用需要创建一个test文件,他需要cathy用户同样具有rw权限,通常的权限控制做法是需要修改test文件的other权限为rw,但是这样做以后所有的用户... 查看详情

linux楼下大爷都看得懂的用户权限,文件权限相关指令及其示范!!(代码片段)

权限用户权限susudo新增用户,设置密码文件权限解读rwx规则解读umaskchmod沾滞位chownchgrp用户权限susu用于切换用户。Linux用户分为超级用户(root)和普通用户。超级用户拥有所有权限。切换示例:surootsudevsudo表示普... 查看详情