張鑫 楊振中 劉帥 黃猛
摘? 要:基于角色的訪問控制是目前比較流行的一種權限管理方案,其簡化了用戶與權限的關系,易擴展、易維護,能夠很好地解決復雜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-),男,漢族,安徽蕪湖人,本科,學士學位,研究方向:人工智能和軟件開發。