zoukankan      html  css  js  c++  java
  • 理解什么是Web后台的RBAC模型

    一般的Web项目,都有分管理员和用户,其中就需要有不同的权限。

    权限就是对项目资源的控制,对web应用来说,也就是对url的控制,你这个使用者能看到多少页面,操作多少功能。

    不同Web项目系统关于权限的应用复杂程序不一样,现在比较流行的权限模型,基本上都是以RBAC模型为基础进行扩展的。


    一、

    RBAC,Role-Based Access Control,基于角色的访问控制。

    可以理解为:Who对What进行How的操作,其中

    who——是角色的拥有者(如:UserRole

    what——是资源或对象(ResourceClass)

    how——是角色,不同的角色拥有不同的资源和权限

     


    二、

    RBAC其实是一种分析模型,主要分为:

    - 基本模型RBAC0(Core RBAC)、

    - 角色分层模型RBAC1(Hierarchal RBAC)、

    - 角色限制模型RBAC2(Constraint RBAC)、

    - 统一模型RBAC3(Combines RBAC)

     

    RBAC0,它是RBAC0的核心,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。

    RBAC0定义了能构成RBAC控制系统的最小的元素集合,RBAC0由四部分构成:

        a、用户(User

        b、角色(Role

        c、会话(Session

        d、许可(Pemission

    其中许可Permission又包括“操作”和“控制对象”。其中许可Permission被赋予角色Role,而不是用户User,

    当一个角色Role被指定给一个用户User时,此用户User就拥有了该角色Role所包含的许可Permission。

    会话Session是动态的概念,用户必须通过会话才可以设置角色,是用户与激活的角色之间的映射关系。

    RBAC1,它是RBAC角色的分层hierarchy模型,RBAC1建立在RBAC0基础之上,在角色中引入了继承prototype的概念,有了继承那么角色Role就有了上下级或者等级关系

    RBAC2,它是RBAC的约束Constraint模型,RBAC2也是建立的RBAC0的基础之上的,在RBAC0基础上加入了约束的概念,

    主要引入了静态职责分离SSD(Static Separation of Duty)和动态职责分离DSD(Dynamic Separation of Duty)

    静态职责分离SSD:

    是用户和角色的指派阶段加入的,主要是对用户和角色有如下约束:

    a、互斥角色:同一个用户在两个互斥角色中只能选择一个

    b、基数约束:一个用户拥有的角色是有限的,一个角色拥有的许可也是有限的

    c、先决条件约束:用户想要获得高级角色,首先必须拥有低级角色

    动态职责分离DSD:

    是会话和角色之间的约束,可以动态的约束用户拥有的角色,如一个用户可以拥有两个角色,但是运行时只能激活一个角色。

    RBAC3,它是RBAC1RBAC2合集,是既有角色分层又有约束的一种模型


    基本上,普通的web项目应用,

    只需要在数据库新建一张role表、user表、resource表、role_resource_rel表、role_user_rel表即可表示DBRA模型

  • 相关阅读:
    2014年10月10号——数据类型之间的转换
    2014年10月9日——语言基础2
    2014年10月9日——语言基础1
    2014年10月8日——进制转换
    js
    SQL的数据类型
    SQL,学习基础2
    SQL数据库的备份和恢复
    用java调用oracle存储过程总结(转)
    用JAVA调用Mysql数据库,数据存储过程的封装与调用;
  • 原文地址:https://www.cnblogs.com/hoanfir/p/9088668.html
Copyright © 2011-2022 走看看