RBAC系统设计

楚天乐 2183 0 条

什么是RBAC

以下内容来自百度百科

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

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

RBAC的目标

  1. 一个用户可以拥有一个或者多个角色
  2. 每个角色,可以访问指定的资源

RBAC数据库设计

  1. user表存储用户,id,账号,密码等
  2. role表存储角色信息,id,角色名字,描述,状态
  3. permission表存储所有需要控制的资源,id,name,action
  4. user_role表存储用户的身份牌,user_id, role_id, 状态。user和role是多对多关系,一个用户可以有多个身份,一个身份可以被多个用户使用
  5. role_permission表存储身份可以访问的资源,role_id,permission_id, 状态。role和permission也是多对多关系,一个role可以持有多个permission,一个permission可以被多个role使用

扩展

  1. RBAC1,在角色之间加入继承关系,方便配置角色资源。创建admin角色,并允许它访问所有资源,在创建新的角色,继承上一级角色所有权限,在权限列表上减法即可。或者反过来,创建最小权限demo角色,创建新角色时候继承上一级角色,逐级增加权限。避免权限配置出错。

  2. RBAC2, 增加权限互斥,基数约束,先决条件角色,运行时互斥

    • 权限互斥,对角色进行分组,同一个用户,不能持有同一分组中的多个角色。持金锏者不能当皇帝
    • 基数约束,同一个角色,设置最大被持有数量。比如,一个公司只能有一个ceo
    • 先决条件角色,要想增加某个角色,必须要先持有它的上一级角色权限
    • 运行时互斥,一个用户可以同时持有多个角色,但是在运行时只有一个生效
  3. RBAC3,同时包含rbac1和rbac2

参考

https://baike.baidu.com/item/%E5%9F%BA%E4%BA%8E%E8%A7%92%E8%89%B2%E7%9A%84%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6/8795406?fromtitle=RBAC&fromid=1328788&fr=aladdin
http://www.woshipm.com/pd/1150093.html



与本文相关的文章

发表我的评论
昵称 (必填)
邮箱 (必填)
网址
执行时间: 1714390511983.6 毫秒