張鑫 楊振中 劉帥 黃猛
摘? 要:基于角色的訪問控制是目前比較流行的一種權(quán)限管理方案,其簡化了用戶與權(quán)限的關(guān)系,易擴(kuò)展、易維護(hù),能夠很好地解決復(fù)雜ERP系統(tǒng)的權(quán)限管理問題。使用ThinkPHP 5.0開發(fā)框架,在RBAC基礎(chǔ)上成功設(shè)計(jì)并實(shí)現(xiàn)的地震數(shù)據(jù)共享平臺系統(tǒng)權(quán)限管理模塊有效降低了系統(tǒng)權(quán)限管理的復(fù)雜性,很好地解決了本系統(tǒng)面向多用戶,重要數(shù)據(jù)的保密等眾多高級別要求。
關(guān)鍵詞:RBAC;ERP;ThinkPHP 5.0;權(quán)限管理;地震數(shù)據(jù)共享平臺系統(tǒng)
中圖分類號:TP311.52;P631.4+35? ? ? 文獻(xiàn)標(biāo)識碼: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? 引? 言
在大數(shù)據(jù)時代背景下,數(shù)據(jù)資源豐富,數(shù)據(jù)共享新模式應(yīng)運(yùn)而生。地震數(shù)據(jù)作為大數(shù)據(jù)時代中的一員,它有著很大的影響力,但一直以來人們所了解的地震數(shù)據(jù)微乎其微,關(guān)注度也很低。為此本文提出了地震數(shù)據(jù)共享平臺這一解決方案。然而,地震數(shù)據(jù)有著特殊性,很多的數(shù)據(jù)是保密的,普通用戶和地震工作者在本系統(tǒng)上所看到的數(shù)據(jù)是不同的。因此本系統(tǒng)在開發(fā)過程中引入了基于RBAC(基于角色的訪問控制,Role-Based Access Control)的權(quán)限管理。
針對本系統(tǒng)的實(shí)際需求,以ThinkPHP 5.0為后端開發(fā)框架,采用PHP程序語言,底層數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫,開發(fā)出了B/S模式下的地震數(shù)據(jù)共享平臺系統(tǒng)。采用RBAC權(quán)限管理,有效降低了系統(tǒng)權(quán)限管理的復(fù)雜性,大幅提高了系統(tǒng)的安全性。
1? RBAC介紹
RBAC模型是20世紀(jì)90年代研究出來的一種新模型,但其實(shí)在20世紀(jì)70年代的多用戶計(jì)算時期,這種思想就已經(jīng)被提出來,直到20世紀(jì)90年代中后期,研究團(tuán)體開始對RBAC的重視,并先后提出了許多類型的RBAC模型。其中以美國George Mason大學(xué)信息安全技術(shù)實(shí)驗(yàn)室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公認(rèn)。
RBAC基本概念:RBAC是基于角色的權(quán)限控制,角色綁定權(quán)限,用戶綁定角色從而控制用戶的權(quán)限,它們之間都是多對多的關(guān)系,實(shí)現(xiàn)了用戶和權(quán)限的邏輯分離,極大地方便了權(quán)限的管理。
(1)User(用戶):每個用戶都有唯一的ID標(biāo)識,并被授予不同的角色;
(2)Role(角色):不同角色具有不同的權(quán)限;
(3)Permission(權(quán)限):訪問權(quán)限;
(4)用戶-角色映射:用戶和角色之間的映射關(guān)系;
(5)角色-權(quán)限映射:角色和權(quán)限之間的映射。
2? RBAC在系統(tǒng)中的應(yīng)用
2.1? 地震數(shù)據(jù)共享平臺
伴隨著大數(shù)據(jù)時代數(shù)據(jù)共享模式的誕生,地震數(shù)據(jù)共享迎來新的發(fā)展,為此,本文提出了地震數(shù)據(jù)共享平臺這一解決方案。地震數(shù)據(jù)共享平臺系統(tǒng)分為兩部分,一部分是面向地震行業(yè)工作者的地震基礎(chǔ)地理數(shù)據(jù)的上傳下載及地震專題圖的制作發(fā)布,另一部分是面向大眾的地震數(shù)據(jù)(包括地震工作者制作并發(fā)布的地震專題圖)展示及相關(guān)數(shù)據(jù)分析展示。系統(tǒng)權(quán)限管理便是本系統(tǒng)的一大核心功能模塊,也是本系統(tǒng)的特色。
2.1.1? 系統(tǒng)總體框架設(shè)計(jì)
本系統(tǒng)采用當(dāng)下流行的Vue+ThinkPHP 5.0框架設(shè)計(jì)開發(fā),Vue作為前端開發(fā)框架,ThinkPHP 5.0作為后端開發(fā)框
架,底層數(shù)據(jù)庫使用MySQL數(shù)據(jù)庫。系統(tǒng)使用MVC設(shè)計(jì)模式,前后端分離技術(shù)、Vue開發(fā)視圖層(View)、ThinkPHP
5.0開發(fā)模型層(Model)和控制層(Controller),通過Axios連接系統(tǒng)前后端。
2.1.2? 系統(tǒng)流程概述
進(jìn)入系統(tǒng)時,任何用戶都會先進(jìn)入面向大眾的用戶界面,可以查看地震數(shù)據(jù)及相關(guān)數(shù)據(jù)分析結(jié)果。地震工作者和管理員通過登錄進(jìn)入面向地震工作者的后臺系統(tǒng),地震工作人員和專家通過在該系統(tǒng)下上傳或下載地震基礎(chǔ)地理數(shù)據(jù),制作地震專題圖,最后發(fā)布專題圖,管理員可以在該系統(tǒng)下進(jìn)行用戶權(quán)限修改以及對專家已發(fā)布的專題圖進(jìn)行撤回等操作。
2.1.3? 系統(tǒng)用戶角色及權(quán)限劃分
根據(jù)用戶身份的不同,將用戶劃分為如下幾類,并說明用戶的相應(yīng)權(quán)限:
(1)系統(tǒng)超級管理員:擁有所有權(quán)限;
(2)地震工作管理員:擁有查看專題圖制作人員發(fā)布的專題圖、撤回已經(jīng)發(fā)布的專題圖、地震基礎(chǔ)地理數(shù)據(jù)上傳的權(quán)限;
(3)地震專題圖制作成員:在專題圖未發(fā)布前擁有專題圖的制作、修改、刪除、查看,地震基礎(chǔ)地理數(shù)據(jù)下載的權(quán)限;
(4)普通用戶:只擁有查看用戶界面數(shù)據(jù)的權(quán)限。
2.1.4? 系統(tǒng)權(quán)限管理模塊的選擇
目前主流的權(quán)限系統(tǒng)模塊有五種:RBAC、ACL、DAC、MAC、ABAC,分別對應(yīng)不同的應(yīng)用場景,其他四種模型的介紹及使用場景如下:
(1)訪問控制列表(ACL)規(guī)定資源可以被哪些主體進(jìn)行哪些操作,在ACL權(quán)限模型下,權(quán)限管理是圍繞資源來設(shè)定的。系統(tǒng)可以針對不同頁面設(shè)定可以訪問的用戶,該模型適用于部門隔離場景下的權(quán)限管理;
(2)自主訪問控制(DAC)規(guī)定資源可以被哪些主體進(jìn)行哪些操作,同時,主體可以將資源、操作的權(quán)限,授予其他主體。該模型將授權(quán)的權(quán)力下放,允許擁有權(quán)限的用戶,可以自主地將權(quán)限授予其他用戶,該模型適合文件系統(tǒng)場景下的權(quán)限管理;
(3)強(qiáng)制訪問控制(MAC)規(guī)定,當(dāng)一個操作同時滿足規(guī)定資源可以被哪些類別的主體進(jìn)行哪些操作與規(guī)定,資源可以被哪些類別的主體進(jìn)行哪些操作時,允許操作。MAC強(qiáng)調(diào)安全性,在系統(tǒng)中會對資源與主體,都劃分類別與等級,該模型適合保密系統(tǒng)場景下的權(quán)限管理;
(4)基于屬性的訪問控制(ABAC)規(guī)定哪些屬性的主體可以對哪些屬性的資源在哪些屬性的情況下進(jìn)行哪些操作。ABAC可以發(fā)揮權(quán)限系統(tǒng)最大的靈活性,但在靈活的同時,如果不對策略加以管理,也有可維護(hù)性的問題,該模型適用于防火墻場景下的權(quán)限管理。
本系統(tǒng)的核心部分是數(shù)據(jù),所以滿足本系統(tǒng)需要的權(quán)限管理應(yīng)該是可以對數(shù)據(jù)進(jìn)行不同劃分及有效的管理。通過對比五種不同的模型及實(shí)際系統(tǒng)需求,最終本系統(tǒng)選擇RBAC作為系統(tǒng)的權(quán)限管理模型。
2.2? RBAC在系統(tǒng)中的具體實(shí)現(xiàn)
2.2.1? 系統(tǒng)數(shù)據(jù)庫表設(shè)計(jì)
本系統(tǒng)在RBAC基本概念的基礎(chǔ)上對數(shù)據(jù)庫表的設(shè)計(jì)做了優(yōu)化,設(shè)計(jì)了三張數(shù)據(jù)庫表,分別是:用戶表(User)、角色表(Role)、權(quán)限表(Permission)。用戶表設(shè)有用戶的唯一標(biāo)識userid字段,角色表設(shè)有角色的唯一標(biāo)識roleid字段以及關(guān)聯(lián)用戶表中的userid字段,權(quán)限表中設(shè)有權(quán)限(permission)字段以及關(guān)聯(lián)角色表中的roleid字段。
2.2.2? 權(quán)限管理實(shí)現(xiàn)流程
用戶登錄時緩存用戶登錄信息,后臺獲取緩存中用戶的登錄信息,通過用戶的登錄賬號,在User表中查找用戶userid,通過userid在Role表中查找用戶roleid,通過roleid在Permission表中使用ThinkPHP 5.0模糊查詢,查找是否有相應(yīng)的操作權(quán)限,如果有,當(dāng)用戶在前臺觸發(fā)相應(yīng)事件時,執(zhí)行該權(quán)限,如果沒有,則返回“nopermission”,在前臺不顯示該操作。
2.2.3? 專題圖撤回權(quán)限管理接口的實(shí)現(xiàn)
本系統(tǒng)使用ThinkPHP 5.0作為后端開發(fā)框架,基于ThinkPHP 5.0實(shí)現(xiàn)了權(quán)限管理的接口,下文詳細(xì)介紹了地震工作管理員與專題圖制作成員在地震專題圖撤回操作所進(jìn)行的權(quán)限管理,擁有專題圖撤回權(quán)限的是地震工作管理員,專題圖制作成員無此權(quán)限,核心代碼如下:
//專題圖撤回
public function recall($data)
{
//撤回權(quán)限對應(yīng)的值為recall
$recallvalue = "recall";
//獲取緩存里的值得到用戶的登錄賬號信息
$cachevalue = Cache::get(‘useridentity);
//根據(jù)獲取到的用戶登錄賬號查找用戶表里該用戶的userid
$Uservalue=Db::table(‘User)->where(‘useraccount,$cachevalue[‘usera])->find();
//根據(jù)獲取到的userid查找角色表里該用戶的roleid
$Rolevalue=Db::table(‘Role)->where(‘userid,$Uservalue[‘userid])->find();
//根據(jù)獲取到的roleid查找權(quán)限表里該角色的權(quán)限,同時使用ThinkPHP5.0的模糊查詢,查看是否有撤回專題圖的權(quán)限
$Permissionvalue=Db::table(‘Permission)->where(‘roleid,$Rolevalue[‘roleid])->where(‘permission,like,"%".$recallvalue."%")->find();
//判斷$Permissionvalue是否為空
if ($Permissionvalue)
{
//若該用戶有撤回專題圖的權(quán)限,則撤回專題圖,并返回"專題圖撤回成功"
Db::table(‘Thematicmap)->where(‘mapid,$data [‘idvalue])->delete();
return "專題圖撤回成功";
}else
{
//若該用戶沒有撤回專題圖的權(quán)限,則返回"您沒有撤回專題圖操作的權(quán)限"
return "nopermission";
}
}
3? 結(jié)? 論
權(quán)限管理作為ERP系統(tǒng)的核心部分受到廣泛研究與應(yīng)用,基于角色的訪問控制作為當(dāng)下比較流行的一種權(quán)限管理方案,能夠很好地解決復(fù)雜ERP系統(tǒng)的權(quán)限管理問題。本文詳細(xì)介紹了RBAC在地震數(shù)據(jù)共享平臺系統(tǒng)中設(shè)計(jì)與實(shí)現(xiàn),該權(quán)限管理的實(shí)現(xiàn),有效降低了系統(tǒng)權(quán)限管理的復(fù)雜性,很好地解決了本系統(tǒng)面向多用戶、重要數(shù)據(jù)的保密等眾多高級別要求。
參考文獻(xiàn):
[1] 范小康,何連躍,王曉川,等.一種基于RBAC模型的角色管理方法 [J].計(jì)算機(jī)研究與發(fā)展,2012,49(S1):211-215.
[2] 冀汶莉.基于RBAC模型的權(quán)限管理系統(tǒng)的研究與應(yīng)用 [J].微電子學(xué)與計(jì)算機(jī),2007(8):86-88.
[3] 倪東英,張曉麗.基于RBAC的用戶權(quán)限管理的設(shè)計(jì)與實(shí)現(xiàn) [J].濟(jì)南大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,24(2):167-171.
[4] 湯文亮,李科.基于RBAC模型的權(quán)限管理改進(jìn)研究與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2015,36(5):1181-1186+1232.
[5] 羅鈞,趙傳智,汪飛.基于RBAC模型的權(quán)限高效管理方法 [J].計(jì)算機(jī)研究與發(fā)展,2016,53(5):1000-1008.
[6] 張凱,仲梁維.基于RBAC的權(quán)限管理在銷售合同管理系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn) [J].制造業(yè)自動化,2012,34(4):28-30.
作者簡介:張鑫(2000.12-),男,漢族,安徽蕪湖人,本科,學(xué)士學(xué)位,研究方向:人工智能和軟件開發(fā)。