李廷順
(華北電力大學(xué) 控制與計(jì)算機(jī)學(xué)院,北京 100089)
美國軍方于1985年提出可信計(jì)算機(jī)系統(tǒng)評(píng)估準(zhǔn)則TCSEC[1],描述了兩種安全策略:自主訪問控制(Discretionary Access Control,簡稱DAC)和強(qiáng)制訪問控制(Mandatory Access Control,簡稱MAC)。DAC允許用戶把他對(duì)客體的訪問權(quán)授予其他用戶或從其他用戶那里收回他所授予的訪問權(quán),它是基于客體-用戶的所屬關(guān)系的訪問控制。MAC是指系統(tǒng)依照對(duì)象或用戶的分級(jí)機(jī)制對(duì)資源訪問所進(jìn)行的控制。
DCOM(Distributed Component Object Model,分布式組件對(duì)象模型)由微軟公司在前幾年推出的一項(xiàng)較為先進(jìn)的技術(shù),是客戶端/服務(wù)器(Client/Server,簡稱C/S)三層結(jié)構(gòu)實(shí)現(xiàn)的較理想的選擇之一。目前,在局域網(wǎng)應(yīng)用軟件的架構(gòu)方面,DCOM很受工程軟件工程師的青睞。
采用DCOM技術(shù),時(shí)常會(huì)出現(xiàn)一些問題,比如:當(dāng)客戶端用戶數(shù)量達(dá)到一定規(guī)模(比如訪問量大于50)后,DCOM組件會(huì)爆發(fā)出各種莫名其妙的錯(cuò)誤;有時(shí)DCOM線程會(huì)長時(shí)間占用服務(wù)器的內(nèi)存或CPU資源等。采用MAC模式,可以解決上述問題。
DCOM組件是實(shí)現(xiàn)三層C/S結(jié)構(gòu)的最好選擇之一,包括客戶端連接功能優(yōu)化模塊和服務(wù)器端MAC模塊。
服務(wù)器端MAC模塊是該模型得以實(shí)現(xiàn)的核心部分,包括信息采集控制模塊和控制策略決策模塊兩個(gè)部分。其組成結(jié)構(gòu)如圖1所示。
圖1 服務(wù)器端MAC模塊組成圖
這個(gè)模塊有兩個(gè)作用:其一,負(fù)責(zé)采集受控模塊的運(yùn)行狀態(tài)信息,并對(duì)信息進(jìn)行有效性檢測(cè)、篩選有用信息,將篩選后的信息發(fā)送給控制策略決策模塊;其二,接收控制策略決策模塊發(fā)出的控制信息,將這些信息變成適當(dāng)?shù)目刂菩盘?hào),發(fā)送給操作系統(tǒng),通過操作系統(tǒng)控制受控模塊。
控制策略模塊是MAC模塊的大腦,是控制程序的核心部分。這部分主要是實(shí)現(xiàn)兩個(gè)功能:第一,接收信息采集控制模塊發(fā)來的受控模塊的有效信息,進(jìn)行分析處理,確認(rèn)受控模塊狀態(tài)是否合理合法;第二,根據(jù)分析的結(jié)果,檢索策略庫,做出對(duì)應(yīng)的決策,將決策信息反饋給信息采集控制模塊。
在Windows NT環(huán)境下,DCOM組件的控制策略建議采用如下規(guī)則:
1)檢測(cè)DCOM組件的合法性,包括線程名、啟動(dòng)后所占用內(nèi)存是否合理、線程數(shù)量是否在規(guī)定范圍內(nèi)等;
2)若CPU資源占用率在一定時(shí)間內(nèi)(如,3分鐘內(nèi))一直超過規(guī)定數(shù)值(70%),視為非法;
3)若內(nèi)存占有量高于規(guī)定值(如,100M),視為非法;
4)若DCOM線程數(shù)量高于統(tǒng)計(jì)值(如,70個(gè)),視為非法;
5)若客戶端連接數(shù)量持續(xù)高于規(guī)定值(如,50個(gè)),視為非法。
只要從系統(tǒng)反應(yīng)來的信息中,上述五條規(guī)則中某一條滿足,該控制模塊就視為該DCOM進(jìn)程異常,就可以通知操作系統(tǒng)對(duì)該DCOM組件進(jìn)程采取相應(yīng)措施,比如強(qiáng)行中止該進(jìn)程、釋放該進(jìn)程資源,之后啟動(dòng)程序,恢復(fù)該進(jìn)程等。
Windows系統(tǒng)是多線程操作系統(tǒng),DCOM組件服務(wù)也是以線程的方式為客戶端提供響應(yīng)的,所以服務(wù)器端模塊的實(shí)現(xiàn)也是以線程的級(jí)別實(shí)現(xiàn)的,對(duì)DCOM組件的控制表現(xiàn)在對(duì)系統(tǒng)線程的控制上。
程序的主體部分如圖2所示。
1)創(chuàng)建受控模塊列表;2)提升程序本身的權(quán)限;3)創(chuàng)建控制線程;4)創(chuàng)建時(shí)鐘,定期喚醒控制線程,監(jiān)測(cè)受控進(jìn)程。
圖2 MAC例程程序?qū)崿F(xiàn)流程圖
線程控制部分如圖3所示。
控制線程被喚醒之后,1)根據(jù)受控進(jìn)程列表,從操作系統(tǒng)中讀取受控進(jìn)程信息;2)對(duì)讀取來的進(jìn)程信息進(jìn)行過濾和處理,并對(duì)有些信息進(jìn)行加工;3)按照優(yōu)先級(jí)依次對(duì)受控進(jìn)程的信息進(jìn)行處理。如果某個(gè)信息不合格,沒有達(dá)到預(yù)先的標(biāo)準(zhǔn),那么就需要從策略庫中讀取響應(yīng)的操作策略措施;4)將這些操作措施轉(zhuǎn)化成操作系統(tǒng)的操作信號(hào),發(fā)送給操作系統(tǒng)。
在Window系統(tǒng)下,DCOM組件本身具有連接功能,而且這種連接方式是常連接。為了實(shí)現(xiàn)上述功能,客戶端除了要包括正常的業(yè)務(wù)處理功能外,還需要包括一個(gè)連接監(jiān)視器,其組成結(jié)構(gòu)如圖4所示。
業(yè)務(wù)處理模塊,就是客戶端要實(shí)現(xiàn)的業(yè)務(wù)功能。連接監(jiān)視器除了要為業(yè)務(wù)模塊提供連接外,還需要具有檢測(cè)與客體的連接是否正常和斷點(diǎn)續(xù)連的功能。連接監(jiān)視器用來實(shí)時(shí)監(jiān)測(cè)客戶端模塊的連接是否完好。當(dāng)客戶端與服務(wù)器之間的連接斷開后,馬上判斷該連接斷開是否是異常斷開;如果是異常斷開,馬上向服務(wù)器發(fā)出申請(qǐng),請(qǐng)求再次連接,直至在有限次連接內(nèi)成功連接為止。處理過程如流程圖5所示。
客戶端模塊斷點(diǎn)續(xù)連功能的實(shí)現(xiàn)是保證該策略得以實(shí)現(xiàn)的重要的前提條件。
圖3 MAC例程控制線程實(shí)現(xiàn)流程圖
圖4 客戶端模塊組成圖
圖5 DCOM連接主體請(qǐng)求連接功能流程圖
浙江某發(fā)電廠,是一家有著悠久歷史的老發(fā)電廠,承擔(dān)著對(duì)杭州供電的主要任務(wù)。2005年開始重建MIS系統(tǒng),采用的正式DCOM技術(shù)。該MIS系統(tǒng)由于用戶眾多,且對(duì)系統(tǒng)訪問時(shí)間集中(集中在早晨8:30至9:30開始上班和下午16:00至16:25下班兩個(gè)時(shí)段),由于DCOM的缺陷,致使服務(wù)器響應(yīng)很慢。2007年采用MAC控制策略后,響應(yīng)速度和DCOM的穩(wěn)定性得到了很大的提升,至今除了系統(tǒng)打補(bǔ)丁等正常重啟外,服務(wù)器一直在不間斷運(yùn)行;且服務(wù)器對(duì)客戶端的響應(yīng)速度提高50%以上。上述MAC策略的作用,可見一斑。
[1]Prasad A R,Moelard H,Kruys J.Security architecture for wireless LANs: corporate and public environment [A].Vehicular Technology Conference Proceedings [C]Tokyo,2000,(1): 15-18.
[2]Pattara AtikomW,Krishnamurthy P,Banerjee S.Distributed mechanisms for quality of service in wireless LANs[J].IEEEPersonal Communications,2003,10(3),26-34.
[3]李善平,劉文峰,李程遠(yuǎn),等.Linux內(nèi)核2.4版源代碼分析大全[M].北京機(jī)械工業(yè)出版社,2002.
[4]袁兆山.面向?qū)ο筌浖_發(fā)原理[M].北京: 北京希望電子出版社,2002.
[5]張海藩.軟件工程[M].北京: 清華大學(xué)出版社,1999.