• 权限管理RBAC模型概述


    一、什么是RBAC模型

    RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。

    RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96。

    二、RBAC核心对象

    用户、角色、权限

    三、RBAC模型组成

    3.1:RBAC0

    RBAC0是基础,很多产品只需基于RBAC0就可以搭建权限模型了。在这个模型中,我们把权限赋予角色,再把角色赋予用户。用户和角色,角色和权限都是多对多的关系。用户拥有的权限等于他所有的角色持有权限之和。

    譬如我们做一款企业管理产品,可以抽象出几个角色,譬如销售经理、财务经理、市场经理等,然后把权限分配给这些角色,再把角色赋予用户。这样无论是分配权限还是以后的修改权限,只需要修改用户和角色的关系,或角色和权限的关系即可,更加灵活方便。此外,如果一个用户有多个角色,譬如王先生既负责销售部也负责市场部,那么可以给王先生赋予两个角色,即销售经理、市场经理,这样他就拥有这两个角色的所有权限。

    3.2:RBAC1

    RBAC1建立在RBAC0基础之上,在角色中引入了继承的概念,即增加角色组的概念。简单理解就是,给角色分成几个等级,用户关联角色组、角色组关联角色,角色关联权限。从而实现更细粒度的权限管理。

    3.3:RBAC2

    RBAC2同样建立在RBAC0基础之上,仅是对用户、角色和权限三者之间增加了一些限制。这些限制可以分成两类,即静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)。

    静态职责分离,如果一个任务有3个步骤,那么要求必要有至少3个不同用户处理完毕,任务才完结。又如,一个任务有2个步骤,要求必须由两个不同角色的用户来处理,且不能是同一个用户,即一个用户不可同时拥有该两个角色,这种可称之为静态互斥角色。

    动态职责分离,动态分配系统资源和功能的权限,如某些资源在特定时间才允许对某些用户开放。

    3.4:RBAC3

    RBAC3是RBAC1和RBAC2的合集,所以RBAC3既有角色分层,也包括可以增加各种限制。

    3.5:拓展RBAC

    3.5.1:针对物理资源的权限管理

        系统资源可分为逻辑资源和物理资源。逻辑资源如软件系统的菜单、页面、按钮等等;物理资源如视频文件、音频文件、pdf文件等等。其中逻辑资源可以通过权限来控制,物理资源可通过在角色下设置资源列表,通过角色关联资源列表实现,也可直接将用户和资源列表关联实现。
    

    3.5.2:增加用户组管理

         基于RBAC模型,还可以适当延展,使其更适合我们的产品。譬如增加用户组概念,用户组凌驾用户之上,是用户的一个集合。可通过增加UserGroup实现,也可以通过引入组织架构实现(即用户的管理变成了组织-部门-用户的管理)。
    

    四、RBAC模型表结构参考

    组织表、
    部门表、
    用户组表、
    用户表,
    角色组表,
    角色表、
    用户角色表,
    资源表,
    角色资源表、
    用户资源表、
    权限表、
    角色权限表。
    权限资源表

    五、引用

    https://www.cnblogs.com/guosiliang/p/13731501.html

    https://www.docin.com/p-509863257.html

    https://www.jianshu.com/p/743073111d55

    邮箱:cnaylor@163.com
    技术交流QQ群:1158377441
  • 相关阅读:
    程序员之道——编程也是一门艺术
    Spring动态获取IoC容器中管理的Bean
    SVN使用教程之——分支、合并
    WebSphere从Windows迁移至Linux出现org.dom4j.DocumentException异常:Nested exception: prolog 中不允许有内容
    Spring动态获取IoC容器中管理的Bean
    com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据
    IMP导入数据 出现ORA01691问题 解决办法
    jquery对象与Dom对象的相互转化
    json<>js
    photoshop快捷键
  • 原文地址:https://www.cnblogs.com/Naylor/p/15250940.html
Copyright © 2020-2023  润新知