zoukankan      html  css  js  c++  java
  • 权限管理系统(一):权限系统与RBAC模型概述

    RBAC模型概述

    RBAC即角色访问控制(Role Based Access Control)

    RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。
    Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)
    What:权限针对的对象或资源(Resource、Class)。
    How:具体的权限(Privilege,正向授权与负向授权)。

    RBAC模型特征

    基于角色的访问控制方法(RBAC)的显著的两大特征是:

    1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。

    2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

    RBAC支持的安全原则

    最小权限原则(即细粒度控制原则)

    RBAC 可将其角色配置成其完成任务所需要的最小权限集;

    责任分离原则

    通过调用相互独立互斥的角色来共同完成敏感的任务而体现,如要求一个计帐员和财务管理员一起参与同一个过帐;

    数据抽象原则

    通过权限的抽象来体现,如财务操作用借款、存款等抽象权限。

    标准 RBAC 模型

    NIST (美国国家标准与技术研究院)标准 RBAC 模型由4个部件模型组成,分别是基本模型RBAC0(Core RBAC)角色分级模型RBAC1(Hierarchal RBAC)角色限制模型RBAC2(Constraint RBAC)统一模型RBAC3(Combines RBAC)
    RBAC0 模型如图1所示:
    RBAC0 定义了能构成一个 RBAC 控制系统的最小的元素集合:
    • RBAC 定义了 五个基本数据元素
      1. 用户 users(USERS)
      2. 角色 roles(ROLES)
      3. 目标 objects(OBS)
      4. 操作 operations(OPS)
      5. 许可权 permissions(PRMS)
    • RBAC0 业务规则有:
      • 一个用户可以对应多个角色,一个角色也可以分配给多个用户;
      • 一个角色可以有多个许可权,一种许可权则只与一个角色对应;
      • 用户可以发起会话,会话中可以激活多个角色来获取许可权;
      • 用户、角色、许可权全部由超级管理员创建与指派;
      • 一个用户拥有多个角色时,高优先级的角色权限覆盖低优先级的角色权限。
    RBAC1(引入角色继承关系)、RBAC2(引入责任分离关系)、RBAC3 (角色继承+责任分离)都是先后在 RBAC0 上的扩展。

    RBAC 核心对象模型

    授权模型:用户-角色-权限
     
    核心动作:
    • 创造权限
    • 分配权限
    • 使用权限
     
    核心动作的主要参与者:
    • Creator 创造权限:这里完成的是 Privilege 与 Resource 的对象声明;
    • Administrator 分配权限:把 Privilege 与 Resource Instance 真正关联到一起,产生了 Operator (Privilege Instance)。Administrator 利用 Operator 这个基本元素,来创造他理想中的权限模型,如创建角色,创建用户组,给用户组分配用户,将用户组与角色关联等;
    • User 使用权限

    数据库表设计

    1,用户表 保存系统用户信息,如张三、李四,字段可以有id、name、fullname、email、phone、……
    2,角色表 保存角色信息,如学生、管理员,字段有id、name、……
    3,权限表 保存系统的权限信息,可定义系统哪些模块公开,或者什么时段可访问,字段有id,权限名
    4,用户角色表 关联用户和角色的关系表,如张三-学生,李四-管理员,字段有id、用户id、角色id,根据用户就知道所属的角色
    5,角色权限表 关联角色和权限的关系表 字段信息:id,角色id,权限id
    6,用户权限表 用于单独针对用户赋权,字段信息: id,用户id,  权限id
    7,菜单表  总体菜单信息  字段信息:菜单id,菜单fid,菜单名,菜单代码(用于同级、同目录菜单的排序),菜单类型(0-目录 1-模块),备注,目标位置
    8,权限菜单表 用于关联权限和菜单的关系表,字段信息:id,菜单id,权限id

    基本思路:

    用户跟角色关联
    角色跟权限关联
    权限跟菜单关联

  • 相关阅读:
    搭建LNAMP环境(四)- 源码安装PHP7
    搭建LNAMP环境(三)- 源码安装Apache2.4
    搭建LNAMP环境(二)- 源码安装Nginx1.10
    搭建LNAMP环境(一)- 源码安装MySQL5.6
    Yii2框架RESTful API教程(二)
    Yii2框架RESTful API教程(一)
    PHP实现RESTful风格的API实例(三)
    centos7部署elk集群(filebeat+kafka+logstash+elasticsearch+kibana)
    centos7部署kafka+zookeeper集群
    ElasticSearch7.5.2通过模板管理索引副本数、分片
  • 原文地址:https://www.cnblogs.com/shamo89/p/6684578.html
Copyright © 2011-2022 走看看