李衛麗 金小俊 趙化



摘要:[目的]為了解決傳統的基于角色的權限控制系統在實施過程中的重復性工作量大及配置過程較為抽象的缺點。[方法]采用“一切皆資源”的理念,以資源樹為基本配置模型,構建新的基于資源的權限控制系統。[結果]這種理念及實施過程易于理解,并能有效減少大量重復性配置工作。[結論]基于資源的權限控制的系統設計方法,可極大提高權限控制的工作效率,并減輕系統的維護成本。
關鍵詞:權限管理系統;基于角色的權限控制;一切皆資源;資源樹
中圖分類號:TP311? ? ? ? 文獻標識碼:A
文章編號: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世紀90年代研究提出的一種模型,其中以美國George Mson大學信息安全技術實驗室提出的RBAC96模型最具代表性,并得到了普通的公認。RBAC是當前非常流行的權限管理系統設計[2],它認為權限授權的過程可抽象地概括為:Who是否可以對What進行How的訪問操作,并對這個邏輯表達式進行判斷是否為true的求解過程。Who, What, How構成了訪問權限的三元組。RBAC是一種基于角色的權限管理系統設計方案,通過角色,可以批量賦予用戶相同的權限。RBAC主要用于控制用戶對資源等的訪問。通過對進程和用戶應用安全屬性,RBAC可以向多個管理員分派超級用戶功能[3]。RBAC在實際應用中,更像是一種模型,一種思想,不需要完全參照其實現。RBAC簡化了給用戶賦權的操作,其基礎架構如圖1所示[4-5]:
1 基于角色的權限控制系統現狀
RBAC存在的一個最大的缺點是,配置操作比較抽象。權限的描述,一般會采用前后端都可識別的編碼格式。尤其對于頁面元素相關的權限,若存在描述相似的功能,很難進行直觀區別,這就容易導致在權限配置過程中配置錯誤。
2 基于資源控制的權限管理系統設計方案描述
2.1 概述
在RBAC基礎之上,本文提出了一種“一切皆資源”的設計理念,在權限之下再下沉一層,提出資源的概念。“一切皆資源”,即所有想要進行控制的具體的(頁面、按鈕都能)以及抽象的(接口等)等對象都視為資源。資源是實現權限控制的最小原子單位,資源在本質上就是權限,只不過在資源的概念之上,可認為權限是資源的集合。在“一切皆資源”的實踐中,可以進行數據控制,舉例說明:對某個公司的數據的可訪問權限,可建立一種抽象的數據權限資源。通過該類資源所關聯的權限配置,可控制不同角色或具有不同權限的人員看到不同的數據,從控制層面實現“千人千面”。
2.2 詳述
在“一切皆資源”的基礎之上,我們進而提出資源樹的概念。資源樹是一種將抽象的權限資源用樹形結構上的節點來具體化,即:對應于頁面上的對象,如頁面、菜單、按鈕等,可按各元素之間的層級依次建立對應的資源節點,根據層級關系進而形成權限資源樹。資源樹建立完成后,可對應創建需要的權限,然后與角色綁定實現權限的控制。資源樹的建立,將權限對應地進行形象化,樹形結構的層級化使得在權限分配過程中,可按照樹形結構進行權限分配,分配過程對于操作者直觀且易于操作。
2.3 實施
基于資源的權限控制整體架構圖如圖2所示。
下面主要描述基于資源的權限管理系統的實現過程:
首先是資源的創建。依據“一切皆資源”的概念,資源的概念包括具體的,例如:頁面、菜單、按鈕等,還包括抽象的,比如:接口、可篩選的數據范圍,甚至可擴展至系統、業務線等等一切想進行操作權限區分的事物。資源的實現可以通過將資源詳情用易解析、易擴展的json格式來保存,對于具體類型的資源類型,資源詳情可保存對應的資源所屬頁面的url地址、icon以及唯一性標識id等信息,可參考如下配置:{"key": "sub00-08-05-01", "icon": "", "name": "報表權限申請", "path": "/pmo-config-form", "description": "報表權限申請"};對于抽象資源,可按照業務需求保存為業務端可識別的編碼,比如典型的數據權限可參考如下配置:{"permissionCode": "tmOrgRole_001"}, {"comp_code": ["own"], "dept_code": ["own"], "costcenter": ["own"]}。
接著就是資源樹的構建。按照“一切皆資源”的方法,根據頁面的層級關系,依次建立具有層級關系的資源樹。為保存層級關系,每級的資源需保存其父節點的唯一標識,同時,為支持各種類型的資源,可在資源創建時為資源劃分類型,如常用的數據權限等。
剩余的工作則是RBAC的通用操作部分。建立角色,角色與權限的綁定,人員通過角色得到對應的權限。
系統整體可分為組織架構模塊和權限控制模塊,架構圖如圖3所示。
組織架構部分,可采用領域驅動設計,從不同視角根據公司業務創建公司、部門、崗位、人員等信息,必要時可以擴展大區等信息。組織架構雖然不是權限管理的范疇,但卻是權限管理的必要條件,權限管理必須依托于各公司獨特的組織架構,否則脫離了公司的組織架構,同樣會帶來管理維護困難等問題。
權限管理模塊,可根據要控制的對象分為控制權限和數據權限。對控制權限,根據所要控制的元素做最小劃分,自頂而下依次創建頁面、菜單、按鈕、接口等控制類資源,在數據存放時需要保存資源的父子節點關系,并且接口權限資源根據頁面的調用可掛載至對應的頁面資源下,實現接口權限的精準控制。對數據權限,比如針對不同的用戶、角色,即使都擁有A接口的訪問權限,但可以通過指定查詢范圍實現數據的精準控制。數據權限不區分頁面,根據業務需要建立前后端約定好的、可識別的資源。資源詳情可采用易于解析的json格式存儲,以便后期資源定義的擴展,同時也是對“一切皆資源”的有效支撐。資源建立完成后,可以在資源管理頁面清晰看到所創建的資源樹及要進行控制的數據權限資源。接下來根據權限管理的業務需求,對資源進行組合從而創建適當粒度的權限,更進一步創建角色。
3 結束語
本文詳情闡述了基于資源樹的權限控制系統的實現方式,較之于基于角色的控制體系,基于資源樹的權限控制系統提出“一切皆資源”的理論,并以此為基礎,構建權限控制系統的權限樹,資源是進行權限配置的基礎,通過對所有要控制的對象簡歷對應的資源模型,并依據其對應的頁面關系逐一建立資源,可實現精準的權限控制。對于抽象的賦權操作形象化,增加的分層操作也使得權限控制系統可以有更多的靈活性及可擴展性,極大提升了權限控制系統的可用范圍。
參考文獻:
[1] 劉強.基于角色的訪問控制技術[M].廣州:華南理工大學出版社,2010.
[2] 黃建,卿斯漢,魏丕會.基于角色的訪問控制[J].計算機工程與應用,2003,39(28):64-66,71.
[3] ORACLE.系統管理指南:安全性服務.基于角色的訪問控制[EB/OL].https://docs.oracle.com/cd/E24847_01/html/819-7061/rbac-1.html#scrolltoc.
[4] 尹剛,王懷民,滕猛.基于角色的訪問控制[J].計算機科學,2002,29(3):69-71.
[5] 汪厚祥,李卉.基于角色的訪問控制研究[J].計算機應用研究,2005,22(4):125-127.
【通聯編輯:代影】