zoukankan      html  css  js  c++  java
  • 基于角色的权限访问控制初步

    基于角色的权限访问控制(Role-Based Access Control)

    角色访问控制(RBAC)引入了role的概念,目的是为了隔离user(即动作主体,subject)与privilege(权限,表示对resource的一个操作,即operation+resource)。role作为一个用户(user)与权限(privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予role而不是直接给user或 group。privilege是权限颗粒,由operation和resource组成,表示对resource的一个operation。role-privilege是many-to-many的关系,这就是权限的核心。

    基于角色的访问控制方法(RBAC)的显著的两大特征是:
    1. 由于角色-权限之间的变化比角色-用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。
    2. 灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

    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。

    以下内容感觉偏理论,不是很好理解,大致看一下就可以了。但是上面权限的RBAC最基本的模型还是要熟记和理解的。加了一个中间层就隔离的变化,真的是牛叉。现在看来这种模型似乎是理所当然的,但是对比这个模型和传统的权限控制模型可以说是很叼了。以后遇到类似的场景也可以通过加入中间层。
    一、RBAC96模型


    RBAC96模型家族,其中包括了RBAC0~RBAC3四个概念模型。它们之间的关系如下图:

    RBAC0定义了能构成一个RBAC控制系统的最小的元素集合

    在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、 RBAC2、RBAC3都是先后在RBAC0上的扩展。RBAC0模型如下图所示:


    RBAC1 引入角色间的继承关系
    角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
    RBAC2 模型中添加了责任分离关系
    RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可
    RBAC3 包含了RBAC1和RBAC2
    既提供了角色间的继承关系,又提供了责任分离关系。RBAC3模型如下图:

    二、ARBAC97模型
    ARBAC97模型是基于角色的角色管理模型,包括三个部分:
    URA97:用户-角色管理模型,该组件涉及用户指派关系UA的管理,该关系把用户与角色管理在一起。对该关系的修改权由管理角色,这样,管理角色中的成员有权管理正规角色中的成员关系。
    PRA97:权限-角色管理模型。该组件设计角色许可证的指派与撤销。从角色的观点来看,用户和许可权有类似的特点,它们都是由角色联系在一起的实在实体。
    RRA97:角色-层次管理模型,为了便于对角色的管理,对角色又进行了分类。该组件设计3类角色,它们是:
    1、能力(Abilitier)角色--仅以许可权和其它能力作为成员的角色
    2、组(Groups)角色--仅以用户和其它组为成员的一类角色
    3、UP-角色--表示用户与许可权的角色,这类角色对其成员没有限制,成员可以是用户、角色、许可权、能力、组或其它UP-角色

    下面是我之前基于RBAC3设计的一个图:

  • 相关阅读:
    EBS SQL > Form & Report
    oracle sql 优化分析点
    MRP 物料需求计划
    MRPII 制造资源计划
    Barcode128 应用实务
    Oracle SQL语句优化技术分析
    APPSQLAP10710 Online accounting could not be created. AP Invoice 无法创建会计分录
    Oracle数据完整性和锁机制
    ORACLE Responsibility Menu Reference to Other User
    EBS 常用 SQL
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9026646.html
Copyright © 2011-2022 走看看