基于RBAC的权限管理在地震数据共享平台系统中的设计与实现

2020-07-09 22:13张鑫杨振中刘帅黄猛
现代信息科技 2020年2期
关键词:访问控制模型用户

张鑫 杨振中 刘帅 黄猛

摘  要:基于角色的访问控制是目前比较流行的一种权限管理方案,其简化了用户与权限的关系,易扩展、易维护,能够很好地解决复杂ERP系统的权限管理问题。使用ThinkPHP 5.0开发框架,在RBAC基础上成功设计并实现的地震数据共享平台系统权限管理模块有效降低了系统权限管理的复杂性,很好地解决了本系统面向多用户,重要数据的保密等众多高级别要求。

关键词:RBAC;ERP;ThinkPHP 5.0;权限管理;地震数据共享平台系统

中图分类号:TP311.52;P631.4+35      文献标识码:A 文章编号:2096-4706(2020)02-0013-03

Abstract:Role-based Access Control  is a popular scheme of rights management. RBAC simplifies the relationship between users and rights,is easy to expand and maintain,and can solve the rights management problems of complex ERP system. Using ThinkPHP 5.0 development framework,the system authority management module of seismic data sharing platform,which is successfully designed and implemented on the basis of RBAC,effectively reduces the complexity of system authority management,and solves many high-level requirements of the system,such as multi-user oriented,confidentiality of important data,etc.

Keywords:RBAC;ERP;ThinkPHP 5.0;authority management;seismic data sharing platform system

0  引  言

在大数据时代背景下,数据资源丰富,数据共享新模式应运而生。地震数据作为大数据时代中的一员,它有着很大的影响力,但一直以来人们所了解的地震数据微乎其微,关注度也很低。为此本文提出了地震数据共享平台这一解决方案。然而,地震数据有着特殊性,很多的数据是保密的,普通用户和地震工作者在本系统上所看到的数据是不同的。因此本系统在开发过程中引入了基于RBAC(基于角色的访问控制,Role-Based Access Control)的权限管理。

针对本系统的实际需求,以ThinkPHP 5.0为后端开发框架,采用PHP程序语言,底层数据库采用MySQL数据库,开发出了B/S模式下的地震数据共享平台系统。采用RBAC权限管理,有效降低了系统权限管理的复杂性,大幅提高了系统的安全性。

1  RBAC介紹

RBAC模型是20世纪90年代研究出来的一种新模型,但其实在20世纪70年代的多用户计算时期,这种思想就已经被提出来,直到20世纪90年代中后期,研究团体开始对RBAC的重视,并先后提出了许多类型的RBAC模型。其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。

RBAC基本概念:RBAC是基于角色的权限控制,角色绑定权限,用户绑定角色从而控制用户的权限,它们之间都是多对多的关系,实现了用户和权限的逻辑分离,极大地方便了权限的管理。

(1)User(用户):每个用户都有唯一的ID标识,并被授予不同的角色;

(2)Role(角色):不同角色具有不同的权限;

(3)Permission(权限):访问权限;

(4)用户-角色映射:用户和角色之间的映射关系;

(5)角色-权限映射:角色和权限之间的映射。

2  RBAC在系统中的应用

2.1  地震数据共享平台

伴随着大数据时代数据共享模式的诞生,地震数据共享迎来新的发展,为此,本文提出了地震数据共享平台这一解决方案。地震数据共享平台系统分为两部分,一部分是面向地震行业工作者的地震基础地理数据的上传下载及地震专题图的制作发布,另一部分是面向大众的地震数据(包括地震工作者制作并发布的地震专题图)展示及相关数据分析展示。系统权限管理便是本系统的一大核心功能模块,也是本系统的特色。

2.1.1  系统总体框架设计

本系统采用当下流行的Vue+ThinkPHP 5.0框架设计开发,Vue作为前端开发框架,ThinkPHP 5.0作为后端开发框

架,底层数据库使用MySQL数据库。系统使用MVC设计模式,前后端分离技术、Vue开发视图层(View)、ThinkPHP

5.0开发模型层(Model)和控制层(Controller),通过Axios连接系统前后端。

2.1.2  系统流程概述

进入系统时,任何用户都会先进入面向大众的用户界面,可以查看地震数据及相关数据分析结果。地震工作者和管理员通过登录进入面向地震工作者的后台系统,地震工作人员和专家通过在该系统下上传或下载地震基础地理数据,制作地震专题图,最后发布专题图,管理员可以在该系统下进行用户权限修改以及对专家已发布的专题图进行撤回等操作。

2.1.3  系统用户角色及权限划分

根据用户身份的不同,将用户划分为如下几类,并说明用户的相应权限:

(1)系统超级管理员:拥有所有权限;

(2)地震工作管理员:拥有查看专题图制作人员发布的专题图、撤回已经发布的专题图、地震基础地理数据上传的权限;

(3)地震专题图制作成员:在专题图未发布前拥有专题图的制作、修改、删除、查看,地震基础地理数据下载的权限;

(4)普通用户:只拥有查看用户界面数据的权限。

2.1.4  系统权限管理模块的选择

目前主流的权限系统模块有五种:RBAC、ACL、DAC、MAC、ABAC,分别对应不同的应用场景,其他四种模型的介绍及使用场景如下:

(1)访问控制列表(ACL)规定资源可以被哪些主体进行哪些操作,在ACL权限模型下,权限管理是围绕资源来设定的。系统可以针对不同页面设定可以访问的用户,该模型适用于部门隔离场景下的权限管理;

