張 帥 郭云飛 孫鵬浩 程國振 扈紅超
①(戰(zhàn)略支援部隊信息工程大學(xué)信息技術(shù)研究所 鄭州 450002)
②(軍事科學(xué)院 北京 100000)
隨著云計算技術(shù)的持續(xù)發(fā)展,已經(jīng)由“面向云遷移應(yīng)用”的階段演進到“面向云構(gòu)建應(yīng)用”的階段,即由“以資源為中心”演進到“以應(yīng)用為中心”的云原生階段[1]。在云原生環(huán)境下,傳統(tǒng)單體式應(yīng)用按照功能邏輯被拆分為多個微服務(wù),容器技術(shù)則為微服務(wù)提供了輕量級運行環(huán)境[2]。云原生環(huán)境下應(yīng)用可以充分利用云計算彈性、敏捷和資源池等特性,加速應(yīng)用的開發(fā)與迭代過程,提高應(yīng)用的可擴展性。由于云原生的突出優(yōu)勢,云原生技術(shù)生態(tài)不斷演進,云原生思想也逐漸深入人心[3,4]。
云原生徹底改變了云端應(yīng)用的設(shè)計、開發(fā)、部署和運行模式,同時也帶來了新的安全威脅。微服務(wù)化拆分使得服務(wù)間的交互接口爆炸式增長,導(dǎo)致微服務(wù)攻擊面難以管控?;谌萜鞯妮p量級虛擬化技術(shù)使得同一宿主機上的多個容器共享操作系統(tǒng)內(nèi)核,給攻擊者在集群中橫向移動提供了便利[5]。在傳統(tǒng)網(wǎng)絡(luò)安全策略中,主要使用基于邊界部署的防護方案,如防火墻、入侵檢測等[6]。然而,云原生環(huán)境下傳統(tǒng)應(yīng)用軟件的邊界逐漸模糊化,防火墻、入侵檢測等防護設(shè)備的部署位置難以確定。因此,傳統(tǒng)基于邊界的防護模型無法完全應(yīng)對云原生環(huán)境下的安全威脅[7]。作為一種典型的主動防御技術(shù),移動目標(biāo)防御(Moving Target Defense, MTD)通過持續(xù)改變防御目標(biāo)的攻擊面,以起到阻斷攻擊鏈的作用。常見的MTD技術(shù)包括執(zhí)行環(huán)境動態(tài)化[8]、軟件實現(xiàn)動態(tài)化[9]、網(wǎng)絡(luò)拓撲動態(tài)化[10]等等。針對云原生環(huán)境下的MTD策略的優(yōu)化設(shè)計,文獻[11]提出基于動態(tài)安全評估與配置優(yōu)化的MTD策略。該策略通過動態(tài)評估容器云環(huán)境中的關(guān)鍵節(jié)點,實現(xiàn)對MTD策略防護對象的動態(tài)調(diào)整。由于上述策略僅對關(guān)鍵節(jié)點進行防護,難以防范攻擊者“繞過”關(guān)鍵節(jié)點的攻擊場景。
針對以上問題,本文提出一種基于深度強化學(xué)習(xí)的MTD策略優(yōu)化方案(SmartSCR)。與文獻[11]不同的是,本文考慮采用動態(tài)清洗策略對目標(biāo)應(yīng)用下所有的微服務(wù)進行防護,以應(yīng)對云原生環(huán)境下復(fù)雜的攻擊場景。同時,使用深度強化學(xué)習(xí)技術(shù)求解最優(yōu)的動態(tài)清洗周期,以實現(xiàn)防御效率的最大化。首先,對云原生環(huán)境下微服務(wù)化、容器化引入的復(fù)雜攻擊場景進行分析,建立了微服務(wù)攻擊圖(Microservice Attack Graph, MAG)模型,并基于MAG模型對MTD策略下的防御效率進行刻畫;然后,提出基于深度Q網(wǎng)絡(luò)(Deep Q Network, DQN)的MTD安全配置優(yōu)化算法,以應(yīng)對云原生應(yīng)用規(guī)模較大時帶來的狀態(tài)空間爆炸問題。實驗結(jié)果表明,即使面對較大規(guī)模的云原生應(yīng)用,SmartSCR仍然能夠快速實現(xiàn)收斂,并實現(xiàn)逼近最優(yōu)的防御效率。
本節(jié)以實際場景為例,闡明了云原生環(huán)境下存在的主要安全威脅,分析了MTD技術(shù)解決上述安全威脅的獨特優(yōu)勢。并梳理出云原生場景下應(yīng)用MTD技術(shù)的主要挑戰(zhàn)。
云原生環(huán)境下,單體式應(yīng)用被拆分為多個微服務(wù),運行在云計算集群中。多個微服務(wù)間協(xié)調(diào)配合,通過調(diào)用鏈的方式實現(xiàn)特定功能。對于每個微服務(wù),其運行環(huán)境使用容器這種輕量級虛擬化技術(shù),實現(xiàn)了微服務(wù)運行環(huán)境的隔離需求。同時,每個微服務(wù)將調(diào)整其副本數(shù)量,已應(yīng)對自身動態(tài)變化的并發(fā)請求。然而,將單體式應(yīng)用拆分為微服務(wù)模式,同樣導(dǎo)致攻擊面爆炸式增長。以圖1為例,本文從攻擊目標(biāo)、攻擊過程和攻擊者能力假設(shè)3方面描述安全威脅。
(1)攻擊目標(biāo)。在云原生環(huán)境下,云計算集群中運行的所有微服務(wù)都可能成為攻擊者的目標(biāo)。對于第i個微服務(wù),其攻擊面可由應(yīng)用層攻擊面和容器層攻擊面組成,可表示為A Si={Ai,Ci}。其中,應(yīng)用層攻擊面Ai包含應(yīng)用自身代碼以及代碼所依賴的代碼庫、框架等。容器層攻擊面Ci指的是微服務(wù)應(yīng)用所使用的容器運行環(huán)境。
(2)攻擊過程。本文采用網(wǎng)絡(luò)殺傷鏈(Cyber Kill Chain, CKC)模型來分析攻擊者的攻擊過程[7]。在該模型中,攻擊者首先需要對攻擊目標(biāo)進行偵察探測,獲取發(fā)起網(wǎng)絡(luò)攻擊所需的信息。然后,攻擊者基于收集到的信息(如目標(biāo)存在的漏洞信息),并對目標(biāo)展開攻擊。
(3)攻擊者能力假設(shè)。假設(shè)攻擊者處于云計算集群外部,通過互聯(lián)網(wǎng)對微服務(wù)應(yīng)用展開攻擊。攻擊者首先只能攻擊對外開放的微服務(wù)的應(yīng)用層攻擊面,如服務(wù)A。當(dāng)攻擊者通過應(yīng)用層漏洞成功挾持服務(wù)A時,攻擊者有以下兩種攻擊模式,以實現(xiàn)在云環(huán)境的橫向移動。
(a) 面向應(yīng)用層的攻擊。攻擊者從應(yīng)用層逃逸后,繼續(xù)尋找網(wǎng)絡(luò)可達的微服務(wù),對其應(yīng)用層攻擊面展開攻擊。假設(shè)云原生環(huán)境下網(wǎng)絡(luò)配置服從最小權(quán)限原則[11],即只有當(dāng)微服務(wù)間有調(diào)用關(guān)系時,兩者網(wǎng)絡(luò)才是可達的。如圖1所示,攻擊者在挾持服務(wù)A后,可繼續(xù)對服務(wù)B和服務(wù)C展開攻擊。
圖1 云原生環(huán)境下微服務(wù)攻擊面示意圖
(b) 面向虛擬化層的攻擊。攻擊者從應(yīng)用層逃逸后,進入到該微服務(wù)的容器層攻擊面,尋找容器的漏洞以實現(xiàn)容器逃逸(例如容器配置漏洞CVE-2016-5195)。若能成功實現(xiàn)容器逃逸,則攻擊者可獲得該容器所在計算節(jié)點的權(quán)限,移動至該計算節(jié)點上的其他容器,直接對容器環(huán)境中運行的服務(wù)進行挾持。如圖1所示,攻擊者在挾持服務(wù)A之后,可直接進入到容器A。若攻擊者成功從容器A逃逸,則可進入同駐的容器D,并挾持容器D所運行的服務(wù)D。
基于上述分析可知,云原生環(huán)境下微服務(wù)化、容器化導(dǎo)致攻擊面陡增,攻擊路徑爆炸增長,安全管控十分困難。
基于MTD的思想,本文考慮通過動態(tài)清洗微服務(wù)的方式,增加攻擊者的攻擊逃逸以及橫向移動的難度,實現(xiàn)云原生環(huán)境下的安全管控。例如,定時刪除微服務(wù)A的副本,并基于鏡像創(chuàng)建新的副本。假設(shè)攻擊者正在嘗試攻擊該微服務(wù)副本,該清洗策略會使得副本的IP地址發(fā)生變化,并清除掉所有攻擊者已設(shè)法注入的文件,使得攻擊者前功盡棄。同樣地,假設(shè)攻擊者已經(jīng)完成了對被清洗微服務(wù)副本的劫持,并設(shè)法橫向移動,該清洗策略會使得攻擊者喪失對該副本的控制。在文獻[11]中,防御者僅考慮對應(yīng)用中的關(guān)鍵目標(biāo)使用移動目標(biāo)防御策略。然而,該文獻主要關(guān)注應(yīng)用狀態(tài)變化后對關(guān)鍵目標(biāo)的實時調(diào)整,仍存在以下問題有待于優(yōu)化:(1)未能給防御者提供關(guān)鍵目標(biāo)數(shù)量選取的理論依據(jù);(2)未考慮移動目標(biāo)防御策略的參數(shù)設(shè)定問題。因此,防御者只能盲目地選取上述參數(shù),難以實現(xiàn)安全和開銷的折中。與文獻[11]思路不同的是,本文考慮對所有的微服務(wù)都使用主動防御策略,通過調(diào)整的防御策略參數(shù)的方式優(yōu)化防御效率,無需防御者設(shè)定參數(shù)即可實現(xiàn)安全與開銷的折中。
盡管動態(tài)清洗策略能夠顯著提高攻擊者完成攻擊與在內(nèi)網(wǎng)橫向移動的難度,但是,該策略也會對服務(wù)質(zhì)量造成影響。為了平衡微服務(wù)的安全與性能,最大化防御策略的效率,需要對不同微服務(wù)的清洗周期T進行優(yōu)化設(shè)計。該問題主要面臨的挑戰(zhàn)如下:
(1)基于云原生環(huán)境下的安全威脅分析可知,攻擊者在云環(huán)境中攻擊路徑多樣。而為了實現(xiàn)高效的防御,則需要以較高的強度,動態(tài)清洗攻擊路徑上的關(guān)鍵微服務(wù),實現(xiàn)“要地”的重點防御。然而,目前缺乏相應(yīng)的安全模型,對云原生環(huán)境下攻擊者的多樣化攻擊路徑進行刻畫,并衡量在不同清洗周期T下的防御效果。
(2)在云原生環(huán)境下,一個復(fù)雜的應(yīng)用中可能包含大量的微服務(wù)。例如,Uber中包含了大約2200個微服務(wù)[12]。同時,每個微服務(wù)還可能包含多個副本。為了給海量的微服務(wù)副本合理配置清洗周期,MTD策略優(yōu)化算法需要有著較強的可擴展性,以應(yīng)對云原生應(yīng)用規(guī)模較大的場景。
針對云原生環(huán)境下MTD策略所面臨的挑戰(zhàn),本節(jié)首先根據(jù)攻擊者內(nèi)網(wǎng)滲透的特點,提出MAG模型,刻畫攻擊者多樣化的攻擊路徑以及MTD效果;然后,基于MAG模型,詳細歸納了動態(tài)清洗策略所面臨的清洗周期配置問題。最后,將MTD配置優(yōu)化問題轉(zhuǎn)化為馬爾可夫決策過程(Markov Decision Process, MDP)。
基于對云原生環(huán)境下攻擊者攻擊路徑的分析,本文對MAG做如下定義。
定義1 使用有向圖G=(N,E)來表示MAG,其中,N是圖中節(jié)點的集合,包括攻擊者I與微服務(wù)所有的攻擊面。假設(shè)云環(huán)境中應(yīng)用由M個微服務(wù)副本組成,則N={I,A1,A2,...,AM,C1,C2,...,CM}。其中,{A1,A2,...,AM}代 表應(yīng)用層攻擊面,{C1,C2,...,CM}代 表虛擬化層攻擊面。E?N×N是圖中所有邊的集合,每條邊代表著攻擊者的攻擊路徑。
基于上述定義,對于節(jié)點Na,Nb ∈N,a ?=b,邊e=(Na,Nb)表 示攻擊者基于已挾持的節(jié)點Na,利用節(jié)點Nb的 漏洞橫向移動至Nb。本文考慮采用MTD策略下成功抵御攻擊的概率來表示圖中邊的權(quán)重。假設(shè)節(jié)點Nb的動態(tài)清洗周期為Tb,則邊e的權(quán)重與兩方向因素相關(guān):(1)節(jié)點Nb上存在的漏洞利用的難易程度;(2)節(jié)點Nb的動態(tài)清洗周期為Tb。
針對節(jié)點上漏洞利用的難易程度,考慮基于通用漏洞評分系統(tǒng)(Common Vulnerability Scoring System, CVSS)進行刻畫[13]。在最新發(fā)布的CVSS 3.1規(guī)范中,包含了漏洞的以下指標(biāo):基礎(chǔ)得分度量、臨時得分度量和環(huán)境得分度量。為了刻畫漏洞利用的難易程度,使用漏洞利用困難度 E M進行評估?;诨A(chǔ)得分度量中的可利用性指標(biāo), EM具體可表示為
其中, AV, A C, P R 和U I均為漏洞可利用性指標(biāo)中的參數(shù),分別代表攻擊向量、攻擊復(fù)雜度、特權(quán)需求度和用戶交互度。對于每個節(jié)點所代表的攻擊面,可能存在多個可利用的漏洞。然而,無法預(yù)估攻擊者的行為,判斷其攻擊時會選擇的漏洞。針對該問題,本文使用臨時得分度量衡量漏洞被攻擊者選擇的權(quán)重W。通過對節(jié)點上所有漏洞利用的困難程度進行加權(quán)平均,節(jié)點漏洞利用的困難程度ND可表示為
其中,V表示該節(jié)點代表的攻擊面存在的所有漏洞的集合。
為了衡量不同清洗周期下攻擊者攻擊成功的概率,考慮采用S型函數(shù)建模攻擊成功概率隨攻擊時間的變化,該模型也被廣泛應(yīng)用于對CKC模型下攻擊成功概率的衡量[14]。在該模型下,攻擊成功概率patt∈(0,1)隨著攻擊時間的增加而增加,可分為兩個階段:(1)在第1階段,攻擊成功概率的增長率逐漸增加,代表著攻擊者獲取到的漏洞利用信息逐漸增加;(2)在第2階段,攻擊成功概率的增長率逐漸減少,代表著攻擊者關(guān)于攻擊目標(biāo)可獲取的漏洞利用信息逐漸飽和。攻擊成功概率具體可表示為
其中,p0表 示攻擊成功概率的下限,p1表示攻擊成功概率上限,β表示攻擊成功概率的增長率,代表攻擊者攻擊能力的強弱,α=f(ND)表示攻擊者達到最大攻擊成功概率的增長率所需時間,代表漏洞利用的難易程度。函數(shù)f(·)為 漏洞利用難易程度ND至參數(shù)α的映射。
基于上述模型,對于邊e=(Na,Nb),Na ?=Nb,采用防御成功概率表示該邊的權(quán)重D(e)。 當(dāng)Na與Nb同屬于同一個微服務(wù)副本時,即Na與Nb分別屬于同一副本的應(yīng)用層攻擊面和虛擬化層攻擊面時,攻擊者可直接進行橫向移動,無需進行漏洞利用,因此此時防御成功概率為0。當(dāng)Na與Nb網(wǎng)絡(luò)不可達時,攻擊者無法進行橫向移動,因此防御成功概率為1。當(dāng)網(wǎng)絡(luò)可達且需要通過漏洞利用才能實現(xiàn)橫向移動時,假設(shè)攻擊者充分利用微服務(wù)副本靜態(tài)的時間開展攻擊,則防御成功概率可基于式(3)進行求解。綜上,邊的權(quán)重D(e)具體可表示為
其中,Tb表示節(jié)點Nb的清洗周期。
對于包含M個微服務(wù)的應(yīng)用S={s1,s2,...,sM},假設(shè)每個微服務(wù)有自身的清洗周期,應(yīng)用整體的安全配置可表示為H={T1,T2,...,TM}。當(dāng)微服務(wù)副本數(shù)量及每個副本所運行的節(jié)點確定后,便可基于MAG模型生成圖G=(N,E)。 假設(shè)PN={n1,n2,...,nW},PN?N是云環(huán)境下需要保護的節(jié)點集合,攻擊者會選擇最容易的攻擊路徑對目標(biāo)進行攻擊。因此,攻擊者達成攻擊目標(biāo)的難易程度可以采用圖G中攻擊者到攻擊目標(biāo)的最短距離進行衡量。相應(yīng)地,系統(tǒng)的安全性能也能夠由攻擊者實現(xiàn)攻擊目標(biāo)的難易程度表示。然而,由于防御方無法感知攻擊者的攻擊目標(biāo),因此考慮采用圖G中攻擊者到所有目標(biāo)最短距離的平均值刻畫系統(tǒng)的安全性指標(biāo)η,具體可表示為
其中,σG(I,n) 表示圖G中從攻擊者I到攻擊目標(biāo)n的最短路徑。
為了提高系統(tǒng)的安全性,顯然動態(tài)清洗策略的周期越小,攻擊者越難以完成攻擊,系統(tǒng)的安全性也就越高。然而,動態(tài)清洗策略也會給系統(tǒng)的性能帶來影響,頻繁的動態(tài)清洗會影響應(yīng)用的服務(wù)質(zhì)量(Quality of Service, QoS)。因此,考慮采用單位時間動態(tài)清洗次數(shù)作為防御策略的開銷指標(biāo)c ost,具體可表示為
為了最優(yōu)化系統(tǒng)的防御配置,定義防御效率DE為系統(tǒng)安全性與防御開銷的比值。同時,以最優(yōu)化DE為目標(biāo),最優(yōu)化防御配置H,可實現(xiàn)對云環(huán)境下關(guān)鍵攻擊面的重點防御,防御資源精準(zhǔn)配置。該優(yōu)化問題可表示為
MDP是序貫決策的數(shù)學(xué)模型,可由5元組M=〈S,A,P,R,γ〉表 示[15]。其中,S表示有限的狀態(tài)集合,A表示有限的動作集合,P(St+1|St,a)表示在狀態(tài)St下 ,執(zhí)行體動作a∈A使得狀態(tài)變化為St+1的概率。R(St,a) 表示在狀態(tài)St下執(zhí)行動作a的收益值。γ∈[0,1]是折扣因子,用于控制未來收益與當(dāng)前收益的折中。強化學(xué)習(xí)的目的是求解出由狀態(tài)St映 射至動作a的策略函數(shù)π?(a|St),使得累計回報值最大。其中,累計回報值由貝爾曼方程給出[15]。
本文的安全配置優(yōu)化問題可轉(zhuǎn)化為MDP問題。將連續(xù)時間以固定時間間隔 ?t進行抽樣,在t時刻,智能體需要獲取目前應(yīng)用狀態(tài)R St以及安全配置Ht, 作為當(dāng)前的狀態(tài)輸入,即St={RSt,Ht}。對于狀態(tài)輸出,可以對安全配置中的清洗周期以間隔 ?T進行離散化抽樣。每次執(zhí)行動作時,先選取一個微服務(wù),然后將其清洗周期增加或減少 ?T,或是維持配置不變。因此,對于M個微服務(wù),動作集合中共有( 2M+1)種可選動作。每次執(zhí)行完動作后,需要對當(dāng)前安全配置Ht進行更新。對于當(dāng)前的收益,可使用優(yōu)化問題中的防御效率 DE進行衡量。
本節(jié)主要論述SmartSCR的設(shè)計,包括其總體架構(gòu)設(shè)計以及基于DQN的安全配置優(yōu)化算法。
SmartSCR基于容器云編排框架Kubernetes實現(xiàn),其架構(gòu)如圖2所示。SmartSCR包括微服務(wù)狀態(tài)監(jiān)控模塊、安全策略優(yōu)化模塊和微服務(wù)安全控制模塊。微服務(wù)狀態(tài)監(jiān)控模塊負責(zé)獲取應(yīng)用在集群中的運行狀態(tài)信息。應(yīng)用的運行狀態(tài)指的是每個微服務(wù)的副本數(shù)量以及每個副本所運行的宿主機信息。微服務(wù)狀態(tài)監(jiān)控模塊會將最新的狀態(tài)發(fā)送給安全策略優(yōu)化模塊。安全策略優(yōu)化模塊負責(zé)根據(jù)應(yīng)用的運行狀態(tài),生成最優(yōu)的應(yīng)用安全配置,其處理過程如下:安全策略優(yōu)化模塊將應(yīng)用的運行狀態(tài)和當(dāng)前安全配置進行預(yù)處理后,作為DQN算法的輸入數(shù)據(jù)傳輸?shù)狡渖窠?jīng)網(wǎng)絡(luò)的輸入層。經(jīng)過DQN算法對安全配置進行迭代優(yōu)化并實現(xiàn)收斂后,將優(yōu)化后的安全配置發(fā)送至微服務(wù)安全控制模塊。微服務(wù)安全控制模塊通過與Kubernetes進行交互,按照當(dāng)前的安全配置對微服務(wù)進行管理。在微服務(wù)副本運行時間達到清洗時間后,對微服務(wù)副本執(zhí)行清洗操作。在對副本進行清洗時,微服務(wù)安全控制模塊會將每個微服務(wù)中副本的清洗事件放入一個獨立的隊列中。并且,只有當(dāng)清洗事件執(zhí)行完成后,才會從隊列中取出并執(zhí)行下一個清洗事件。通過該機制,保證了動態(tài)清洗策略不會影響服務(wù)的可用性。SmartSCR的核心在于基于DQN的安全策略優(yōu)化模塊能夠根據(jù)輸入的應(yīng)用狀態(tài),迅速對安全配置進行優(yōu)化。后續(xù)將對該基于DQN的自適應(yīng)安全配置算法進行詳細介紹。
圖2 SmartSCR總體架構(gòu)圖
為了解決上述MDP問題,傳統(tǒng)研究中均采用基于值函數(shù)迭代的方式進行求解,具體包括基于蒙特卡羅的強化學(xué)習(xí)和基于時間差分的強化學(xué)習(xí)等方法[15]。在這些方法中,需要記錄所有狀態(tài)和動作對應(yīng)的值函數(shù),作為學(xué)習(xí)到的“經(jīng)驗”。當(dāng)狀態(tài)空間較大時,狀態(tài)-動作值函數(shù)的記錄、查詢與迭代更新都會產(chǎn)生較大開銷。為了實現(xiàn)在大規(guī)模狀態(tài)空間進行強化學(xué)習(xí),DQN算法將強化學(xué)習(xí)與深度學(xué)習(xí)結(jié)合,將狀態(tài)作為神經(jīng)網(wǎng)絡(luò)的輸入,將動作作為神經(jīng)網(wǎng)絡(luò)的輸出,將在該狀態(tài)下對應(yīng)動作的輸出值作為狀態(tài)-動作值函數(shù)。通過不斷與環(huán)境交互產(chǎn)生訓(xùn)練數(shù)據(jù),訓(xùn)練神經(jīng)網(wǎng)絡(luò),使其不斷逼近當(dāng)前環(huán)境的狀態(tài)-動作值函數(shù)。
其中,Q(Sj,a;θj)表 示神經(jīng)網(wǎng)絡(luò)參數(shù)為θj時,輸入Sj下 動作a對 應(yīng)是輸出值;yj是評估網(wǎng)絡(luò)的學(xué)習(xí)目標(biāo),由當(dāng)前收益與評估網(wǎng)絡(luò)計算可得,具體可表示為
為了提高DQN的穩(wěn)定性與收斂速度,經(jīng)驗回放機制與定期更新機制被應(yīng)用于DQN的訓(xùn)練。在經(jīng)驗回放機制中,會將DQN所學(xué)到的“經(jīng)驗”存到某個存儲空間中。假設(shè)經(jīng)驗復(fù)用池容量為D,當(dāng)經(jīng)驗池中存儲滿時,才會開始對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。每次訓(xùn)練迭代中,隨機從存儲中選取特定數(shù)量的“經(jīng)驗”用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,以減少訓(xùn)練數(shù)據(jù)之間的相關(guān)性。在定期更新機制中,每經(jīng)過固定的迭代步數(shù),目標(biāo)網(wǎng)絡(luò)會拷貝評估網(wǎng)絡(luò)的參數(shù)θ作為自身參數(shù)。
最優(yōu)MTD策略求解過程如算法1所示。在Smart-SCR中,DQN中神經(jīng)網(wǎng)絡(luò)采用前饋神經(jīng)網(wǎng)絡(luò),使用應(yīng)用的狀態(tài)作為神經(jīng)網(wǎng)絡(luò)的輸入,離散化后的MTD策略參數(shù)作為神經(jīng)網(wǎng)絡(luò)的輸出。算法中主要涉及DQN與環(huán)境交互的接口,狀態(tài)、動作和收益值。具體設(shè)計如下:
算法1 基于DQN的安全配置優(yōu)化算法訓(xùn)練
(1)狀態(tài)。狀態(tài)數(shù)據(jù)由應(yīng)用的運行狀態(tài)與安全防護配置組成。為了便于神經(jīng)網(wǎng)絡(luò)處理,假設(shè)集群中有UN個計算節(jié)點,共有M個微服務(wù),第i個微服務(wù)的副本數(shù)為 URi,則第i個微服務(wù)的運行狀態(tài)RMSi=[ind1,ind2,...,indURi] 。 其 中ind∈[1,UN]且為整數(shù),指的是該副本所在的計算節(jié)點的編號。應(yīng)用的運行狀態(tài)可由所有微服務(wù)的運行狀態(tài)組成,即RS=[RMS1,RMS2,...,RMSM]。組合當(dāng)前應(yīng)用的運行狀態(tài)和安全配置,便可得到輸入的狀態(tài)數(shù)據(jù),即St={RSt,Ht}。為了產(chǎn)生大量訓(xùn)練數(shù)據(jù),可隨機生成每個微服務(wù)的副本數(shù)量,并按照容器云平臺調(diào)度策略模擬每個副本所調(diào)度到的計算節(jié)點,由此作為當(dāng)前迭代的應(yīng)用狀態(tài)。同時,安全防護策略也可通過隨機的方式生成。
(2)動作。DQN算法的動作取決于輸出層取值。在每次迭代中,可以選擇以 ?T為基本單位,增加或是減小某個微服務(wù)的跳變周期,或是保持安全配置不變。
(3)收益值。在計算當(dāng)前收益時,可以基于輸入的運行狀態(tài),生成MAG模型,并結(jié)合安全防護配置,計算出防御效率DE作為收益。
本文在實際容器云環(huán)境中驗證SmartSCR的有效性。本文采用容器云編排平臺Kubernetes搭建容器云集群。集群共包括11臺服務(wù)器,配置均為40核,64 GB內(nèi)存,2 TB 磁盤。其中,10臺服務(wù)器作為集群計算節(jié)點,1臺服務(wù)器作為集群管理節(jié)點。同時,SmartSCR也運行在集群管理節(jié)點上。在該容器云集群上,部署了一個Web應(yīng)用,該應(yīng)用由4個微服務(wù)組成,相互間調(diào)用關(guān)系與圖1相同。該應(yīng)用的具體信息以及存在漏洞情況如表1所示?;谖⒎?wù)攻擊困難度,可以求解出不同清洗周期下的攻擊成功概率,該映射需要對攻擊者能力進行合理假設(shè)。本文參照文獻[14]中對攻擊者能力的假設(shè),在不同清洗周期下,求出不同微服務(wù)的成功攻擊概率。
表1 應(yīng)用漏洞信息表
同時,假設(shè)每個微服務(wù)最大副本數(shù)為50,并以此設(shè)計DQN算法的輸入;當(dāng)微服務(wù)副本數(shù)量不足50個時,DQN算法輸入未使用到的部分則置為0。在實際環(huán)境中,微服務(wù)會按照請求強度調(diào)整自身副本數(shù)量。為了在實驗中模擬實際生產(chǎn)環(huán)境,考慮微服務(wù)規(guī)模較大的場景,假設(shè)所有微服務(wù)都具有50個副本,并通過Kubernetes調(diào)度器將這些副本調(diào)度到計算節(jié)點上運行。假設(shè)攻擊者的目標(biāo)為修改該應(yīng)用中Mysql的數(shù)據(jù)。在MAG模型生成時,Tomcat,Memcached和ImageMagick的每個副本,都在MAG模型中有著相對應(yīng)的應(yīng)用層節(jié)點和虛擬化層節(jié)點。而對于Mysql,由于其是有狀態(tài)的微服務(wù),多個Mysql副本并不會獨立提供服務(wù),而是會通過Mysql集群的方式提供服務(wù)。在該模式下,任意一個Mysql副本的數(shù)據(jù)被改動,都等價于攻擊者實現(xiàn)了攻擊目標(biāo)。因此,本文考慮將多個Mysql副本調(diào)度到在同一個計算節(jié)點上,以最小化攻擊面。同時,在MAG模型中,多個Mysql副本組成的Mysql集群僅等價于1個應(yīng)用層節(jié)點以及1個虛擬化層節(jié)點。
對于DQN,神經(jīng)網(wǎng)絡(luò)的隱藏層采用2層全連接結(jié)構(gòu),隱藏層神經(jīng)元數(shù)量分別設(shè)置為64和32。神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率為 5 ×10?4,折扣因子γ=0.9,每次訓(xùn)練抽取的最小批次數(shù)據(jù)L=32,目標(biāo)網(wǎng)絡(luò)的更新步長為500。
在實驗中,將本文所提出的SmartSCR分別與統(tǒng)一配置策略[7]、DSEOM[11]和最優(yōu)策略進行對比,突出SmartSCR的優(yōu)勢。對比策略的詳細信息如下:
(1) 統(tǒng)一配置策略對微服務(wù)動態(tài)周期的配置的問題進行了簡化,假設(shè)所有微服務(wù)的動態(tài)周期相同,從而大大減小了問題求解的計算量,并可通過遍歷的方式對動態(tài)周期進行求解;文獻[7]中在實現(xiàn)動態(tài)清洗策略時便采用該策略對問題進行簡化;
(2) 最優(yōu)策略通過暴力搜索的方式,求出最優(yōu)的防御策略配置,為各算法提供參考。
(3) DSEOM同樣通過攻擊圖模型刻畫不同微服務(wù)的攻擊難度;然而,該策略重點是計算攻擊圖中的關(guān)鍵節(jié)點,并僅對關(guān)鍵節(jié)點進行防護。
為了驗證SmartSCR的性能和有效性,本文首先隨機生成了各個微服務(wù)的副本數(shù)量,并在實驗環(huán)境中創(chuàng)建了該應(yīng)用?;谖⒎?wù)副本數(shù)量和Kubernetes調(diào)度結(jié)果,在不同的經(jīng)驗復(fù)用池容量下對DQN進行訓(xùn)練。
圖3展示了神經(jīng)網(wǎng)絡(luò)誤差和防御效率隨訓(xùn)練次數(shù)的變化。其中,對于每個訓(xùn)練步長,DQN會與環(huán)境進行1000次交互。如圖3(a)所示,在不同的經(jīng)驗復(fù)用池容量D下,神經(jīng)網(wǎng)絡(luò)都能夠迅速實現(xiàn)收斂。當(dāng)D取值較大時,可以存儲較多探索階段所收集的環(huán)境信息,使得后續(xù)對神經(jīng)網(wǎng)絡(luò)的訓(xùn)練更容易收斂,且使其不陷入局部最優(yōu)。同時,由于DQN會首先填充滿經(jīng)驗復(fù)用池后,才會從中隨機選取經(jīng)驗數(shù)據(jù)進行訓(xùn)練,因此較大的D對DQN來說可能需要更長時間才能收斂,例如,當(dāng)D=10000時,在DQN運行60步后實現(xiàn)了收斂;當(dāng)D=30000時,在DQN運行90步后實現(xiàn)了收斂。同時,D取值同樣不宜過小,因為較小的經(jīng)驗復(fù)用池容量可能導(dǎo)致DQN丟棄某些重要的“經(jīng)驗”,造成DQN收斂的不穩(wěn)定。例如當(dāng)D=10000時,在訓(xùn)練至90步時模型收斂發(fā)生了波動。圖3(b)展示了所取得的防御效果隨著訓(xùn)練步數(shù)的變化,其中,縱坐標(biāo)為當(dāng)前步數(shù)防御效率的平均值與最優(yōu)防御效率的比值。在經(jīng)驗復(fù)用池未填充滿時,DQN會采用隨機的策略對防御配置進行修改,因此防御效率也一直進行波動。當(dāng)基于積累的“經(jīng)驗”開始對DQN進行訓(xùn)練后,防御效率會迅速提升,最終收斂至最優(yōu)防御效率附近。DQN網(wǎng)絡(luò)在收斂后防御效率仍會有小幅度的波動,這是因為在DQN中為了實現(xiàn)探索-利用的平衡,會采用ε-貪婪策略,即會以概率ε隨機選擇動作,以概率1?ε按照神經(jīng)網(wǎng)絡(luò)的輸出選擇最優(yōu)動作。
圖3 DQN學(xué)習(xí)過程示意圖
圖4將SmartSCR與不同算法進行對比。其中,圖4(a)展示了SmartSCR將與統(tǒng)一配置策略、DSEOM和最優(yōu)防御策略所取得的防御效率的對比。其中,SmartSCR的防御效率選取D=30000時訓(xùn)練收斂后所得的防御效率。如圖4 所示,DSEOM所取得的平均防御效率最低,且其防御效率方差最大。其主要原因在于DSEOM僅對云環(huán)境下的關(guān)鍵目標(biāo)進行防護,而一旦攻擊者找到路徑繞過該關(guān)鍵目標(biāo),便可以輕松地實現(xiàn)攻擊目標(biāo),云原生環(huán)境下爆炸增長的攻擊面也為攻擊者繞過重點布防的節(jié)點提供了遍歷;同時,DSEOM在確定關(guān)鍵目標(biāo)之后,MTD策略的參數(shù)配置需要由防御者自主選擇,參數(shù)配置的盲目性使得該策略的防御效果不穩(wěn)定。統(tǒng)一配置策略通過簡化配置,使得能夠通過遍歷選取簡化后最優(yōu)的配置,相對于DSEOM,能夠有效提升防御效率,并具有穩(wěn)定性。本文所提SmartSCR在訓(xùn)練收斂后,取得的平均防御效率已經(jīng)十分接近最優(yōu)值,且方差較小,能夠?qū)崿F(xiàn)穩(wěn)定的安全防御效果。圖4(b)展示了SmartSCR與統(tǒng)一配置策略和DSEOM在不同應(yīng)用規(guī)模下時間消耗的對比,用于衡量策略的可擴展性。其中,橫坐標(biāo)表示該應(yīng)用中所有容器副本的數(shù)量,縱坐標(biāo)表示求解出MTD配置的時間消耗。在該實驗中,通過改變前文Web應(yīng)用微服務(wù)副本的數(shù)量,從而改變整個應(yīng)用的規(guī)模。同時,假設(shè)每個微服務(wù)副本的上限為200,對SmartSCR進行訓(xùn)練。由圖可知,DSEOM所消耗的時間最短,且隨著應(yīng)用規(guī)模的增長時間消耗也未呈現(xiàn)指數(shù)級增長,其原因在于DSEOM需求解的計算量較小,且對最短路徑的求解進行了優(yōu)化。對于SmartSCR,由于其可在線下提前對DQN模型進行訓(xùn)練,因此在線上對MTD策略進行配置的時間消耗也較短,并且能夠應(yīng)對較大規(guī)模應(yīng)用的場景。而對于統(tǒng)一配置策略,由于應(yīng)用規(guī)模的增長大幅增加了求解最短路徑的時間消耗,時間消耗隨著應(yīng)用規(guī)模的增大也大幅增長,適合應(yīng)用于小規(guī)模應(yīng)用的場景。
圖4 不同算法下的對比
本文針對云原生環(huán)境下移動目標(biāo)防御策略的最優(yōu)配置展開研究。首先,針對云原生環(huán)境下復(fù)雜的攻擊場景進行建模,并對MTD策略下的防御策略進行定量衡量。然后,以最優(yōu)化防御效率為目標(biāo),提出了MTD策略的最優(yōu)配置問題。由于云原生應(yīng)用的規(guī)模以及較大的安全配置空間,直接求解最優(yōu)配置十分困難。針對該問題,本文將其轉(zhuǎn)化為MDP問題,并提出SmartSCR方案對該問題進行求解。SmartSCR方案中,基于MAG模型對防御效率進行求解,并使用DQN算法應(yīng)對狀態(tài)空間爆炸的問題,求解最優(yōu)防御配置。實驗表明,SmartSCR能夠有效應(yīng)對云原生場景下的安全配置優(yōu)化問題。