基于角色的访问控制(RBAC)是实施面向企业安全策略的一种有效的访问控制方式。

其基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。

基本概念

RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。

Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)

What:权限针对的对象或资源(Resource、Class)。

How:具体的权限(Privilege,正向授权与负向授权)。

Operator:操作。表明对What的How操作。也就是Privilege+Resource

Role:角色,一定数量的权限的集合。权限分配的单位与载体,目的是隔离User与Privilege的逻辑关系.

Group:用户组,权限分配的单位与载体。权限不考虑分配给特定的用户而给组。组可以包括组(以实现权限的继承),也可以包含用户,组内用户继承组的权限。User与Group是多对多的关系。Group可以层次化,以满足不同层级权限控制的要求。

RBAC的关注点在于Role和User, Permission的关系。称为User assignment(UA)和Permission assignment(PA).关系的左右两边都是Many-to-Many关系。就是user可以有多个role,role可以包括多个user。

简单的说在用户和资源之间引入了一个角色,不直接把用户和资源关联起来,而是用角色和用户之间关联,角色和资源之间关联,在创建用户时给用户分配一个角色,而不是直接给他分配权限,而角色会对应相应的可以访问的资源,而资源里放的就是所能使用的权限。

如下图:

数据库设计:

一个用户可以对应多个角色、一个角色也可以对应多个用户,一个角色可以访问多个资源,一个资源也可以被多个角色共同使用。所以用户和角色、角色和资源之间都是多对多的关系

用户表字段一般有以下几个:

主键id、账号、密码、邮箱、性别等。

角色表字段一般有:

主键id、角色名称、角色描述字段

用户和角色之间的关联表:

用户id、角色id

资源表字段一般有:

主键id、菜单名称、父级菜单id、url路径、菜单图标、权限字符串(唯一功能点:可选)

资源表和角色表之间的关联表:

菜单id、角色id

在进行关联表之间的更新操作时:采用先删除后添加

通过以上的数据库设计,进行rbac权限设计(模型示例系统)模型系统图如下:

RBAC权限模型设计相关推荐

  1. 后台产品基本功:RBAC权限后台角色与权限设计

    原创: Kevin改变世界的点滴 Kevin改变世界的点滴 昨天 后台产品经理在设计系统中,随着业务与用户量起来后.都会考虑系统的角色与权限设计.借此经典的角色 与权限设计:RBAC,基于角色的权限访 ...

  2. RBAC权限管理总结

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 角色访问控制(RBAC) 引入了Role的概念,目的是为了隔离User(即动作主体,Subject)与Privile ...

  3. Spring Security 实战干货: RBAC权限控制概念的理解

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  4. php注解rbac,PHP的RBAC权限详解

    本文主要和大家分享PHP的RBAC权限详解,希望能帮助到大家,首先我们应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户 ...

  5. RBAC 权限设计(转载)

    来源 :https://blog.csdn.net/rocher88/article/details/43190743 这是我在网上找的一些设计比较好的RBAC权限管理 不知道,像新浪.搜狐.网易.百 ...

  6. RBAC权限模型及数据权限扩展的实践

    原文:RBAC权限模型及数据权限扩展的实践 话说大家对RBAC权限模型应该是耳熟能详了.但真正用的好的并不多.并且原始的RBAC模型并不包括数据权限的管理,网上也差点儿没有相关的文章可以參考.本人经过 ...

  7. yii2 rbac权限控制之菜单menu详细教程

    为什么80%的码农都做不了架构师?>>>    作者:白狼 出处:http://www.manks.top/yii2_rbac_menu.html本文版权归作者,欢迎转载,但未经作者 ...

  8. RBAC权限模型库表设计

    本文来说下RBAC权限模型的库表应该如何来设计 文章目录 概述 概述

  9. rbac权限管理5张表_thinkphp框架下基于rbac的后台程序

    最近接了一个小项目,给一家车辆运营管理的公司做一个小的后台管理程序(说是推进无纸化办公模式). 项目的情况是,根据不同部门,不同权限的员工给予不同的操作许可. 增加实时录入功能(搭配移动端使用). 像 ...

最新文章

  1. 恭喜你发现了宝藏,编程习惯-日积月累
  2. python之互斥锁
  3. asp.net代码中修改web.config节点
  4. 华硕老毛子(Padavan)——校园局域网路由表设置(校园网优先局域网访问)
  5. 出现这些迹象,说明你面试可能没戏了
  6. 剑指offer (03):数组中重复的数字 (C++ Python 实现)
  7. 语句删除数据库表中有默认字段值的字段
  8. 《C专家编程》阅读笔记
  9. H3C 无线控制器WX2510H-F与无线接入点WA5320-C-EI的安装与关联详细指导书
  10. u盘的大小在计算机无法显示,Win10电脑插入U盘后没有显示可用容量打不开无法读取如何解决...
  11. “超人”为什么最后1秒拯救地球?
  12. Zotero+onedrive同步问题
  13. 以前端的角度出发做好SEO需要考虑什么
  14. 年底了,一起来撸个视频播放器吧!
  15. GIS基础(1)空间参考
  16. RecyclerView系列之加载更多
  17. 网站ftp上传工具,六款值得你去使用的网站ftp上传工具
  18. 袋鼠妈妈和植物主义哪个适合孕妇用?主要看这几点
  19. html如何自动转到ie打开,在HTML怎么修改代码以达到在点击超链接时默认以IE浏览器打开?...
  20. 个人导航网源码 官方权威版本

热门文章

  1. C#使用ManagementClass获取计算器硬件信息
  2. arduino 1.8.4 安装包
  3. 宁海县妇幼保健医院灾备建设
  4. django orm mysql_django指定mysql数据库 ORM查询
  5. 正则表达式 密码需至少包含数字、字母、符号中的2种
  6. 电脑上什么软件可以录制视频
  7. 小主机折腾记12 HP 285G3 PRO MT
  8. Unity ShaderLab: 2D/3D Wave Flag Shader(飘动旗帜)的实现
  9. Siamese network
  10. [RK3399][Android8.1] 调试记录 --- LT9611驱动调试