(2)自主访问控制(DAC)规定资源可以被哪些主体进行哪些操作,同时,主体可以将资源、操作的权限,授予其他主体。该模型将授权的权力下放,允许拥有权限的用户,可以自主地将权限授予其他用户,该模型适合文件系统场景下的权限管理;

(3)强制访问控制(MAC)规定,当一个操作同时满足规定资源可以被哪些类别的主体进行哪些操作与规定,资源可以被哪些类别的主体进行哪些操作时,允许操作。MAC强调安全性,在系统中会对资源与主体,都划分类别与等级,该模型适合保密系统场景下的权限管理;

(4)基于属性的访问控制(ABAC)规定哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些操作。ABAC可以发挥权限系统最大的灵活性,但在灵活的同时,如果不对策略加以管理,也有可维护性的问题,该模型适用于防火墙场景下的权限管理。

本系统的核心部分是数据,所以满足本系统需要的权限管理应该是可以对数据进行不同划分及有效的管理。通过对比五种不同的模型及实际系统需求,最终本系统选择RBAC作为系统的权限管理模型。

2.2  RBAC在系统中的具体实现

2.2.1  系统数据库表设计

本系统在RBAC基本概念的基础上对数据库表的设计做了优化,设计了三张数据库表,分别是:用户表(User)、角色表(Role)、权限表(Permission)。用户表设有用户的唯一标识userid字段,角色表设有角色的唯一标识roleid字段以及关联用户表中的userid字段,权限表中设有权限(permission)字段以及关联角色表中的roleid字段。

2.2.2  权限管理实现流程

用户登录时缓存用户登录信息,后台获取缓存中用户的登录信息,通过用户的登录账号,在User表中查找用户userid,通过userid在Role表中查找用户roleid,通过roleid在Permission表中使用ThinkPHP 5.0模糊查詢,查找是否有相应的操作权限,如果有,当用户在前台触发相应事件时,执行该权限,如果没有,则返回“nopermission”,在前台不显示该操作。

2.2.3  专题图撤回权限管理接口的实现

本系统使用ThinkPHP 5.0作为后端开发框架,基于ThinkPHP 5.0实现了权限管理的接口,下文详细介绍了地震工作管理员与专题图制作成员在地震专题图撤回操作所进行的权限管理,拥有专题图撤回权限的是地震工作管理员,专题图制作成员无此权限,核心代码如下:

//专题图撤回

public function recall($data)

{

//撤回权限对应的值为recall

$recallvalue = "recall";

//获取缓存里的值得到用户的登录账号信息

$cachevalue = Cache::get(‘useridentity);

//根据获取到的用户登录账号查找用户表里该用户的userid

$Uservalue=Db::table(‘User)->where(‘useraccount,$cachevalue[‘usera])->find();

//根据获取到的userid查找角色表里该用户的roleid

$Rolevalue=Db::table(‘Role)->where(‘userid,$Uservalue[‘userid])->find();

//根据获取到的roleid查找权限表里该角色的权限,同时使用ThinkPHP5.0的模糊查询,查看是否有撤回专题图的权限

$Permissionvalue=Db::table(‘Permission)->where(‘roleid,$Rolevalue[‘roleid])->where(‘permission,like,"%".$recallvalue."%")->find();

//判断$Permissionvalue是否为空

if ($Permissionvalue)

{

//若该用户有撤回专题图的权限,则撤回专题图,并返回"专题图撤回成功"

Db::table(‘Thematicmap)->where(‘mapid,$data [‘idvalue])->delete();

return "专题图撤回成功";

}else

{

//若该用户没有撤回专题图的权限,则返回"您没有撤回专题图操作的权限"

return "nopermission";

}

}

3  结  论

权限管理作为ERP系统的核心部分受到广泛研究与应用,基于角色的访问控制作为当下比较流行的一种权限管理方案,能够很好地解决复杂ERP系统的权限管理问题。本文详细介绍了RBAC在地震数据共享平台系统中设计与实现,该权限管理的实现,有效降低了系统权限管理的复杂性,很好地解决了本系统面向多用户、重要数据的保密等众多高级别要求。

参考文献:

[1] 范小康,何连跃,王晓川,等.一种基于RBAC模型的角色管理方法 [J].计算机研究与发展,2012,49(S1):211-215.

[2] 冀汶莉.基于RBAC模型的权限管理系统的研究与应用 [J].微电子学与计算机,2007(8):86-88.

[3] 倪东英,张晓丽.基于RBAC的用户权限管理的设计与实现 [J].济南大学学报(自然科学版),2010,24(2):167-171.

[4] 汤文亮,李科.基于RBAC模型的权限管理改进研究与实现 [J].计算机工程与设计,2015,36(5):1181-1186+1232.

[5] 罗钧,赵传智,汪飞.基于RBAC模型的权限高效管理方法 [J].计算机研究与发展,2016,53(5):1000-1008.

[6] 张凯,仲梁维.基于RBAC的权限管理在销售合同管理系统中的设计与实现 [J].制造业自动化,2012,34(4):28-30.

作者简介:张鑫(2000.12-),男,汉族,安徽芜湖人,本科,学士学位,研究方向:人工智能和软件开发。

猜你喜欢
访问控制模型用户
您拨打的用户已恋爱,请稍后再哭
自制空间站模型
基于用户和电路的攻击识别方法
云的访问控制研究
信用卡资深用户
模型小览(二)
云计算访问控制技术研究综述
圆周运动与解题模型
离散型随机变量分布列的两法则和三模型
校园骨干层网络交换机的访问控制技术