精华内容
下载资源
问答
  • 基于RBAC数据权限扩展设计与实现,黄志勇,凌咏红,目前大多数基于Web的企业应用系统的权限控制采用的是RBAC(基于角色的访问控制)模型。权限控制可以分为功能权限和数据权限RBAC模�
  • RBAC权限设计

    千次阅读 2016-03-11 11:13:19
    ...RBAC权限设计   (2012-03-04 19:05:22) 转载▼ 标签:  rbac权限设计   权限设计   权限   角色   数据设计   it   分类: IT小知识

    http://blog.sina.com.cn/s/blog_65a2fe5d01012riv.html

    RBAC权限设计

     (2012-03-04 19:05:22)
    标签: 

    rbac权限设计

     

    权限设计

     

    权限

     

    角色

     

    数据设计

     

    it

     
    分类: IT小知识

    一、关系图RBAC权限设计

    二、流程分析

         1、用户登陆,2,找到用户角色,3,通过模块表和页面权限对应表,加载模块,4,通过权限包判定当前用户所有角色是否能访问相应的权限资源。

     

    三、页面设计思路

    1、角色管理

    增加修改删除角色。查看与分配角色的权限

    角色分配权限时,资源以页面资源,页面对应的控件资,

    角色分配设计思路:通过查找并添加功能模块,显示当前以有的功能模块下面所有的页面,并能分配每一个页面和控件资源的权限.关联的表有(UM_Func,UM_Page,UM_PopedomPage, UM_ControlPopedom, UM_Control)

    2、用户管理

    实现用户查询,恢复用户默认密码(管理员),修改用户密码和资料(当前用户),给用户分配角色(管理员使用)

    3、功能模块维护

    对功能模块维护(修改,添加,删除功能模块信息)

    4、命名约定

          受控对象命名的约定,包括模块,页面,控件,……

    5、授权规则

          默认策略,限定策略,……

    四、数据库角本

    CREATE TABLE UM_User

    (

       UserID Varchar(20) IDENTITY NOT NULL Primary Key, --主键,外键员工表

       UserName varchar(50) NOT NULL unique,     --用户登录名,不能重复    

       UserPWD varchar(50) NOT NULL,       --用户密码

       UserSex bit NOT NULL DEFAULT 1,        --用户性别,默认是男

       UserBirthday datetime NOT NULL,        --出生日期

       UserEmail varchar(50) NOT NULL,        --电子邮件

        UserPhone varchar(20) not null         --用户电话

    )

    GO

     

     

    --2.角色表

    if exists(select name from sysobjects where name = 'UM_Role')

     drop table UM_Role

    GO

     

    CREATE TABLE UM_Role

    (

       RoleID int IDENTITY NOT NULL Primary Key,    --主键,自增长

       RoleName varchar(20) NOT NULL unique,       --角色名称,不能重复

       Description varchar(50)                --描叙

    )

    GO

     

    --3.用户角色关联表

    if exists(select name from sysobjects where name = 'UM_UserRole')

     drop table UM_UserRole

    GO

     

    CREATE TABLE UM_UserRole

    (

       UserRoleID int IDENTITY NOT NULL Primary Key,    --主键,自增长

       UserID int NOT NULL  foreign key(UserID) referencesUM_User(UserID),  --用户ID

       RoleID int NOT NULL  foreign key(RoleID) referencesUM_UserRole(RoleID)  --角色ID

    )

    GO

     

    --4.权限(包)表

    if exists(select name from sysobjects where name = 'UM_Popedom')

     drop table UM_Popedom

    GO

     

    CREATE TABLE UM_Popedom

    (

       PopedomID int IDENTITY NOT NULL Primary Key,    --主键,自增长

       PopedomName varchar(20) NOT NULL unique,  --权限名称

       Description varchar(50) NOT NULL  --描叙

    )

    GO

     

    --5.权限(包)角色关联表

    if exists(select name from sysobjects where name = 'UM_PopedomRole')

     drop table UM_PopedomRole

    GO

     

    CREATE TABLE UM_PopedomRole

    (

       PopedomRoleID int IDENTITY NOT NULL Primary Key,    --主键,自增长

       RoleID int NOT NULL foreign key(RoleID) referencesUM_UserRole(RoleID),   --角色ID

       PopedomID int NOT NULL foreign key(PopedomID) referencesUM_Popedom(PopedomID)  --权限ID

    )

    GO

     

    --6.ACL(控件表)

    if exists(select name from sysobjects where name = 'UM_Control')

     drop table UM_Control

    GO

     

    CREATE TABLE UM_Control

    (

       ControlID int IDENTITY NOT NULL Primary Key,    --主键,自增长,控件ID

       ControlName varchar(20) NOT NULL unique,  --控件名称  

       PageUrl varchar(20) NOT NULL Primary Key foreign key(PageUrl)references UM_Page(PageUrl),     --所属的页面,外键

       ControlControlID varchar(20) NOT NULL,    --页面中控件ID

       Description varchar(50)           --描述

    )

    GO

     

    --7.控件权限关联表

    if exists(select name from sysobjects where name = 'UM_ControlPopedom')

     drop table UM_ControlPopedom

    GO

     

    CREATE TABLE UM_ControlPopedom

    (

       ControlPopedomID int IDENTITY NOT NULL Primary Key,      --主键,自增长

       PopedomID int NOT NULL foreign key(PopedomID) referencesUM_Popedom(PopedomID),         --权限ID

       ControlID int not null foreign key(ControlIDD) referencesUM_Control(ControlID)               --控件ID

    )

    GO

    --ACLPage

    CREATE TABLE UM_Page

    (

      PageUrl varchar(15) not null Primary Key, --URL 主键

      PageName int not null,  --页面名称

      FuncCode int not null Primary Key foreign key(FuncCode) referencesUM_Page(FuncCode)   --模块编码处键

     

    )

    --ACL(功能模块包)

    CREATE TABLE UM_Func

    (

       FuncCode    int   not null Primary Key, --模块编码主键

       PageUrl      Varchar(15)   not null Primary Key foreign key(PageUrl)references UM_Page(PageUrl),   --模块Url 处键

       ParentCode  int   not null,  --模块父编码

       FuncName     Varchar(50)   not null,  --模块名称

       FuncDesc     Varchar(200) not null,   --模块描述

       FuncOrder   Int   not null,  --模块排序默认0

       DelFlag      Bit  not null --删除标记默认False

    )

    go

     

    CREATE TABLE UM_PopedomPage

    (

       PopedomID int NOT NULL Primary Key foreign key(PopedomID) referencesUM_Popedom(PopedomID),--权限ID 主键外键

       PageUrl   int not null Primary Key foreign key(PageUrl) referencesUM_Page(PageUrl)--模块编码主键外键

    )

    go

    展开全文
  • RBAC权限管理设计

    2020-05-22 17:04:09
    设计一个灵活、通用、方便的权限管理系统。 在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?...1,RBAC权限分配 RABC:基于角色的权限访问控制(Role-Based Access Con

    设计一个灵活、通用、方便的权限管理系统。
    在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也分别称为对象资源和数据资源,后者是我们在系统设计与实现中的叫法。

    系统的目标就是对应用系统的所有对象资源和数据资源进行权限控制,比如应用系统的功能菜单、各个界面的按钮、数据显示的列以及各种行级数据进行权限的操控。

    1,RBAC权限分配

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

    一般在登录系统认证通过后,会先确定的该用户的操作权限,判断用户的后续操作是否合法!
    RABC至少需要三张表:用户表–角色表–权限表(多对多的关系比较合理)
    用户表:用来存储用户名和密码,进行登录校验,可以重写User表,使用django内置的auth认证系统,也可自定义;
    角色表:对用户角色进行分配,
    权限表:存储所有需要进行权限分配的url请求路径

    • 所有权限的本质是对数据库中表中数据增删改查的操作
    • 而这些增删改查的操作是通过前端不同路由,通过get、post、put、delete方法操作数据库的
    • 对权限的控制,最简单的方法就是判断当前用户是否可以对指定路由请求操作的权限
    • 把角色和这个角色能够访问的 url 和 请求方式进行关联(因为正是的业务逻辑用户权限划分力度可能非常细致)
    • 再简单的业务逻辑中这一张表就是权限表
    路由 资源(可能对应的是后端路由的 name名称,可以通过name名称解析出对应路由) 请求方式 说明
    https://www.shiyanlou.com/v1/books/ get 判断用户是否可以查询books表中数据
    https://www.shiyanlou.com/v1/books/ post 判断用户是否可以添加books表中数据
    https://www.shiyanlou.com/v1/books/ put 判断用户是否可以更新books表中数据
    https://www.shiyanlou.com/v1/books/ delete 判断用户是否可以删除books表中数据

    RBAC权限分配操作过程:
    用户登录,通过用户表校验用户名和密码
    登录成功,记录用户登录状态,同时查询(通过用户关联的权限表)记录当前用户的权限(可以记录在django的session表)
    访问认证,对每个url的请求事先进行登录状态和权限的验证(可以放在中间件的process_request中,注意设置相应的放行白名单)

    后端如何判断用户权限

    • 用户发送求方法 https://www.shiyanlou.com/v1/books/ 的url
    • 后端首先查询时哪一个用户,然后查询当前用户的角色
    • 最后判断这个角色是否可以访问 https://www.shiyanlou.com/v1/books/ 的对应方法即可
    • 如果这个角色有权限访问这个url就返回数据,不能访问就返回 401状态码
    展开全文
  • RBAC权限管理设计思想

    2020-12-22 14:42:56
    RBAC权限管理设计一、概述二、权限模型三、RBAC模型什么是RBAC模型基本模型RBAC0角色分层模型RBAC1角色限制模型RBAC2统一模型RBAC3基于RBAC的延展——用户组总结: 一、概述 不管是开发手机APP,Web网站还是小程序等...

    一、概述

    不管是开发手机APP,Web网站还是小程序等项目,基本上都需要一个后台管理系统的支撑。而每个后台管理系统都有一个通用的模块就是用户权限管理模块,权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前很多公司采用微服务架构,权限系统自然就独立出来了。

    二、权限模型

    迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制。权限是用户可以访问的资源,包括页面权限,操作权限,数据权限。

    三、RBAC模型

    什么是RBAC模型

    RBAC是一套成熟的权限模型。在传统权限模型中,我们直接把权限赋予用户。而在RBAC中,增加了“角色”的概念,我们首先把权限赋予角色,再把角色赋予用户。这样,由于增加了角色,授权会更加灵活方便。
    在RBAC中,根据权限的复杂程度,又可分为RBAC0、RBAC1、RBAC2、RBAC3。其中,RBAC0是基础,RBAC1、RBAC2、RBAC3都是以RBAC0为基础的升级。我们可以根据自家产品权限的复杂程度,选取适合的权限模型。

    基本模型RBAC0

    RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。
    在这里插入图片描述
    用户是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户,可以是OA系统的内部员工,也可以是面向C端的用户,比如阿里云的用户。
    角色起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时每个用户关联多个角色,那么这个用户就有了多个角色的多个权限。
    有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如20个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给100人甚至更多授权,工作量巨大。这就引入了"角色(Role)"概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。

    角色分层模型RBAC1

    RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念。简单理解就是,给角色可以分成几个等级,每个等级权限不同,从而实现更细粒度的权限管理。
    在这里插入图片描述
    举例:基于之前RBAC0的例子,我们又发现一个公司的销售经理可能是分几个等级的,譬如除了销售经理,还有销售副经理,而销售副经理只有销售经理的部分权限。这时候,我们就可以采用RBAC1的分级模型,把销售经理这个角色分成多个等级,给销售副经理赋予较低的等级即可。

    角色限制模型RBAC2

    RBAC2同样建立在RBAC0基础之上,仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。
    在这里插入图片描述
    举例:还是基于之前RBAC0的例子,我们又发现有些角色之间是需要互斥的,譬如给一个用户分配了销售经理的角色,就不能给他再赋予财务经理的角色了,否则他即可以录入合同又能自己审核合同;再譬如,有些公司对角色的升级十分看重,一个销售员要想升级到销售经理,必须先升级到销售主管,这时候就要采用先决条件限制了

    统一模型RBAC3

    RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分层,也包括可以增加各种限制。
    在这里插入图片描述
    举例:这个就不举例了,统一模型RBAC3可以解决上面三个例子的所有问题。当然,只有在系统对权限要求非常复杂时,才考虑使用此权限模型。

    基于RBAC的延展——用户组

    基于RBAC模型,还可以适当延展,使其更适合我们的产品。譬如增加用户组概念,直接给用户组分配角色,再把用户加入用户组。这样用户除了拥有自身的权限外,还拥有了所属用户组的所有权限。
    在这里插入图片描述
    举例:譬如,我们可以把一个部门看成一个用户组,如销售部,财务部,再给这个部门直接赋予角色,使部门拥有部门权限,这样这个部门的所有用户都有了部门权限。用户组概念可以更方便的给群体用户授权,且不影响用户本来就拥有的角色权限。

    总结:

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

    展开全文
  • 好处就是如果用户全体特别大,分配权限就能累死人,基于RBAC更适合企业应用得权限控制 2. RBAC得四大模型 RBAC根据这套模型功能的复杂程度不同,由简单到复杂又可以分为RBAC-0、RBAC-1、RBAC-2、RBAC-3四个层级。 ...

    RBAC模型概述

    1. 什么是RBAC

    • RBAC模型:Role-Based Access Control 基于角色得访问控制
    • 通俗说,就是,权限不会直接分配到用户,而是分配到用户所拥有得角色
    • 这样的好处是什么?
    • 好处就是如果用户全体特别大,分配权限就能累死人,基于RBAC更适合企业应用得权限控制

    2. RBAC得四大模型

    RBAC根据这套模型功能的复杂程度不同,由简单到复杂又可以分为RBAC-0、RBAC-1、RBAC-2、RBAC-3四个层级。

    • RBAC-0

    RBAC-0是最基础的,就是在用户与角色、角色与权限间建立关系,每种关系均为多对多。

    在这里插入图片描述

    • RBAC-1

    RBAC-1是在RBAC-0的基础上,增加了继承关系。就是一个角色只能有另一角色的部分权限,这个角色的权限大小受另一角色权限影响。
    简单说,角色2由角色1派生,那么角色2所有得权限必然小于角色1,角色1拥有权限1,2,而角色2只有拥有权限1

    在这里插入图片描述

    • RBAC-2

    RBAC-2模型,其实就是角色冲突,一个简单例子,你不能即是老板也是老板秘书,这样关系就乱了
    这里就是用户3不能同时拥有角色2,3

    在这里插入图片描述

    • RBAC-3

    RBAC-3是RBAC-1与RBAC-2的结合,就是既有继承关系,又有限制条件,基础都一样。

    在这里插入图片描述

    3. 权限管理

    1. 数据权限

    数据权限是指用户是否能够看到某些数据。主要应用在数据有保密要求,或数据量大,需按用户或角色来进行区分时。例如:财务主管在后台可以看到公司所有人的工资流水,但普通员工只能看到自己的工资流水。
    在这里,有的同学或许认为,既然我们的权限是跟角色关联,为什么“查看工资流水”这个权限精确到每个用户了呢?
    其实这就是RBAC-2的一种,权限与角色关联后增加了限制条件,不过这种限制条件无法在页面上灵活配置。
    数据权限的颗粒度由粗到细可以分为菜单级、栏目级、字段级,一般配置页面都可以灵活操作。

    1. 操作权限

    操作权限是指用户是否能够操作对应按钮。需要先有数据权限,才有操作权限,所以需要增加系统自动校验:

    • 选择了操作权限,就默认勾选了查看(数据)权限;
    • 取消了数据权限,就自动取消了操作权限

    以上就是我们做单系统的权限设计分享的内容。在多系统的权限设计中,虽然理论基础一样,但因为涉及到多个系统,所以产生了很多其他问题,需要另外解决。

    4. 多级数据权限得控制

    有这样一种需求,每个小区管理员之间,只能看到自己小区得数据,很显然他们是同级别得,功能权限相同,但是数据权限不同
    对于这种得需求,可以通过硬编码得方式去解决,但是还有一种更好的解决方案
    基于 用户——部门——角色——权限 这样的一种方式来解决,部门与角色关联, 类似实际生产生活中的技术部经理和产品部经理的感觉,
    这样每个小区可以设置为不同的部门,都是分配一个小区管理员,这样就可以通过部门来划分一个大方向的数据权限了




    展开全文
  • RBAC 权限控制设计

    千次阅读 2017-12-19 11:30:26
    RBAC 权限设计 上个月,因项目的扩展,目前的后台管理系统达不到当前需求和后期需求,要在原来基础上去扩展更多内容,而且是天翻地覆的改,权限控制也要加上去。很为难我这个后端人员,更何况后端人员就我一个人,...
  • RBAC权限设计详解

    2021-05-02 14:30:44
    权限设置 1.权限点 权限:在一个系统内是否具有做某个操作的权利 ...3.RBAC权限设计思想 目标:不同账号登录系统后看到不同的页面, 能执行不同的功能 模式如下 三个关键点: 用户: 就是使用系统的人 权...
  • RBAC: role base access control 基于角色的用户访问权限控制 1.传统方式权限设置 具体操作权限与用户直接联系: 该方式权限设置特点: 管理员需要为新增、离职的用户进行具体权限分配,操作的时候效率低下...
  • 前言:  RBAC是Role-Based Access Control的缩写, 它几乎成为权限系统的数据模型的选择标配.  之前写个两篇关于权限系统的... 比如这篇博文: 权限系统与RBAC模型概述, 其基本就涵盖了各类RBAC权限数据模型的设计,...
  • RBAC权限设计记录

    2018-04-18 21:04:45
    权限设计小记(下) 上次的权限设计说了一些大概的信息,这次我来说一些权限设计里面的小细节。 关于菜单的状态控制 上篇说到过,关于菜单,有4种不同的状态,那么这四种状态是怎么样附加到菜单上的呢?这里我用...
  • 像新浪、搜狐、网易、百度、阿里巴巴、淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组、角色组、权限组、操作组、资源组的表盒数据等都封装成工具类,持久化曾通过一个数据库视图...
  • ThinkPHP——RBAC角色和权限数据模拟及设计
  • 不知道,像新浪、搜狐、网易、百度、阿里巴巴、淘宝网的RBAC用户权限这一块,都是这种细颗粒的RBAC设计开发,还是把他们像用户组、角色组、权限组、操作组、资源组的表盒数据等都封装成工具类,持久化曾通过一个...
  • 通用RBAC权限设计及其数据权限和分库分表 支持服务限流、动态路由、灰度发布、 支持常见登录方式, 多系统SSO登录 基于 Spring Cloud Hoxton 、Spring Boot 2.3、 OAuth2 的RBAC权限管理系统 提供对常见容器化支持 ...
  • 写的不错的地址(只要看设计思路) RBAC权限系统分析、设计与实现 RBAC用户、角色、权限、组设计方案 数据权限设计参考
  • 一个基于RBAC的通用权限设计清单

    千次阅读 2009-06-27 11:43:00
    一个基于RBAC的通用权限设计清单   注:主要是功能权限的设计,关于数据权限的设计,敬请关注作者CSDN后续博客。 RBAC即角色访问控制(Role Based Access Control) RBAC认为权限授权实际上是Who、What、...
  • 什么是权限体系呢,比如,在系统中A分站的用户不能看到B分站的数据,业务员能看到自己的数据而看不到其他业务员的数据,业务经理可以看到所有业务员的数据,业务经理和财务经理拥有的功能权限又不相同,这些场景,都...
  • 本方法是RBAC(基于角色的访问控制方法)的进一步扩展和延伸,即在功能权限的基础上增加数据权限的管理,实现数据权限和功能权限的集中处理。 解释: 功能权限:能做什么的问题,如增加销售订单; 数据权限:能在...
  • 基于RBAC模型的通用权限管理系统的设计(数据模型)
  • 关于权限(数据 操作)的设计比较复杂, 应按各业务场景分析设计 以下讨论的是通用的部分原则 1. 什么是RBAC RBAC目前使用最为广泛的权限模型 RBAC(基于角色的权限控制)模型的核心是在用户和权限之间引入了角色的概念...
  • 对传统RBAC访问控制模型进行扩展,提出了基于导航树页面的RBAC模型,有效避免了传统RBAC模型应用到B/S系统时的角色和权限冗余。根据大多数电子政务系统对用户与角色数据的读取操作较更新操作频繁的特点,选择LDAP...
  • RBAC权限实战项目

    2018-07-20 14:31:28
    本视频讲授RBAC权限模型的设计、以及在项目中的应用 。 1. 使用Maven进行项目构建 。 2. 页面设计采用响应式前端框架BootStrap 。 3. 采用多种方式展现用户数据:树形结构(ztree)、图表(echarts) 等 。 4. 基础...
  • RBAC权限模型引入

    2020-11-04 14:53:04
    普通的用户权限设计 三个表搞定(用户表,权限表,用户权限表) (2)有什么特点? 》1 租户增加,选成会大量的冗余数据! 》2 添加或者删除权限不方便 建议使用RBAC权限模型 RBAC权限模型介绍 (1)什么是RBAC...
  • 如果让我们自己实现...我们需要有一张角色表和权限表,分别存放角色和权限数据表 另外我们还需要一张主体跟角色的关联表,也就是需要给用户分配角色的存储表 最后我们再需要一张角色跟权限的关联表 也就是说,...
  • rbac权限管理

    2017-02-13 13:53:00
    什么是rbac : 权限管理系统 通过分配角色权限的方式 分配给 用户 权限 在一些较小时数据的时候 是直接给用户分配权限 但是 如果 用户 有10000 个 那么 就需要给 10000 个人分配权限 非常的不合理 我们可以借助 ...
  • 权限系统模块对于...从上图我们可以看出,ACL是用户和权限直接关系的,而RBAC则是通过角色间接关联用户和权限的。所以我们注意到角色是RBAC系统的一个重要属性。 什么是RBAC模型 RBAC(Role-Based Access C...
  • 本文笔者会将理论知识与自己的实践经验相结合,分享权限管理系统设计的相关知识,希望能给读者带来启发。 一、权限管理系统概述 1、权限管理系统的作用 对整个后台系统进行权限控制,目的是为了避免系统的使用者...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 309
精华内容 123
热门标签
关键字:

rbac数据权限设计