諸天逸,李鳳華,金偉,郭云川,房梁,成林
(1.中國科學院信息工程研究所,北京 100093;2.中國科學院大學網絡空間安全學院,北京 100049;3.中國信息安全測評中心,北京 100085)
不同機構獨立運維現狀要求必須對信息系統與數據進行分域管理,這些信息系統呈現域內互聯、域間孤立特征,使這些系統的數據不能被充分利用,這與系統互聯的信息傳播與共享協同本質相悖。為了消除當前信息系統域間孤立特征,需要將現有孤立系統進行物理/邏輯連接,提升數據共享能力。這種物理/邏輯連接打破原有信息系統在管理上數據隔離現狀,帶來了新的訪問控制問題:如何確保跨域的數據訪問者只有在受控模式下才能獲得完成業務功能所需的數據。針對該問題,同時為了降低系統建設成本,需要設計恰當的訪問控制策略跨域映射機制,將各系統已有的訪問控制系統進行邏輯連接,為跨域用戶分配完成任務所必需的最小權限,實現數據受控交換。例如,若域A用戶需要訪問域B的某些資源,可根據域A用戶在本域已有的角色和域B中擬訪問的資源,將域B內相應的角色分配給域A用戶,使域A用戶通過域B角色訪問這些資源,通過這種方式實現成本約束的數據受控使用。
跨域訪問控制策略映射機制包括2種:運行時策略映射機制[1-5]和配置時策略映射機制[6-11]。運行時策略映射機制是指用戶跨域訪問時與交互域在線協商授權策略,交互域結合當前自身角色層次的激活等情況,評估其請求操作中完成預期任務所需的最小權限或角色,并將之返回給跨域訪問請求用戶,以此保障域間互操作的動態授權。這種機制動態協商訪問權限,應用場景廣泛。但是由于交互域策略語法和語義方面差異巨大,域間的松散耦合性質不同,使多域策略無法集成融合,因此難以生成適用多個交互域的訪問控制策略。此外該機制采用在線多次交互方式協商權限,授權效率低。針對該問題,研究者提出了目前使用較為廣泛的配置時策略映射機制,該機制將各個自治域的訪問控制策略和人為設定的權限或角色映射關系作為輸入,并采用整數規劃等方式以域內自治性等為代價消解這些映射可能導致的策略沖突,提升互操作性。該方式能生成全局適用且無沖突控制策略,適用于數據資源高頻訪問場景。但現有配置時策略映射機制存在如下問題。
1)未平衡互操作性和自治性損失。僅僅將自治域的自治性損失作為約束條件,以此獲得最大化互操作性,不能動態平衡互操作性和自治性損失。
2)不能自動生成目標函數和約束函數。依賴大量人工操作,在龐雜的現實權限映射關系中,約束規則錯綜復雜,無法通過人工操作有效處理。
3)模型開銷大、實際可行性低。現有方案以多種方式建模解決策略映射中沖突消解等典型問題,考慮的權限關系簡單、典型,但是當角色、用戶、權限等數量龐大關系復雜時,模型開銷極大,可行性低。
為了解決上述問題,本文提出了域間訪問控制策略映射與沖突檢測消解方法,該方法基于具有約束的NSGA-III(non-dominated sorting genetic algorithm,the third version)算法來平衡域間互操作性和域內自治性損失,并消解跨域策略沖突。本文的主要貢獻如下。
1)建立了最大化域間互操作、最小化域內自治性損失的整數規劃方程,在傳統域間訪問控制約束的基礎上加入前提條件與基數等約束,使模型更接近實際應用。
2)提出了帶約束的NSGA-III進化算法,用二進制編碼方式求解所建立的整數規劃方程,加入懲罰函數降低不符合約束的個體的環境適應度。算法的時間復雜度為O(n2m),其中,m為目標函數個數,n為種群大小。
3)在接近現實機構的數據集上測試了所提出的方案,實驗數據表明,改進的算法在解決具有1 950維決策變量的問題時,僅用3 200代就使目標函數達到收斂,并且解的種類數目維持在300(種群大小為300),運行快速、收斂高效、非劣解多樣。
多域異構的訪問控制策略、語義、表示、組織方式等讓跨域授權問題成為研究難點,策略映射作為廣泛應用的一種跨域訪問控制機制已在許多場景實現安全互操作。
Joshi等[1]關注多域角色映射的沖突問題,將角色劃分為激活、繼承等多種約束層次關系,提出的GTRBAC(generalized temporal role based access control)約束模型是域間運行時策略映射的基礎模型。但該模型局限于對層次關系的討論,煩瑣的角色關系不便于跨域互操作的實現。Du等[2]在此基礎上,將角色層次關系簡化為激活層次關系、繼承層次關系和繼承激活層次關系,討論松散耦合環境中的運行時策略映射問題,解決多域環境中這3種混合層次結構的安全互操作問題。但整體策略維護困難,角色層次的管理問題突出,對松散耦合環境的普適性不高。Zhang等[3]針對新興環境的松散耦合環境提出一種請求驅動的運行時策略映射安全互操作框架,實現在RBAC(role based access control)松散耦合環境中的安全互操作。但松散耦合環境下的域間信任問題還未解決。Shahraki等[4]認為依靠中央管理的授權不安全,提出分散、多權限的基于屬性的訪問控制模型DMA-ABAC(decentralized multi-authority attribute-based access control),其跨域運行時授權結合基于屬性的訪問控制和基于屬性的組簽名,能抵抗第三方攻擊,但處理效率有限、無法同時處理大量訪問請求。Unal等[5]結合移動網絡的運行時環境,提出多域運行時策略映射模型FPM-RBAC(formal policy model for mobility with role based access control),能根據域間策略運行時指定和檢查移動用戶跨域互操作的安全性,但是該方案不能自動驗證移動網絡的安全策略,框架的集成規范需要完善。
運行時策略映射機制為跨域互操作提供靈活性、便捷性,適用于多種新興的分布式環境,如移動網絡、醫療服務等領域。但需要管理員的干預較多,策略的運行時維護也較復雜。
Kapadia等[6-7]提出的IRBAC2000(interoper-able role-based access control 2000)模型及A-IRBAC 2000(administrative IRBAC 2000)模型是跨域策略映射的開端,聯合2個自治域,建立了一套全局配置時角色層次關系,但模型未解決因此產生的策略沖突。Shehab等[8]在IRBAC 2000基礎上提出SEART(secure role mapping technique)模型,結合有向圖并增加角色禁止訪問關系,用路徑簽名算法實現分布式環境下配置時的多域全局映射的互操作,但該算法需用戶枚舉目標域角色路徑,角色關系復雜時選擇標準效率低。Shafiq等[9]將角色沖突分類,提出IP(integer programming)整數規劃的方法進行沖突消解,將多域的策略兩兩映射合成,從而形成多域通用的配置時映射策略,但其僅考慮部分典型跨域沖突,角色映射關系極大豐富時,基于圖形的規范模型實現困難,策略映射合并算法擁有指數復雜度。為解決社交網絡中不同域內的用戶跨域訪問的安全性問題,Fan等[10]使用基于對稱加密和CP-ABE(ciphertext policy attribute based encryption)混合加密算法,提出一種基于多權限屬性加密的跨域訪問控制方案,該方案盡管使用了代理用戶以減少部分開銷,但對規模龐大的社交網絡用戶來說,系統整體效率較低,對用戶的分級授權不易實現。Diao等[11]指出目前策略映射的過程是一項勞動密集型任務,需要大量人工操作,因此提出一種智能角色映射推薦過程,可以根據角色的相似性自動生成2個域間的配置時策略映射,但提出的映射技術并沒有得到驗證,且未評估其可用性。
配置時策略映射機制讓用戶能在不同域間用統一方式進行訪問控制授權,解決特定場景跨域互操作中的策略沖突,簡化管理。但難以解決復雜環境下策略映射的人工工作量大、開銷大、效率低的問題,無法應對域內策略的頻繁變動。
現有策略映射機制的主要思路是在運行時或配置時將多個自治域的不同策略進行一致性協調,消解沖突并統一映射策略,使用時管理員根據訪問控制要求變化對映射策略更新調整。但這些方法在規模龐大、“角色-用戶-權限”關系復雜的現實環境下,可行性低,并且對沖突消解后自治域的自治性考慮較少。
本文提出的最優化互操作與自治性的跨域訪問控制策略映射機制,綜合考慮多個自治域間的互操作性和自治性損失間的平衡,用2種啟發式算法在域間互操作性、自治域自治性損失度、策略多樣性等指標上對優化效果評估。該機制能應對復雜的角色層次關系,并自動生成沖突約束、目標函數等,簡化人工操作,提高了方法的適用性。
為提高域間互操作性,需將不同域的訪問控制策略進行映射,圖1給出了一個域間RBAC策略映射的示例,該示例包含2個域(域A和域B),其中,域A包含5個角色(即r1、r2、r3、r4和r5)和6個用戶(即u1、u2、u3、u4、u5和u6)。域B包含4個角色(即r6、r7、r8和r9)和7個用戶(即u7、u8、u9、u10、u11、u12和u13)。相關概念如圖1所示。
1)域內用戶/角色分配、角色層次和SoD沖突描述
圖1 域間RBAC策略映射的示例
如圖1所示,用戶和角色間的單向實線箭頭表示為用戶分配角色,如表示為用戶u1分配角色r1。如果2個具有互斥權限的角色被分配給同一用戶,這種違規稱為角色間的職責分離(SoD,separation of duty)沖突。角色間SoD沖突用帶SoD標記的雙向雙線箭頭表示,如表示r4和r5間存在角色SoD沖突。如果某角色被同時分配給來自2個沖突用戶集的用戶,這種違規稱為用戶間SoD沖突。用戶間SoD沖突用帶SoD標記的雙向單線箭頭表示,如表示u9和u10間存在用戶SoD沖突。此外,角色層次關系包含激活層次關系(即A-層次關系)和繼承層次關系(即I-層次關系),其中,A-層次關系表示激活之后,被繼承角色才能授予繼承角色的權限;I-層次關系表示不需要激活,被繼承角色就能授予繼承角色的權限。在圖1中分別用單向實線箭頭和單向虛線箭頭表示A-層次關系和I-層次關系;形式地,這2種關系分別記為≥A和≥I。r1≥Ir2表示,不需要激活,被繼承角色r1直接授予繼承角色r2相關權限;如r3≥Ar4表示,激活之后,被繼承角色r3才能授予繼承角色r4相關權限。
2)跨域角色映射與沖突消解
如圖1(a)所示,原始的域A和域B之間不存在任何跨域互操作。需要進行跨域互操作時,管理員在域A和域B的部分角色間建立跨域映射連接,此時域A和域B形成一張全局的映射關系圖,如圖1(b)。
若2個本地角色間存在誘導角色SoD沖突,那么連接這2個角色的上級角色無法同時激活這2個角色,因此上級角色與下級角色間的繼承關系將變為A-層次關系(激活層次關系),如r6≥Ir7將變為r6≥Ar7。這種改變導致自治域層次關系變化,降低域的自治性來提高跨域互操作性。
另一方面,添加跨域映射連接后,2個域之間可能存在跨域沖突,為保障域的自治性,確保跨域映射的安全性,需對本地域的策略調整刪減。如圖1(c)所示,由于在r8和r3之間、r8和r5之間均存在跨域映射連接,但這種連接會導致u6通過r8間接獲取r3的權限,造成關聯沖突,一種可行的方式是刪除r8和r3間的跨域映射連接。
雖然跨域角色映射可增加域間互操作性,但也導致域內的自治性損失。為平衡跨域訪問控制的域間互操作性和域內自治性,本文將該平衡問題建模為多目標整數規劃優化問題,其中目標函數包括最大化域間互操作性函數和最小化域內自治性函數,如式(1)所示。
如3.1節中的圖1(c)所示,SAB表示為域A的所有用戶分配的域B中的角色集合,即表示可以為域A中的用戶u1分配域B中的角色r8,表示可以為域B中的用戶u7分配域A中的角色r5。wA和wB分別表示域A和域B中“用戶-角色”分配的權重,權重越大在優化過程中該域策略被保留的可能性更高。例如,若域A的權重較大,則結果中域A用戶對域B角色的授權訪問將更高概率保留,相反,域B用戶對域A角色的授權訪問將更低概率保留。同理,表示為域A中用戶u1分配本地域角色r1,表示為域B中用戶u7分配本地域角色r6。NA和NB分別是域A和域B在跨域映射連接之前自治域內部分配的“用戶-角色”的數量,在圖1(b)中,NA=13,NB=11。跨域映射連接之后,部分域內“用戶-角色”因跨域沖突無法繼續授權將導致自治性損失,如由此計算域內自治性損失的比例。
從上述討論可以看出,規劃方程將以下兩部分作為多域映射策略的輸入:1)域A和域B的域內角色分配關系、層次關系和沖突關系;2)管理員定義域間的部分角色映射關系。輸出符合約束函數、全局無沖突的跨域訪問控制策略。以圖1(b)為例,若域A權重為2,域B權重為3,則3個目標函數分別表示為
現實應用場景下的域內用戶和角色數量較多,導致難以準確快速求解式(1)~式(4)所定義的多目標整數規劃優化問題。針對該問題,本文基于NSGA-III的策略映射算法有較低的復雜度(O(n2m)),能準確快速、較全面地搜索解集。
本文使用的函數與謂詞具體釋義如表1所示。
定義1角色集。域D內所有角色的集合用表示,其中,n為域D內角色數量。
定義2用戶集。域D內有角色,其用戶集為擁有角色ri的用戶所構成的集合,其中,k為擁有角色ri的用戶數。
定義3角色SoD約束。給定域D內有角色表示與ri存在角色SoD約束關系的角色集合,定義如式(5)所示。
其中,role_sod(ri,rj)=True 表示ri和rj存在角色SoD約束,即對于同一個用戶,不能同時被授予角色ri和rj。
表1 函數與謂詞具體釋義
定義4用戶SoD約束。給定域D內有角色ri用戶集內的2個用戶和間存在用戶SoD約束,則互相沖突的2個用戶之間構成沖突用戶的二元組,表示為(um,un)。用USODri表示ri的用戶SoD沖突對象集,其定義如式(6)所示。
其中,user_sod(um,un)=True 表示um和un間存在用戶SoD約束,即對于同一個角色,不能授權給2個沖突的用戶um和un。
定義5角色映射連接。給定域D1內有角色ri(ri∈RD1),域D2內角色rj(rj∈RD2)存在映射關系,用Mri表示所有與角色ri有映射關系的角色rj組成的集合,如式(7)所示。
為了簡化問題,避免約束過度復雜,本文中考慮的每個角色的跨域映射連接數量少于3個,即。
定義6角色層次關系。給定域D內有角色其所有上下級關聯關系(包含I-層次關系及A-層次關系)用四元組表示,其中,isn為I-層次的直接上級節點集,ijn為I-層次的直接下級節點集,asn為A-層次的直接上級節點集,ajn為A-層次的直接下級節點集。
若ri具有本地域內上級I-層次關系的節點,則返回本地域內其上級I-層次關系的節點集,如式(8)所示。
若ri具有本地域內上級I-層次關系的節點,則返回本地域內其下級I-層次關系的節點集,如式(9)所示。
若ri具有本地域內上級I-層次關系的節點,則返回本地域內其上級A-層次關系的節點集,如式(10)所示。
若ri具有本地域內上級I-層次關系的節點,則返回本地域內其下級A-層次關系的節點集,如式(11)所示。
定義7角色標簽。給定域D內有角色其標簽用八元組來表示,如式(12)所示。
4.2.1域間互操作性
域間互操作是指自治域的用戶通過跨域角色映射后實現數據交互訪問。即本地角色被授予交互域角色的授權,并獲得其權限,域間的跨域交互越多,說明域間互操作性越強。
定義8給定用戶集合為(i≤j),角色集合定義SUR為U內所有用戶被賦予的角色數之和,即
域間互操作性目標函數根據域間已經確定的角色映射連接生成。目標函數生成算法如算法1所示,具體如下。
1)搜索域A中的所有角色節點,記錄與域B有直接映射連接關系的角色,記集合為
域A用戶通過跨域角色映射連接對域B角色的訪問表示為
同理,得出域B用戶通過跨域角色映射連接對域A角色的訪問表示為crossdoaminB→A
例1對于圖1(b)實例,取域A的權重為2,域B的權重為3(c1=3,c2=2),即
由于求解的最大化域間互操作性為最大值求解,為NSGA-III算法計算方便,將其轉換為求解上式的最小值。
4.2.2域內自治性損失
域內自治性損失,是指消解角色SoD沖突、用戶SoD沖突、關聯沖突等所導致的本地“用戶-角色”授權分配的損失度。
自治性損失目標函數主要根據域間互操作前后,域內的訪問控制授權數量生成。目標函數通過如下過程生成:遍歷域A在沒有跨域訪問控制連接時,所有可能的本地域訪問控制映射。對于域A任意的ri(ri∈RA),其中RA為域A的全部角色集合,ri的授權用戶集表示為。具體如算法2所示。
例2對于圖1(b)實例,域A和域B的域自治性損失的目標函數為
本文考慮以下7種(固有關系約束、角色SoD約束、用戶SoD約束、前提條件約束、基數約束、誘導SoD約束、關聯沖突約束)典型跨域訪問控制沖突,將其轉換為約束方程,利用IP整數規劃方法求解全局無沖突的跨域訪問控制映射策略,約束方程的生成算法將在4.4節具體說明。本文用Uk表示域k的用戶集,Rk表示域k的角色集,7種約束描述如下。
1)固有關系約束。在未經優化的跨域訪問控制策略中,本地域的一些“用戶-角色”授權關系(如用戶通過I-層次關系訪問本地角色)不會因跨域互操作而改變,這些關系將保留在優化后的全局策略中。
2)角色SoD約束。當2個角色所對應的權限互相沖突時,這2個互斥角色不能同時被授權給同一個用戶。
3)用戶SoD約束。出于系統安全性考慮,一個角色的2個互斥用戶不能同時被授權訪問該角色。
4)前提條件約束。只有當不同域的2個角色之間的跨域角色映射連接存在時,本域的高級角色才能連接外域角色。
5)基數約束。出于系統安全性考慮,一個角色被分配的用戶數量受限。
6)誘導SoD約束。若本域的2個角色間存在角色SoD約束,那么這2個角色通過跨域角色映射連接所對應的外域的2個角色間也存在角色SoD約束,稱為誘導SoD約束。
若域k內的2個不同角色間存在角色SoD,而域l內的2個不同角色間也存在角色SoD,則對于任意域內或域外用戶um,表示為
7)關聯沖突約束。本域用戶通過跨域角色映射連接訪問外域角色,并再次通過其他跨域映射角色連接訪問本域高級角色,使本域用戶非法訪問本域的高級角色,從而造成跨域沖突。
若rj是um的授權角色,ri是un的授權角色,存在如下關系
ri與rj間存在跨域角色連接,記為間存在跨域角色連接,記為表示為
在跨域分布式協作場景中,角色、用戶和權限之間的約束關系廣泛存在,為確保跨域策略的無沖突融合、本地策略的安全變動,要完整地生成約束函數。但利用管理員或人工分配的方式效率低、成本高,且難以維護[2,12]。針對上述問題,本文提出約束函數的自動生成算法,對不同的約束條件生成對應的等式或不等式約束。生成算法包括固有關系約束生成算法、角色SoD約束生成算法、用戶SoD約束生成算法、前提條件約束生成算法、基數約束生成算法、誘導SoD生成算法、關聯沖突約束生成算法。具體如下。
4.4.1固有關系約束生成算法
固有關系約束生成算法的核心思想如下:首先遍歷RD中每個角色ri,剔除ri中那些授權用戶中存在用戶SoD約束的角色(因為那些“角色-用戶”的授權關系不能直接確定);求解ri的I-層次下級角色得到集合Ri,因跨域策略優化可能導致ri的授權用戶無法被分配到A-層次的下級角色,因此只考慮I-層次下級角色;最后遍歷用戶集內的角色um,根據4.3節的固有關系約束生成約束等式,并加入約束集合。具體算法如算法3所示。
4.4.2角色SoD約束生成算法
給定域k與域l進行跨域互操作,且2個域內所有用戶的集合為Ukl,角色SoD約束生成算法的輸入為域k與域l內所有角色,記為Rk,輸出為一個存放角色SoD不等式約束的集合,記為C2s。
角色SoD約束生成算法的核心思想如下:首先遍歷Rk中每個角色ri,判斷其RSODri標簽是否為空,若為空則判斷下一個ri,否則繼續執行;其次遍歷RSODri內每個角色rj,并遍歷所有用戶集合Ukl中的每一個用戶um,根據角色SoD約束生成約束不等式,并加入約束集合。具體算法如算法4所示。
4.4.3用戶SoD約束生成算法
給定域D內有角色ri,其授權用戶集為Uri,用表示中的沖突用戶二元組,其中,是2個沖突的用戶。用戶SoD約束生成算法的輸入為域D內所有角色,記為RD,輸出為一個存放用戶SoD的不等式約束的集合,記為C3s。
用戶SoD約束生成算法的核心思想如下。首先遍歷Rk中每個角色ri,判斷其標簽是否為空,若為空則判斷下一個ri,否則將其加入RSoD。其次遍歷RSoD中每個角色rj,對每個rj首先查找其所有A-層次或I-層次的本地域下級角色,記為接著查找其所有A-層次或I-層次的交互域下級角色,記為分為兩步生成:1)在中搜索每個角色rl是否擁有跨域連接;2)對于擁有跨域連接角色,獲取rl的標簽中每個角色的所有下級角色,添加到集合生成集合中每個角色rs;對于每個rs,中每個角色rt,結合中的用戶對,根據用戶SoD約束生成約束集合。具體算法如算法5所示。
4.4.4前提條件約束生成算法
給定域D內有角色ri和角色rj,2個角色的授權用戶集分別為,外域K內有角色rl。前提條件約束生成算法的輸入為域D和外域K內所有角色,記為RD和RK,輸出為一個存放前提條件約束的不等式約束的集合,記為C4s。
前提條件約束生成算法的核心思想如下:首先遍歷RD中每個角色ri,判斷其標簽是否為空,若為空則判斷下一個ri,否則將其加入RM;然后遍歷RM中每個角色ri,查找其所有上級角色放入集合;依次檢索的中的角色rj,并判斷rj與ri之間是否存在A-層次關系,根據前提條件約束生成約束集合。具體算法如算法6所示。
4.4.5基數約束生成算法
給定域D內有角色ri,其授權用戶集為Uri,且同時激活的授權用戶數量為Nlim。基數約束生成算法的輸入為域D內所有角色,記為RD,輸出為一個存放基數約束的不等式約束的集合,記為C5s。
基數約束生成算法的核心思想如下:首先遍歷Rk中每個角色ri,判斷其標簽是否為空,若為空則判斷下一個ri,否則繼續執行;其次對標簽不為空的ri,遍歷其中每個用戶um,并對求和;對以上求得的和根據基數約束生成約束不等式,并加入C5s。具體算法如算法7所示。
4.4.6誘導SoD約束生成算法
若域k與域l進行跨域互操作,um是任意域內或域外用戶。誘導SoD約束生成算法的輸入為域k與域l內所有角色,記為RD,輸出為一個存放誘導SoD約束的不等式約束的集合,記為C6s。
誘導SoD約束生成算法的核心思想如下:首先遍歷Rk中每個角色ri,判斷其標簽是否為空,若為空則判斷下一個ri,否則繼續執行;其次遍歷ri的標簽內每個角色rj;遍歷ri的標簽內每個角色rs;遍歷rj的標簽內每個角色rt;根據誘導SoD約束生成約束不等式,并加入C6s。具體算法如算法8所示。
4.4.7關聯沖突約束生成算法
若域k內有un、ri、rl,域l內有um、rj。關聯沖突約束生成算法的輸入為域k與域l內所有角色,記為RD,輸出為一個存放關聯沖突約束的不等式約束的集合,記為C7s。
關聯沖突約束生成算法的核心思想如下:首先遍歷Rk中每個角色ri,判斷其標簽內跨域連接角色的個數是否大于1,若滿足條件則用rj和rl分別表示其中的低級角色和高級角色,否則繼續執行;遍歷rj的標簽中每個用戶rn;對每個rn,遍歷ri的標簽中每個用戶rm,根據關聯沖突約束生成約束不等式,并加入約束集合。具體算法如算法9所示。
NSGA-III采用基于參考點的非支配排序算法,解決2~15個目標的多目標優化問題時速度快,且同時保證準確性和多樣性,獨特的理想點與小生境可避免在優化過程中陷入局部收斂,該算法的計算復雜性顯著低于NSGA-II算法。相較于一般的遺傳算法,NSGA-III算法需要設置的參數較少、使用方便,初始種群設置無依賴性,染色體使用二進制編碼,找到最優解集后對問題解碼方便。因此,本文采用帶約束的NSGA-III多目標優化算法,在算法中將域間互操作性、域A的自治性損失和域B的自治性損失作為優化的目標函數,將生成的跨域策略沖突的約束函數作為算法的約束,其時間復雜度為O(n2logm-2n)或O(n2m),其中n、m分別為種群個體數目、目標函數個數。算法主要包含以下9個部分。
1)染色體生成。在4.2.1節中,根據例1中圖1(b)的實例得到fcrossdomain,如下式所示。
進行上述操作后,遺傳算法種群中任意個體i可以表示為m+n+l維的決策變量,如式(24)所示。其中
由每一代更新產生的所有染色體的集合,稱為種群,用P表示。
2)約束條件生成。約束條件即4.3節提出的跨域訪問控制約束,利用4.4節提出的約束條件生成算法生成。不符合約束條件的個體會受到不同程度的懲罰,從而淘汰那些不符合條件的個體,使解集中的解都滿足約束條件。
3)種群初始化。在設置一系列算法參數的同時,需要對種群進行初始化操作。為了改進程序性能,使算法以最少的迭代次數達到收斂狀態,需要生成一個適應度較好的種群。本文在初始化過程中,生成每個個體popi的同時,檢查該個體是否滿足所有的約束集合C內的條件,若滿足則將該個體納入種群,否則丟棄。生成初始種群P后,計算其適應度值。
4)參考平面生成。參考平面是一個歸一化的平面,它與所有物鏡軸都有一個截距,NSGA-III中的參考平面用Das等[14]的系統方法生成。該平面輔助尋找廣泛分布在帕累托最優前沿或附近的解,以確保解的多樣性。
5)交叉變異。將種群P復制為P',對P'分別進行交叉和變異操作,使之可能產生更優的個體(即一種可能更優的跨域策略)。
6)適應度值計算。適應度用于衡量每個染色體所對應的一種策略的優良,即所對應的跨域互操作性、域A自治性損失度和域B自治性損失度的高低。如果染色體所對應的跨域互操作性越高、域A自治性損失度和域B自治性損失度越小,表示該染色體適應度越好。適應度值為一個三維向量,種群P中第i個個體的適應度值可以表示為。高適應度值的個體(策略組合)意味在迭代過程中以更高概率保留,低適應度值的個體(策略組合)意味在迭代過程中以更低概率保留,在本文中適應度值范圍為[0,1]。與傳統的NSGA-III不同的是,在計算P'的適應度值時,引入懲罰函數對不滿足約束的個體進行對應維度的懲罰。首先根據3個目標函數和計算種群P'的適應度值,再判斷P'中每個個體popi是否滿足所有的約束等式和不等式條件C。若popi滿足條件,則不修改其適應度值,否則,根據式(24)確定該個體涉及的不滿足約束的二進制決策變量位置,并將此位置對應的適應度值置零。例如,當中含有不符合約束決策變量的決策變量時,則將均置為0(0為最低的適應度),以此降低該個體在迭代中保留下來的概率。符號表述如算法10所示。
7)理想點計算。理想點的三維度(3個目標函數)數值全部是種群中所有個體的最優值。NSGA-III中的理想點的作用與NSGA-II中擁擠度較為相似,都用于非支配排序,但在多目標優化表現更優。選取每一代種群中,在3個維度(跨域互操作性、域A自治性損失度和域B自治性損失度)最優的值作為理想點,越靠近理想點則該染色體被保留的可能性越大。將初始種群P中的N個個體和種群P'中的N個個體混合得到混合種群Pmix,其個體數量為2N,并計算其理想點坐標。即
8)下一代子代的選擇。子代利用非支配排序和個體到理想點的距離,對Pmix中的2N個個體進行分層,選擇其中的N個個體作為子代Pc。
9)計算產生的新種群Pc的適應度值,并判斷當前的迭代次數,若迭代次數達到最大次數,則結束迭代,并進行畫圖及數值輸出;否則,轉向步驟5)。
帶約束的NSGA-III算法的如算法11所示。
由于約束生成算法僅在程序初始化過程中運行一次,其運行時間和輸入的角色節點、用戶規模有關,本文測試的3種規模下,運行時間可以忽略不計。實驗將窮舉法、MOEA/D[13-14]這2種算法與本文提出的帶約束的NSGA-III算法進行對照實驗,多維度比較算法優劣。
5.1.1實驗環境
本文仿真實驗用Python編程實現。開發工具為pycharm2018.2,開發環境為Windows 7 Enterprise(64 bit),Inter(R) Core(TM)i7-3587U CPU @ 2.1 GHz,10 GB內存。
5.1.2實驗用例
為驗證本文所提算法在實際問題中的適用性及效果。本文采用人為構造的數據集,該數據集根據現實的組織機構Z內的角色層級關系,并加入7類典型訪問控制約束進行仿真。數據集分為小、中、大3種不同規模的域間角色關系數據集,將其作為輸入測試算法性能。3種規模數據量如表2所示。
表2 不同數據集的域內和域間結構
實驗評價指標主要為3個,分別是種群中每個個體平均的互操作性(Avgcrossdomain)、域A自治性損失(AvglossA)和域B自治性損失(AvglossB),如式(26)~式(28)所示。
通過計算每一代種群中3個目標函數適應度值的均值,反映種群總體在3個維度的適應度變化。若隨著迭代次數的增加,這3個指標變化較小或不再變化,即NSGA-III算法的解已經收斂。如4.5節中帶約束的NSGA-III算法所示,如果連續5次滿足第i+1代和第i代種群的3個指標(Avgcrossdomain、AvglossA和AvglossB)的數值分別相差不超過1‰,則認為3個評價指標達到穩定點。
本文在3種不同規模大小的數據集上進行測試,并在每種數據集上,分別用窮舉法、MOEA/D算法與本文的帶約束的NSGA-III算法進行對比。實驗結果從多個維度進行比較:3個目標函數的評價函數(Avgcrossdomain、AvglossA和AvglossB)達到穩定點的時間,解的多樣性、穩定性、準確性。
5.2.1小規模數據集測試
本文以小規模數據集(如圖2所示)為例,詳述優化操作的具體過程,根據4.2節目標函數生成算法生成3個目標函數,具體如下。
圖2 域間RBAC策略映射的示例
根據4.4節約束條件生成算法,得到的約束等式/不等式如下所示。
小規模數據集測試設置的參數為:迭代次數50次,種群大小200,決策向量的每一位的交叉、變異概率為,測試中決策變量維度為43。
小規模數據集測試的輸入圖即為第3.1節的圖1(c),共生成約束24條,執行時間為4 s。
互操作性與自治性損失的穩定點。圖3和圖4分別是MOEA/D算法和帶約束的NSGA-III算法的Avgcrossdomain、AvglossA和AvglossB這3條評價函數的變化曲線。MOEA/D算法的3條評價函數收斂曲線收斂速度較快,在7次迭代就趨于收斂,達到穩定點。帶約束的NSGA-III算法的評價函數在16次迭代趨于收斂,相對于MOEA/D算法收斂速度較慢。窮舉法實驗中運行時間過長,即使是規模較小的數據集,也無法在有限時間內求解所有符合約束條件的正確解。
圖3 MOEA/D的Avgcrossdomain、AvglossA和AvglossB指標變化曲線(小規模數據集)
圖4 NSGA-III的Avgcrossdomain、AvglossA和AvglossB指標變化曲線(小規模數據集)
圖5和圖6分別是MOEA/D算法和帶約束的NSGA-III算法的解多樣性變化曲線,可見帶約束的NSGA-III算法的解具有豐富的多樣性,多次試驗的解集一致,且經驗證這些解都是符合所有約束條件的正確解。MOEA/D算法的解多樣性較差,算法容易局部收斂而無法得到所有全部正確的解,多次實驗得到的解并不相同,且解集中含有少量的解并不能滿足所有約束條件,即為錯誤解。
5.2.2中規模數據集測試
中規模數據集測試設置的參數為:迭代次數1 800次,種群大小200,決策向量的每一位的交叉、變異概率為。由于種群越大,每一代執行時間越長,測試中決策變量維度為2 556。中規模數據集測試的域A和域B的域內“用戶-角色”層級分別如圖7和圖8所示,共生成約束276條,執行時間為4.5 h。
圖5 MOEA/D的解多樣性變化曲線(小規模數據集)
互操作性與自治性損失的穩定點。圖9和圖10分別是MOEA/D算法和帶約束的NSGA-III算法的Avgcrossdomain、AvglossA和AvglossB這3條評價函數的變化曲線。MOEA/D算法在510次迭代后收斂并達到穩定點,帶約束的NSGA-III算法在1 250次迭代后收斂并達到穩定點。
解的多樣性、穩定性、準確性分析。圖11和圖12分別是MOEA/D算法和帶約束的NSGA-III算法的解多樣性變化曲線。由圖11和圖12可知,因MOEA/D算法容易陷入局部收斂,規模越大局部收斂越明顯,即解的多樣性越差。帶約束的NSGA-III算法的解的多樣性好,且更穩定。
5.2.3大規模數據集測試
大規模數據集測試設置的參數為:迭代次數5 000次,種群大小300,決策向量的每一位的交叉、變異概率為,測試中決策變量維度為6 539。
3個評價指標的變化趨勢如圖13所示,執行時間為91 h。大規模數據集測試中共有約束435條,因規模較大無法清楚顯示細節,故不再給出“用戶-角色”層級圖。
從圖13可以看出,算法在3 100代左右達到收斂,3個評價指標變化開始變小或穩定不變。
由帶約束的NSGA-III算法解得的結果,去重后以文本形式輸出,在大數據集測試下共得到200組符合約束的帕累托最優解,經驗證這些解均為符合約束條件的可行解。
圖6 NSGA-III算法的解多樣性變化曲線(小規模數據集)
圖9 MOEA/D的Avgcrossdomain、AvglossA和AvglossB 指標變化曲線(中規模數據集)
圖10 NSGA-III的Avgcrossdomain、AvglossA和AvglossB 指標變化曲線(中規模數據集)
圖11 MOEA/D的解多樣性變化曲線(中規模數據集)
圖12 NSGA-III的解多樣性變化曲線(中規模數據集)
圖13 NSGA-III的Avgcrossdomain、AvglossA和AvglossB指標變化曲線(大規模數據集)
Avgcrossdomain、AvglossA和AvglossB達到穩定點的時間、解的多樣性、穩定性、準確性實驗結果與中數據集測試相似。在多樣性方面,由于解空間巨大,預設的種群大小為300,迭代過程中基本每一代保持了300種不同的染色體,直至達到穩定點后輸出300種不同類型的染色體(即可行解)。
對3種規模實驗下,窮舉法、MOEA/D算法和帶約束的NSGA-III算法進行比較。經過上述實驗,可以得到下面的結論。
窮舉法雖然準確性高,但運行時間非常長。無法處理復雜的域間映射關系,在應對多樣的約束條件時,不能在有效的時間內解得可行解。在過去的多類相關研究中[8-9,11],研究者著眼于模型、語義、模式格式和約束的研究,絕大多數采用管理員人工授權等,很少對其理論在實際場景中的可行性進行驗證。窮舉法對應管理員授權方式,在本文無實際輸出結果,但也論證了在現實多約束環境下管理員方式的局限性。
帶約束的NSGA-III算法同MOEA/D算法相比,雖然運行速度沒有MOEA/D算法快,但其運行速度在現實中是可以接受的。并且帶約束的NSGA-III算法在解的準確性和多樣性方面,遠優于MOEA/D算法。
本文針對如何平衡域間互操作性和域內自治性這一重要問題,提出一種基于多目標整數規劃優化的跨域訪問控制策略映射機制。首先,該機制可以平衡域間互操作性和域內自治性,保證域間互操作性最大化且域內自治性損失最小。在此基礎上,該機制在傳統域間訪問控制約束的基礎上加入前提條件與基數等約束,使模型更接近實際應用。在加入目標函數、約束函數自動生成算法后,大大減少了人工管理員的煩瑣操作。最后,本文實現的帶約束的NSGA-III優化算法,在模擬現實機構特征的小中大規模數據集上進行測試,實驗結果進一步說明了機制的高效性和準確性。