劉 君,曹寶香
(曲阜師范大學 計算機科學學院,山東 日照 276826)
傳統訪問控制模型存在著一定的局限性。在面向服務的架構的環境下,由于服務的動態性,傳統訪問控制機制,已經不能完全滿足面向服務的架構(SOA)環境的要求,主要表現在以下兩個方面[1-2]:
①在傳統的管理信息系統中,只需要對系統已知的用戶進行處理,用戶也只有權限對已知的系統進行訪問;
②傳統訪問控制模型都是靜態的、粗粒度的,不能夠為SOA訪問控制策略提供豐富的語義支持。
為了能夠適應各種業務場景中多樣化的用戶,一個設計良好的基于SOA的訪問控制模型[3-4]必須具備非常好的靈活性。在SOA環境下,可以采用一種新型的ABAC模型[5]。
如圖1所示為ABAC模型。

圖1 基于屬性的訪問控制模型
ABAC根據參與決策的相關實體的主體、資源和環境屬性授權。
①主體屬性(Subject Attribute)。主體是對客體進行操作的實體。一個主體可能被其它的主體訪問,這時候,這個被訪問的主體就可以作為資源看待。主體屬性是與主體的身份和特點相關的屬性,例如,身份、角色、姓名、年齡、職位等;
②資源屬性(Resource Attribute)。資源可以是一份公告,一則新聞或者一個數據表格。資源屬性是與資源的自身特點相關的屬性,例如,一份公告就有題目、作者、創建日期等屬性等;
③環境屬性(Environment Attribute)。環境屬性描述業務執行時的上下文,主要包括時間、日期等。
ABAC的形式化定義如下所示:
①s,r和e分別表示主體、資源和環境;
②SAk(1≤k≤K),RAm(1≤m≤M),EAn(1≤n≤N)分別是主體屬性、資源屬性和環境屬性;
③ATTR(s)? SA1× SA2×…× SAKATTR(r) ?RA1×RA2×…× RAM ATTR(e) ? EA1× EA2×…× EAN。當然,也可以用符號法對單個屬性進行賦值,例如:SystemTime(e)=“2010-9-13”;
④判斷一個主體s是否應該被授予在環境e下對資源r的訪問權限,是根據主體 s,資源 r以及當前上下文環境 e的具體屬性來決定的。
can_access(s,r,e) ← f (ATTR(s),ATTR(r),ATTR(e)),其中,access通常代表一系列操作,f函數是表示訪問控制策略規則的一個布爾函數,描述了主體對資源進行訪問時必須滿足的條件,通過主體s,資源r和環境e的屬性值對f函數進行計算,從而決定主體s是否應該被授予在環境e下對資源r的訪問權限;
⑤策略庫中有多條訪問控制策略。這些策略關系到SOA中的許多主體和資源。進行訪問控制決策的過程就是對訪問請求,通過在策略庫中選出可用策略進行評估的過程。
通過一個電子圖書網站的實例,比較ABAC和RBAC。

表1 電子圖書級別適合人群
會員的年齡和電子圖書的分級級別(如表1所示)都是與訪問控制相關的重要屬性,在制定訪問控制策略規則時,必須將它們列入考慮范圍。由于RBAC是根據用戶的角色來進行訪問控制的判斷,所以如果在該例的電子圖書網站要采用基于角色的訪問控制,就必須預先定義三種角色:兒童、青少年和成年人。電子圖書網站必須給每個會員分配這三種角色中的一種。而且電子圖書網站還需要定義三種權限:閱讀R級的電子圖書;閱讀PG-10級的電子圖書;閱讀G級的電子圖書。
成年人的角色將獲得全部以上三種權限;青少年的角色能夠獲得閱讀PG-10級的電子圖書和閱讀G級的電子圖書兩種權限;兒童的角色只能獲得閱讀G級的電子圖書的權限。系統管理員必須手工為用戶分配角色并且定義角色到權限的映射。
而如果在該案例中的電子圖書網站要采用基于屬性的訪問控制模型,就沒有必要進行角色和權限的定義了。一個用戶u是否可以訪問一部電子圖書m是由該用戶u自身的屬性(年齡Age(u))和電子圖書的相關屬性(分級級別Rating(m))來決定的(將環境屬性暫時忽略不計)。相關的訪問控制策略規則如下:

