RBAC权限模型设计

基于角色的访问控制(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权限设计(模型示例系统)模型系统图如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sshm_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值