何曉園
摘 要:該文介紹了一種基于角色的訪問控制機制,提供了資源訪問控制、用戶隔離以及等級劃分等通用功能,實現后可以作為一個模塊掛接到一個應用系統當中,該系統只需要調用其提供的API即可使用其功能,由于使用了面向對象的編程方式,其所有功能都在一個基類里面提供,開發人員可以通過繼承、派生的方式擴充其功能。在實際應用中驗證了其具有通用性、較好的擴展性以及較高的性能。
關鍵詞:角色 權限 訪問控制
中圖分類號:TP393 文獻標識碼:A 文章編號:1674-098X(2015)11(a)-0156-02
基于角色的訪問控制機制(RBAC:Role-Based Access Control)是目前較為常用的一種訪問權限控制機制,如ORACLE、SQL Server著名的系統都使用這種方式進行訪問控制,權限與角色相關聯,用戶通過扮演不同的角色從而獲得授予角色的權限,極大地簡化了權限的管理工作。這些機制通常都遵循最小授權,責任分離和數據抽象這三個基本原則,并且具有很多相似的地方。該文介紹了一種RBAC機制,下文簡稱UPAC,實現了RBAC機制中大部分通用的功能,在實際應用中可以把UPAC當成一個架構進行擴充,也可以直接使用其API進行開發工作。使用UPAC的系統(下文簡稱調用系統)只需要將UPAC作為一個模塊掛接到調用系統當中,就可以使用其功能。
1 系統的構成
UPAC主要由用戶、角色、對象、模塊和訪問權限這5個元素構成,這些元素相互作用構成一套完整的權限控制機制。
用戶是最小的授權單元,用戶具有賬號、密碼、域以及等級等基本屬性,在實際應用中用戶的屬性可以由調用系統擴充。系統的使用者,例如普通用戶和管理員等都是通過用戶的賬號獲得訪問系統的權限的。
2 訪問權限
在UPAC中,訪問權限只是被當成一些整數,其代表的實際意義由調用系統進行解釋。訪問權限作用于模塊和對象這兩種訪問單元。UPAC負責獲取某個訪問單元的訪問權限值,然后將該值返回給調用系統。
UPAC的訪問權限是累加的關系,主要體現在兩個方面。
(1)角色與用戶:一個用戶所具有的權限為其本身被授予的權限加上其加入的所有角色的權限。
(2)模塊與對象:如果一個授權單元具有了一個模塊的某種訪問權限,那么該授權單元就具有了該模塊所有對象的相同的訪問權限,如果單獨再對這個授權單元進行了模塊中的對象的授權,那么該授權單元對該對象具有的訪問權限為其對模塊的訪問權限加上對該對象的訪問權限。
從文中可以看出,UPAC只是按照規則提供了為各種元素提供了相互之間的關聯,并沒有對各個元素賦予任何的實際意義,這使得UPAC可以獨立于任何系統,而調用系統由于不需要再處理這些元素之間的關系,簡化了其權限系統的設計。
3 用戶
在UPAC中用戶是訪問系統資源的唯一依據,用戶登錄后,通過其本身授予的權限和其所加入的角色的所獲得的權限對系統資源進行訪問。UPAC中用戶的基本屬性只有5個,如圖1所示。
賬號和密碼用于登錄,等級用于控制用戶等級的高低,域用于控制用戶相互之間的可見性。
需要注意的是,上面提到的系統資源的訪問權限與用戶等級之間沒有必然的聯系,等級高的用戶并不一定比等級低的用戶對某個資源具有更多的訪問權限,它們之間的關系由調用系統確定。
UPAC的用戶等級屬性是一個正整數,數字越大表示等級越高,具體意義也由調用系統決定。例如為了簡單起見調用系統可以在實現中通過程序指定將所有的系統資源的所有訪問權限賦予等級為系統管理員的用戶,從而使得系統管理員不受RBAC規則的限制。
域屬性指定了用戶所在的“域”,這個屬性用來控制用戶之間的可見性,域屬性值相同的用戶處于同一個“域”中,他們相互之間是可見的,而處于不同的“域”之中的用戶,相互之間是不可見的。例如,在一個ERP系統中,財務部的部門的員工可以看到該部門中的所有員工,但是卻不能看到人事部的員工,就可以通過為這兩個部門的員工賦予不同的域屬性來進行控制。
另外,等級和域屬性可以相互結合,以實現更多的功能,例如,要求部門經理級別的用戶都可以看到整個企業所有的員工,盡管每個部門經理的域屬性都不相同,但是此時可以根據等級屬性來進行控制。
ID是一個用戶在UPAC中的一個整數類型的唯一標識符,由UPAC使用,對于調用系統不可見。使用ID的原因是由于整數檢索速度更快。
4 API
UPAC通過面向對象的方法實現,通過類的成員函數為調用系統提供了API,并且調用系統可以通過UPAC的基類派生出自己的子類,從而擴充UPAC的功能。UPAC提供的API如表1所示。
其中HasModulePrivileges、GetModulePrivileges、HasObjectPrivileges和GetObjectPrivileges這四個函數會自動處理用戶所屬的角色的權限問題。
UPAC只提供了基本的API函數,但是卻提供了RBAC的最常用的功能,使得調用系統不需要考慮RBAC中的最難處理的權限獲取的問題。
5 結語
UPAC定義了用戶、角色、模塊、對象和訪問權限等元素,實現了各元素之間的關系的處理、關系數據的保存和檢索功能,并且給調用系統提供了靈活的擴展機制,調用系統只需要在UPAC的基礎上進行少量的工作就可以實現一個個性化的RBAC機制。UPAC已經在多個項目使用,驗證了其具有較好的擴展性、靈活性以及較高的性能。
參考文獻
[1] 李志英,黃強,樓新遠,等.RBAC模型研究、改進與實現[J].計算機應用,2006,26(12):2945-2947.
[2] 唐守利.基于RBAC的粒度訪問控制模型研究[J].信息系統工程,2010(9):125,133.
[3] 梁澤梅,李蜀瑜.基于RBAC的兩級訪問控制模型[J].微型電腦應用,2011,27(3):54-56.