可以看到在基于屬性的訪問控制模型中,不需要定義和維護靜態的角色和權限,同時也沒有必要手工為用戶分配角色及定義角色到權限的映射。
如果由于業務邏輯越來越復雜,更多的屬性需要考慮,那么,這種差異就會變得非常顯著。現在,電子圖書網站根據電子圖書的發行時間將所有的電子圖書分為新書(New Release)和舊書(Old Release)兩類,同時根據會員交納的會費金額將所有的用戶分為高級會員(Senior)和普通會員(Ordinary)兩類。電子圖書網站的業務規則也發生了一定的變化:只有高級會員才能夠閱讀最近發行的新書。
如果采用基于角色的訪問控制,需要預先定義的角色的數量將增加一倍,具體如下:普通成年人會員;高級青少年會員;普通青少年會員;高級兒童會員;普通兒童會員;
同樣,需要預先定義的權限的數量也將增加一倍:閱讀R級的新書;閱讀R級的舊書;閱讀PG-10級的新書;閱讀PG-10級的舊書;閱讀G級的新書;閱讀G級的舊書。而為用戶分配角色以及定義角色到權限的映射的工作也將變得更為復雜。
一般來講,如果在進行訪問控制授權時,需要考慮到K個主體的屬性,M個資源的屬性,那么,需要創建的角色和權限數目分別為[6]:

其中,函數 Range()表示屬性可能的取值數量。
然而,在基于屬性的訪問控制模型中,我們之前定義的規則仍然是有效的,只需要加入一條新的規則:

這條新的規則和舊的規則共同描述新的業務,即:

根據上面的實例,能夠看出相對于RBAC來說,ABAC擁有更高的靈活性和更細的訪問控制粒度,能夠表現語義更豐富的訪問控制策略[7]。當業務邏輯變得更加復雜時[8],RBAC需要定義新的角色和權限,而ABAC只是根據現實中的語義修改策略規則就可以。特別是當業務邏輯變得非常復雜時,以至于需要考慮數目比較大的屬性,這時,RBAC就會非常缺乏柔性,需要創建的角色和權限數目將急劇增多,為用戶分配角色以及定義角色到權限的映射的工作將變得特別糟糕。隨著主體和資源屬性數目的增長,RBAC需要創建的角色和全新數目呈指數級增長;而 ABAC 需要定義的策略規則的數量則呈線性增長。
上面的實例還沒有考慮到環境屬性,RBAC不支持環境屬性。例如:對于這個策略,普通會員只具有閱讀某一段時期內(比如,今天的日期作為促銷日期)的新書的權限,而不能閱讀其它時期的新書。然而,ABAC可以通過添加新的規則的方式,對于這個環境屬性是否處于某一段時期內進行判斷。因此,基于屬性的訪問控制(ABAC) 融合了一些現存的訪問控制機制的優點及特性,將主體、資源、環境屬性都考慮在內,綜合進行動態授權決策,從而能夠提供更豐富的語義,實現更細粒度的訪問控制。
這里的系統應用實現以山東省日照市中泰陽光客戶關系管理系統為例,系統在實施后獲得了較好的運行效果。
相對于其它訪問控制機制來說,ABAC擁有更高的靈活性和更細的訪問控制粒度,能夠表現語義更豐富的訪問控制策略,因而更適用于SOA環境。
[1] 傅鶴崗,李競.基于屬性的Web服務訪問控制模型[J].計算機科學,2007,34(05):111-113.
[2] 沈海波,洪帆.面向Web服務的基于屬性的訪問控制研究[J].計算機科學,2006,33(04):92-96.
[3] COETZEE M,ELOFF J H P.Towards Web Services Access Control[J].Elsevier Computers and Security,2004,23(07):559-570.
[4] 沈海波,洪帆.基于屬性的授權和訪問控制研究[J].計算機應用,2007,1(27):115-116
[5] 沈海波,洪帆.Web服務中結合 XACML的基于屬性的訪問控制模型[J].計算機應用,2005,25(12):2765-2767.
[6] 覃章榮,王強,歐鑌進,等.基于角色的權限管理方法的改進與應用[J].計算機工程與設計,2007,28(06):1282-1283.
[7] 李敏,高悅翔.動態角色訪問控制模型的研究與應用[J].通信技術,2009,42(05):221-223.
[8] 李嵐.基于角色的數據庫安全訪問控制的應用[J].通信技術,2008,41(10):70-72.