李衛(wèi)麗 金小俊 趙化
摘要:[目的]為了解決傳統(tǒng)的基于角色的權(quán)限控制系統(tǒng)在實(shí)施過程中的重復(fù)性工作量大及配置過程較為抽象的缺點(diǎn)。[方法]采用“一切皆資源”的理念,以資源樹為基本配置模型,構(gòu)建新的基于資源的權(quán)限控制系統(tǒng)。[結(jié)果]這種理念及實(shí)施過程易于理解,并能有效減少大量重復(fù)性配置工作。[結(jié)論]基于資源的權(quán)限控制的系統(tǒng)設(shè)計(jì)方法,可極大提高權(quán)限控制的工作效率,并減輕系統(tǒng)的維護(hù)成本。
關(guān)鍵詞:權(quán)限管理系統(tǒng);基于角色的權(quán)限控制;一切皆資源;資源樹
中圖分類號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)03-0044-02
Abstract: For solving the disadvantage in traditional permission management based on roles, which makes the operation complex and abstract, this article tries to construct a new permission manage system which based on the idea of ‘everything is resource and the model of resource tree. This operation of this new system is easier and more understandable which can efficiently reduce the repetition. This design method based on resource can effectively raise the working efficiency and cut down the cost of maintenance.
Key words: permission management system; permission controlling based on roles; everything is resource; resource tree
基于角色的訪問控制(Role-Based Access Control, RBAC)[1]模型是20世紀(jì)90年代研究提出的一種模型,其中以美國George Mson大學(xué)信息安全技術(shù)實(shí)驗(yàn)室提出的RBAC96模型最具代表性,并得到了普通的公認(rèn)。RBAC是當(dāng)前非常流行的權(quán)限管理系統(tǒng)設(shè)計(jì)[2],它認(rèn)為權(quán)限授權(quán)的過程可抽象地概括為:Who是否可以對(duì)What進(jìn)行How的訪問操作,并對(duì)這個(gè)邏輯表達(dá)式進(jìn)行判斷是否為true的求解過程。Who, What, How構(gòu)成了訪問權(quán)限的三元組。RBAC是一種基于角色的權(quán)限管理系統(tǒng)設(shè)計(jì)方案,通過角色,可以批量賦予用戶相同的權(quán)限。RBAC主要用于控制用戶對(duì)資源等的訪問。通過對(duì)進(jìn)程和用戶應(yīng)用安全屬性,RBAC可以向多個(gè)管理員分派超級(jí)用戶功能[3]。RBAC在實(shí)際應(yīng)用中,更像是一種模型,一種思想,不需要完全參照其實(shí)現(xiàn)。RBAC簡化了給用戶賦權(quán)的操作,其基礎(chǔ)架構(gòu)如圖1所示[4-5]:
1 基于角色的權(quán)限控制系統(tǒng)現(xiàn)狀
RBAC存在的一個(gè)最大的缺點(diǎn)是,配置操作比較抽象。權(quán)限的描述,一般會(huì)采用前后端都可識(shí)別的編碼格式。尤其對(duì)于頁面元素相關(guān)的權(quán)限,若存在描述相似的功能,很難進(jìn)行直觀區(qū)別,這就容易導(dǎo)致在權(quán)限配置過程中配置錯(cuò)誤。
2 基于資源控制的權(quán)限管理系統(tǒng)設(shè)計(jì)方案描述
2.1 概述
在RBAC基礎(chǔ)之上,本文提出了一種“一切皆資源”的設(shè)計(jì)理念,在權(quán)限之下再下沉一層,提出資源的概念?!耙磺薪再Y源”,即所有想要進(jìn)行控制的具體的(頁面、按鈕都能)以及抽象的(接口等)等對(duì)象都視為資源。資源是實(shí)現(xiàn)權(quán)限控制的最小原子單位,資源在本質(zhì)上就是權(quán)限,只不過在資源的概念之上,可認(rèn)為權(quán)限是資源的集合。在“一切皆資源”的實(shí)踐中,可以進(jìn)行數(shù)據(jù)控制,舉例說明:對(duì)某個(gè)公司的數(shù)據(jù)的可訪問權(quán)限,可建立一種抽象的數(shù)據(jù)權(quán)限資源。通過該類資源所關(guān)聯(lián)的權(quán)限配置,可控制不同角色或具有不同權(quán)限的人員看到不同的數(shù)據(jù),從控制層面實(shí)現(xiàn)“千人千面”。
2.2 詳述
在“一切皆資源”的基礎(chǔ)之上,我們進(jìn)而提出資源樹的概念。資源樹是一種將抽象的權(quán)限資源用樹形結(jié)構(gòu)上的節(jié)點(diǎn)來具體化,即:對(duì)應(yīng)于頁面上的對(duì)象,如頁面、菜單、按鈕等,可按各元素之間的層級(jí)依次建立對(duì)應(yīng)的資源節(jié)點(diǎn),根據(jù)層級(jí)關(guān)系進(jìn)而形成權(quán)限資源樹。資源樹建立完成后,可對(duì)應(yīng)創(chuàng)建需要的權(quán)限,然后與角色綁定實(shí)現(xiàn)權(quán)限的控制。資源樹的建立,將權(quán)限對(duì)應(yīng)地進(jìn)行形象化,樹形結(jié)構(gòu)的層級(jí)化使得在權(quán)限分配過程中,可按照樹形結(jié)構(gòu)進(jìn)行權(quán)限分配,分配過程對(duì)于操作者直觀且易于操作。
2.3 實(shí)施
基于資源的權(quán)限控制整體架構(gòu)圖如圖2所示。
下面主要描述基于資源的權(quán)限管理系統(tǒng)的實(shí)現(xiàn)過程:
首先是資源的創(chuàng)建。依據(jù)“一切皆資源”的概念,資源的概念包括具體的,例如:頁面、菜單、按鈕等,還包括抽象的,比如:接口、可篩選的數(shù)據(jù)范圍,甚至可擴(kuò)展至系統(tǒng)、業(yè)務(wù)線等等一切想進(jìn)行操作權(quán)限區(qū)分的事物。資源的實(shí)現(xiàn)可以通過將資源詳情用易解析、易擴(kuò)展的json格式來保存,對(duì)于具體類型的資源類型,資源詳情可保存對(duì)應(yīng)的資源所屬頁面的url地址、icon以及唯一性標(biāo)識(shí)id等信息,可參考如下配置:{"key": "sub00-08-05-01", "icon": "", "name": "報(bào)表權(quán)限申請(qǐng)", "path": "/pmo-config-form", "description": "報(bào)表權(quán)限申請(qǐng)"};對(duì)于抽象資源,可按照業(yè)務(wù)需求保存為業(yè)務(wù)端可識(shí)別的編碼,比如典型的數(shù)據(jù)權(quán)限可參考如下配置:{"permissionCode": "tmOrgRole_001"}, {"comp_code": ["own"], "dept_code": ["own"], "costcenter": ["own"]}。
接著就是資源樹的構(gòu)建。按照“一切皆資源”的方法,根據(jù)頁面的層級(jí)關(guān)系,依次建立具有層級(jí)關(guān)系的資源樹。為保存層級(jí)關(guān)系,每級(jí)的資源需保存其父節(jié)點(diǎn)的唯一標(biāo)識(shí),同時(shí),為支持各種類型的資源,可在資源創(chuàng)建時(shí)為資源劃分類型,如常用的數(shù)據(jù)權(quán)限等。
剩余的工作則是RBAC的通用操作部分。建立角色,角色與權(quán)限的綁定,人員通過角色得到對(duì)應(yīng)的權(quán)限。
系統(tǒng)整體可分為組織架構(gòu)模塊和權(quán)限控制模塊,架構(gòu)圖如圖3所示。
組織架構(gòu)部分,可采用領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),從不同視角根據(jù)公司業(yè)務(wù)創(chuàng)建公司、部門、崗位、人員等信息,必要時(shí)可以擴(kuò)展大區(qū)等信息。組織架構(gòu)雖然不是權(quán)限管理的范疇,但卻是權(quán)限管理的必要條件,權(quán)限管理必須依托于各公司獨(dú)特的組織架構(gòu),否則脫離了公司的組織架構(gòu),同樣會(huì)帶來管理維護(hù)困難等問題。
權(quán)限管理模塊,可根據(jù)要控制的對(duì)象分為控制權(quán)限和數(shù)據(jù)權(quán)限。對(duì)控制權(quán)限,根據(jù)所要控制的元素做最小劃分,自頂而下依次創(chuàng)建頁面、菜單、按鈕、接口等控制類資源,在數(shù)據(jù)存放時(shí)需要保存資源的父子節(jié)點(diǎn)關(guān)系,并且接口權(quán)限資源根據(jù)頁面的調(diào)用可掛載至對(duì)應(yīng)的頁面資源下,實(shí)現(xiàn)接口權(quán)限的精準(zhǔn)控制。對(duì)數(shù)據(jù)權(quán)限,比如針對(duì)不同的用戶、角色,即使都擁有A接口的訪問權(quán)限,但可以通過指定查詢范圍實(shí)現(xiàn)數(shù)據(jù)的精準(zhǔn)控制。數(shù)據(jù)權(quán)限不區(qū)分頁面,根據(jù)業(yè)務(wù)需要建立前后端約定好的、可識(shí)別的資源。資源詳情可采用易于解析的json格式存儲(chǔ),以便后期資源定義的擴(kuò)展,同時(shí)也是對(duì)“一切皆資源”的有效支撐。資源建立完成后,可以在資源管理頁面清晰看到所創(chuàng)建的資源樹及要進(jìn)行控制的數(shù)據(jù)權(quán)限資源。接下來根據(jù)權(quán)限管理的業(yè)務(wù)需求,對(duì)資源進(jìn)行組合從而創(chuàng)建適當(dāng)粒度的權(quán)限,更進(jìn)一步創(chuàng)建角色。
3 結(jié)束語
本文詳情闡述了基于資源樹的權(quán)限控制系統(tǒng)的實(shí)現(xiàn)方式,較之于基于角色的控制體系,基于資源樹的權(quán)限控制系統(tǒng)提出“一切皆資源”的理論,并以此為基礎(chǔ),構(gòu)建權(quán)限控制系統(tǒng)的權(quán)限樹,資源是進(jìn)行權(quán)限配置的基礎(chǔ),通過對(duì)所有要控制的對(duì)象簡歷對(duì)應(yīng)的資源模型,并依據(jù)其對(duì)應(yīng)的頁面關(guān)系逐一建立資源,可實(shí)現(xiàn)精準(zhǔn)的權(quán)限控制。對(duì)于抽象的賦權(quán)操作形象化,增加的分層操作也使得權(quán)限控制系統(tǒng)可以有更多的靈活性及可擴(kuò)展性,極大提升了權(quán)限控制系統(tǒng)的可用范圍。
參考文獻(xiàn):
[1] 劉強(qiáng).基于角色的訪問控制技術(shù)[M].廣州:華南理工大學(xué)出版社,2010.
[2] 黃建,卿斯?jié)h,魏丕會(huì).基于角色的訪問控制[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(28):64-66,71.
[3] ORACLE.系統(tǒng)管理指南:安全性服務(wù).基于角色的訪問控制[EB/OL].https://docs.oracle.com/cd/E24847_01/html/819-7061/rbac-1.html#scrolltoc.
[4] 尹剛,王懷民,滕猛.基于角色的訪問控制[J].計(jì)算機(jī)科學(xué),2002,29(3):69-71.
[5] 汪厚祥,李卉.基于角色的訪問控制研究[J].計(jì)算機(jī)應(yīng)用研究,2005,22(4):125-127.
【通聯(lián)編輯:代影】