权限管理系统(一):权限系统与RBAC模型概述-冯金伟博客园

RBAC模型概述

RBAC即角色访问控制(Role Based Access Control)

RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。
Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)
What:权限针对的对象或资源(Resource、Class)。
How:具体的权限(Privilege,正向授权与负向授权)。

RBAC模型特征

基于角色的访问控制方法(RBAC)的显著的两大特征是:

1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。

2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

RBAC支持的安全原则

最小权限原则(即细粒度控制原则)

RBAC 可将其角色配置成其完成任务所需要的最小权限集;

责任分离原则

通过调用相互独立互斥的角色来共同完成敏感的任务而体现,如要求一个计帐员和财务管理员一起参与同一个过帐;

数据抽象原则

通过权限的抽象来体现,如财务操作用借款、存款等抽象权限。

标准 RBAC 模型

NIST (美国国家标准与技术研究院)标准 RBAC 模型由4个部件模型组成,分别是基本模型RBAC0(Core RBAC)角色分级模型RBAC1(Hierarchal RBAC)角色限制模型RBAC2(Constraint RBAC)统一模型RBAC3(Combines RBAC)
RBAC0 模型如图1所示:
权限管理系统(一):权限系统与RBAC模型概述-冯金伟博客园
RBAC0 定义了能构成一个 RBAC 控制系统的最小的元素集合:

RBAC 定义了 五个基本数据元素
用户 users(USERS)
角色 roles(ROLES)
目标 objects(OBS)
操作 operations(OPS)
许可权 permissions(PRMS)

RBAC0 业务规则有:

一个用户可以对应多个角色,一个角色也可以分配给多个用户;
一个角色可以有多个许可权,一种许可权则只与一个角色对应;
用户可以发起会话,会话中可以激活多个角色来获取许可权;
用户、角色、许可权全部由超级管理员创建与指派;
一个用户拥有多个角色时,高优先级的角色权限覆盖低优先级的角色权限。

RBAC1(引入角色继承关系)、RBAC2(引入责任分离关系)、RBAC3 (角色继承+责任分离)都是先后在 RBAC0 上的扩展。
RBAC权限模型——项目实战(转)

RBAC 核心对象模型

授权模型:用户-角色-权限
 
核心动作:

创造权限
分配权限
使用权限

 
核心动作的主要参与者:

Creator 创造权限:这里完成的是 Privilege 与 Resource 的对象声明;
Administrator 分配权限:把 Privilege 与 Resource Instance 真正关联到一起,产生了 Operator (Privilege Instance)。Administrator 利用 Operator 这个基本元素,来创造他理想中的权限模型,如创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等;
User 使用权限

数据库表设计

1,用户表 保存系统用户信息,如张三、李四,字段可以有id、name、fullname、email、phone、……
2,角色表 保存角色信息,如学生、管理员,字段有id、name、……
3,权限表 保存系统的权限信息,可定义系统哪些模块公开,或者什么时段可访问,字段有id,权限名
4,用户角色表 关联用户和角色的关系表,如张三-学生,李四-管理员,字段有id、用户id、角色id,根据用户就知道所属的角色
5,角色权限表 关联角色和权限的关系表 字段信息:id,角色id,权限id
6,用户权限表 用于单独针对用户赋权,字段信息: id,用户id,  权限id
7,菜单表  总体菜单信息  字段信息:菜单id,菜单fid,菜单名,菜单代码(用于同级、同目录菜单的排序),菜单类型(0-目录 1-模块),备注,目标位置
8,权限菜单表 用于关联权限和菜单的关系表,字段信息:id,菜单id,权限id

基本思路:

用户跟角色关联
角色跟权限关联
权限跟菜单关联