Web服務(wù)器及其系統(tǒng)資源訪問控制方法
【專利摘要】本發(fā)明公開了一種Web服務(wù)器及其系統(tǒng)資源訪問控制方法,所述方法包括:主進程接收到Web請求后,將該Web請求分配給一個工作進程,該工作進程調(diào)用標記模塊,并將分配的Web請求傳送給標記模塊;標記模塊從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊;之后,在該工作進程調(diào)用該沙箱系統(tǒng)模塊的資源訪問API時,該資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制。從而,本發(fā)明在實現(xiàn)用戶資源隔離的請?zhí)嵯?,?jié)約了服務(wù)器資源。
【專利說明】Web服務(wù)器及其系統(tǒng)資源訪問控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及Web服務(wù)器及其系統(tǒng)資源訪問控制方法。
【背景技術(shù)】
[0002]Web服務(wù)器的主要功能是提供網(wǎng)上信息瀏覽服務(wù)。目前,網(wǎng)站服務(wù)提供商廣泛采用LAMP (Linux、Apache、MySQL、PHP,即Linux操作系統(tǒng)、阿帕奇服務(wù)器軟件、數(shù)據(jù)庫軟件、PHP腳本)架構(gòu)為公司很多網(wǎng)站站點(即多個網(wǎng)站站點用戶)開發(fā)網(wǎng)頁提供平臺化的支持=Web服務(wù)器上的Apache軟件接收到發(fā)送給網(wǎng)站的請求信息后,進行資源訪問、處理后將生成的網(wǎng)頁數(shù)據(jù)返回給客戶端的瀏覽器呈現(xiàn)。在本文中,將網(wǎng)站站點用戶簡稱為用戶。
[0003]具體地,Web服務(wù)器上的Apache軟件的主進程接收到客戶端發(fā)送給網(wǎng)站的Web請求后,將接收的Web請求分配給一個工作進程;該工作進程根據(jù)該Web請求,訪問服務(wù)器的資源,并生成網(wǎng)頁數(shù)據(jù)向客戶端返回。
[0004]在公有云平臺中,通常多個用戶共用同一臺Web服務(wù)器。為保證各用戶之間的獨立性而不互相干擾,需實現(xiàn)各用戶的用戶資源的隔離?,F(xiàn)有的一種實現(xiàn)用戶資源隔離的方法是:在同一臺物理機(即Web服務(wù)器物理機)上創(chuàng)建多臺虛擬機,一臺虛擬機專用于處理一個用戶的Web請求,而不處理其它用戶的Web請求;由于各虛擬機之間互相獨立,因此各用戶的用戶資源也是相互獨立的,實現(xiàn)了用戶資源的隔離。例如,對于用戶userl和userf,可以是虛擬機I處理user I的Web請求,虛擬機2處理user2的Web請求。
[0005]然而,同一臺物理機可以創(chuàng)建的虛擬機的數(shù)量有限,無法根據(jù)用戶的訪問規(guī)模進行擴展,使得Web服務(wù)器能夠服務(wù)的用戶數(shù)量較少,造成了服務(wù)器資源的浪費;比如,對于一臺物理機,通過該方法可能僅能服務(wù)十幾個用戶。
[0006]現(xiàn)有的另一種實現(xiàn)用戶資源隔離的方法是:在同一臺物理機上創(chuàng)建多臺虛擬機,并在同一臺虛擬機上啟動多個工作進程,一個工作進程專屬于一個用戶,專用于處理該用戶的Web請求,而不能處理其他用戶的Web請求;由于各工作進程之間互相獨立,從而各用戶的用戶資源也是相互獨立的,由此實現(xiàn)了用戶資源的隔離。例如,對于用戶userl和user2,可以是虛擬機I上的工作進程processl處理userl的Web請求,虛擬機I上的工作進程process2處理user2的Web請求。
[0007]然而,同一臺虛擬機能夠啟動的工作進程的數(shù)量也有限,使得Web服務(wù)器能夠服務(wù)的用戶數(shù)量較少,也造成了服務(wù)器資源的浪費;比如,對于一臺物理機,通過該方法可能僅能服務(wù)幾千個用戶。
[0008]綜上所述,現(xiàn)有的實現(xiàn)用戶資源隔離的方法均易造成Web服務(wù)器資源的浪費,且在用戶的訪問規(guī)模較大時,服務(wù)器資源浪費尤其明顯。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的實施例提供了一種Web服務(wù)器及其系統(tǒng)資源訪問控制方法,用以實現(xiàn)用戶資源隔離的前提下,節(jié)約服務(wù)器資源。[0010]根據(jù)本發(fā)明的一個方面,提供了一種Web服務(wù)器的系統(tǒng)資源訪問控制方法,包括:
[0011]主進程接收到Web請求后,將該Web請求分配給一個工作進程,該工作進程調(diào)用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊;
[0012]之后,在該工作進程調(diào)用該沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制。
[0013]較佳地,所述資源訪問API具體包括文件訪問API,以及
[0014]所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括由所述用戶標識標示出的存儲空間;以及
[0015]所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制,具體為:
[0016]所述文件訪問API將資源訪問操作限制于由所述用戶標識標示出的存儲空間中。
[0017]其中,所述由所述用戶標識標示出的存儲空間具體為:目錄名為所述用戶標識的目錄下的存儲空間。
[0018]或者,所述資源訪問API具體包括網(wǎng)絡(luò)資源訪問API ;以及
[0019]所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限;以及
[0020]所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制,具體包括:
[0021]所述網(wǎng)絡(luò)資源訪問API在確定出所述用戶標識所對應(yīng)的用戶占用的網(wǎng)絡(luò)連接端口數(shù)達到對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限時,向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息。
[0022]進一步,所述對應(yīng)所述用戶標識的資源限制設(shè)置項還包括:對應(yīng)所述用戶標識設(shè)置的IP地址黑名單或IP地址白名單;以及
[0023]所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項,對資源訪問操作進行限制,還包括:
[0024]所述網(wǎng)絡(luò)資源訪問API在確定網(wǎng)絡(luò)資源訪問操作所涉及的IP地址在所述IP地址黑名單上,則向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息;或者,在確定網(wǎng)絡(luò)資源訪問操作所涉及的IP地址不在所述IP地址白名單上,則向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信
肩、O
[0025]較佳地,所述工作進程調(diào)用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊具體包括:
[0026]所述工作進程調(diào)用所述標記模塊時,還將本進程的進程標識傳送給所述標記模塊;
[0027]所述標記模塊從接收的Web請求中解析出用戶標識,并調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識設(shè)置API,將所述用戶標識作為參數(shù)傳入到所述用戶標識設(shè)置API,所述用戶標識設(shè)置API根據(jù)傳入的用戶標識,確定出對應(yīng)所述用戶標識的資源限制設(shè)置項,將確定出的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項;以及[0028]所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制具體為:
[0029]所述資源訪問API根據(jù)本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項對資源訪問操作進行限制。
[0030]較佳地,在所述用戶標識設(shè)置API根據(jù)傳入的用戶標識,確定出對應(yīng)所述用戶標識的資源限制設(shè)置項后,還包括:
[0031]若該工作進程處理完畢所述Web請求,則向所述標記模塊發(fā)送攜帶有本進程的進程標識的Web請求處理完畢通知;
[0032]所述標記模塊根據(jù)接收的Web請求處理完畢通知,調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識清空API ;所述用戶標識清空API將本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項進行清空。
[0033]根據(jù)本發(fā)明的另一個方面,還提供了一種Web服務(wù)器,包括:Web服務(wù)器模塊、標記模塊、多個沙箱系統(tǒng)模塊;
[0034]其中,所述Web服務(wù)器模塊用于在其主進程接收到Web請求后,將該Web請求分配給所述Web服務(wù)器模塊的一個工作進程;該工作進程調(diào)用所述標記模塊,并將分配的Web請求傳送給所述標記模塊;
[0035]所述標記模塊用于從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊;
[0036]所述沙箱系統(tǒng)模塊用于在所述工作進程調(diào)用本沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制。
[0037]其中,所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:由所述用戶標識標示出的存儲空間;以及所述資源訪問API具體包括:文件訪問API ;
[0038]或者,所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限、對應(yīng)所述用戶標識設(shè)置的IP地址黑名單或IP地址白名單;以及所述資源訪問API具體包括:網(wǎng)絡(luò)資源訪問API。
[0039]較佳地,所述標記模塊具體用于在接收所述工作進程傳送的Web請求時,還接收所述工作進程傳送的該工作進程的進程標識;所述標記模塊從接收的Web請求中解析出用戶標識,并調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識設(shè)置API,將所述用戶標識作為參數(shù)傳入到所述用戶標識設(shè)置API,由所述用戶標識設(shè)置API確定出對應(yīng)所述用戶標識的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項;以及
[0040]所述沙箱系統(tǒng)模塊具體用于在所述工作進程調(diào)用本沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項對資源訪問操作進行限制。
[0041]本發(fā)明實施例的技術(shù)方案中,由于主進程接收到Web請求后,將該Web請求分配給一個工作進程,不對不同用戶的Web請求進行區(qū)分;這樣,同一個工作進程可以在不同時間處理不同用戶的Web請求,節(jié)約了服務(wù)器資源;同時,工作進程調(diào)用為該工作進程配置的沙箱系統(tǒng)模塊的資源訪問API時,資源訪問API根據(jù)對應(yīng)不同用戶所設(shè)置的的資源限制設(shè)置項對資源訪問操作進行限制,由此保證同一工作進程在處理不同用戶的Web請求時,實現(xiàn)用戶資源的隔離,保證各用戶之間的獨立性而不互相干擾。從而,本發(fā)明在實現(xiàn)用戶資源隔離的前提下,節(jié)約了服務(wù)器資源。
【專利附圖】
【附圖說明】
[0042]圖1為本發(fā)明實施例的Web服務(wù)器的內(nèi)部結(jié)構(gòu)框圖;
[0043]圖2為本發(fā)明實施例的Web服務(wù)器的系統(tǒng)資源訪問控制方法的流程圖。
【具體實施方式】
[0044]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉出優(yōu)選實施例,對本發(fā)明進一步詳細說明。然而,需要說明的是,說明書中列出的許多細節(jié)僅僅是為了使讀者對本發(fā)明的一個或多個方面有一個透徹的理解,即便沒有這些特定的細節(jié)也可以實現(xiàn)本發(fā)明的這些方面。
[0045]本申請使用的“模塊”、“系統(tǒng)”等術(shù)語旨在包括與計算機相關(guān)的實體,例如但不限于硬件、固件、軟硬件組合、軟件或者執(zhí)行中的軟件。例如,模塊可以是,但并不僅限于:處理器上運行的進程、處理器、對象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計算機。舉例來說,計算設(shè)備上運行的應(yīng)用程序和此計算設(shè)備都可以是模塊。一個或多個模塊可以位于執(zhí)行中的一個進程和/或線程內(nèi),一個模塊也可以位于一臺計算機上和/或分布于兩臺或更多臺計算機之間。
[0046]本發(fā)明的技術(shù)方案中,一個工作進程不再專屬于一個用戶,可以在不同的時間處理不同用戶的Web請求,以節(jié)約服務(wù)器資源;同時采用沙箱技術(shù)來保證同一工作進程在處理不同用戶的Web請求時,實現(xiàn)用戶資源的隔離,保證各用戶之間的獨立性而不互相干擾。
[0047]在網(wǎng)絡(luò)技術(shù)中,沙箱(sandbox)是為一些來源不可信、具備破壞性或無法判斷意圖的程序提供的一種安全的虛擬環(huán)境;換言之,通過沙箱系統(tǒng),可以對運行在沙箱中的程序的訪問操作進行限制,使其不會對操作系統(tǒng)、或運行在沙箱外的程序產(chǎn)生影響或干擾。然而,目前的沙箱系統(tǒng)并不能直接應(yīng)用于本發(fā)明的技術(shù)方案中,還需對沙箱系統(tǒng)中調(diào)用系統(tǒng)資源的程序進行改進,使之可以應(yīng)用于本發(fā)明的技術(shù)方案。
[0048]例如,在本發(fā)明中,一個工作進程processl可以處理用戶userl和user2的Web請求;processl處理userl的Web請求時,調(diào)用為processl配置的沙箱系統(tǒng)模塊的資源訪問API,該資源訪問API根據(jù)針對userl設(shè)置的資源限制設(shè)置項對userl的資源訪問操作進行限制;processl處理user2的Web請求時,調(diào)用為processl配置的沙箱系統(tǒng)模塊的資源訪問API,該資源訪問API根據(jù)針對userf設(shè)置的資源限制設(shè)置項對user2的資源訪問操作進行限制。
[0049]下面結(jié)合附圖詳細說明本發(fā)明實施例的技術(shù)方案。本發(fā)明實施例提供的Web服務(wù)器上的Apache軟件的內(nèi)部結(jié)構(gòu)框圖如圖1所示,具體包括:Web服務(wù)器模塊101、標記模塊102和多個沙箱系統(tǒng)模塊103。
[0050]事實上,Web服務(wù)器模塊101的主進程接收到Web請求后,將該Web請求分配給Web服務(wù)器模塊101的一個工作進程;該工作進程調(diào)用標記模塊102,并將分配的Web請求傳送給標記模塊102。標記模塊102從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊103。該沙箱系統(tǒng)模塊103在該工作進程調(diào)用本沙箱系統(tǒng)模塊的資源訪問API時,該資源訪問API根據(jù)對應(yīng)本沙箱系統(tǒng)模塊接收的用戶標識的資源限制設(shè)置項,對資源訪問操作進行限制。
[0051]具體地,Web服務(wù)器上的Apache軟件啟動后,可通過LD_PREL0AD環(huán)境變量,來加載沙箱系統(tǒng)模塊103的動態(tài)鏈接庫中的各接口函數(shù),即各API (Application ProgrammingInterface,應(yīng)用程序接口),例如,資源訪問AP1、用戶標識配置API和用戶標識清空API。之后,Web服務(wù)器可基于本服務(wù)器上的Apache軟件中的Web服務(wù)器模塊101、標記模塊102和多個沙箱系統(tǒng)模塊103,來系統(tǒng)資源訪問的控制,具體方法的流程如圖2所示,包括如下步驟:
[0052]S201:ffeb服務(wù)器模塊101的主進程接收到Web請求后,將該Web請求分配給一個
工作進程。
[0053]在本步驟中,Apache軟件中的Web服務(wù)器模塊101的主進程接收到客戶端發(fā)送給網(wǎng)站的Web請求后,選取一個空閑的工作進程,將接收到的Web請求分配給該工作進程。
[0054]由于主進程將接收到的Web請求分配給工作進程時,不對不同用戶的Web請求進行區(qū)分,且在該工作進程處理完畢當前分配的Web請求后,還可以接收主進程分配的新的Web請求,同樣不區(qū)分不同用戶,從而,同一個工作進程可以處理不同用戶的Web請求,節(jié)約了服務(wù)器資源。
[0055]S202:該工作進程調(diào)用標記模塊102,將分配的Web請求、以及本進程的進程標識傳送給標記模塊102。
[0056]S203:標記模塊102從接收的Web請求中解析出用戶標識,調(diào)用對應(yīng)接收的進程標識的沙箱系統(tǒng)模塊103的用戶標識配置API,并將解析出的用戶標識作為參數(shù)傳入該用戶標識配置API。
[0057]具體地,客戶端發(fā)送給網(wǎng)站的Web請求的Header中攜帶有該用戶的用戶標識;在本文中,用戶的用戶標識具體可以是網(wǎng)站站點的網(wǎng)站標識(網(wǎng)站id)。而且,針對每個工作進程,分別配置了沙箱系統(tǒng)模塊103,也就是建立了工作進程的進程標識與沙箱系統(tǒng)模塊103的對應(yīng)關(guān)系。
[0058]在本步驟中,標記模塊102對工作進程傳送過來的Web請求進行解析,將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊103,具體過程為:標記模塊102從接收的Web請求中解析出用戶標識,調(diào)用對應(yīng)接收的進程標識的沙箱系統(tǒng)模塊103的用戶標識配置API,并將解析出的用戶標識作為參數(shù)傳入該用戶標識配置API。
[0059]S204:該用戶標識配置API根據(jù)傳入的用戶標識,確定出對應(yīng)該用戶標識的資源限制設(shè)置項,并將確定出的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項。
[0060]具體地,Web服務(wù)器的Apache軟件分別記錄了每個用戶的用戶標識的資源限制設(shè)置項;例如,在上述步驟S203中,傳入該用戶標識配置API的用戶標識為用戶標識A,在本步驟中,該用戶標識配置API確定出對應(yīng)用戶標識A的資源限制設(shè)置項,將對應(yīng)用戶標識A的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項。
[0061]S205:該工作進程調(diào)用沙箱系統(tǒng)模塊103的資源訪問API時,該資源訪問API根據(jù)本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項對資源訪問操作進行限制。
[0062]具體地,在該工作進程處理分配的Web請求的過程中,可根據(jù)Web請求所涉及的資源訪問操作,比如文件讀寫操作,調(diào)用對應(yīng)本進程的進程標識的沙箱系統(tǒng)模塊103的資源訪問API ;該資源訪問API根據(jù)本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項對資源訪問操作進行限制。其中,當前資源限制設(shè)置項也就是,上述步驟S204中用戶標識配置API根據(jù)傳入的用戶標識,確定出的對應(yīng)該用戶標識的資源限制設(shè)置項。
[0063]其中,對應(yīng)用戶標識的資源限制設(shè)置項具體可以包括:由用戶標識標示出的存儲空間;以及資源訪問API具體可以包括:與所述由用戶標識標示出的存儲空間相對應(yīng)的文件訪問API。
[0064]例如,對于一個Web請求A,標記模塊102從Web請求A中解析出用戶標識A,若對應(yīng)用戶標識A的資源限制設(shè)置項為由用戶標識A標示出的存儲空間,則在處理Web請求A的工作進程調(diào)用沙箱系統(tǒng)模塊103的文件訪問API時,該文件訪問API將資源訪問操作限制于由用戶標識A標示出的存儲空間中。其中,用戶標識標示出的存儲空間具體可以為目錄名為用戶標識A的目錄(例如,/dir/usera/xxx)下的存儲空間。這樣,Web請求A的文件訪問操作只能訪問用戶標識A的目錄下的存儲空間。
[0065]或者,對應(yīng)用戶標識的資源限制設(shè)置項具體可以包括:對應(yīng)用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限、對應(yīng)用戶標識設(shè)置的IP地址黑名單或IP地址白名單;以及資源訪問API具體可以包括:與所述對應(yīng)用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限和所述對應(yīng)用戶標識設(shè)置的IP地址黑名單或IP地址白名單相對應(yīng)的網(wǎng)絡(luò)資源訪問API。
[0066]例如,對于一個Web請求B,標記模塊102從Web請求B中解析出用戶標識B,若對應(yīng)用戶標識B的資源限制設(shè)置項為對應(yīng)用戶標識B設(shè)置的網(wǎng)絡(luò)端口數(shù)上限,則在處理Web請求B的工作進程調(diào)用沙箱系統(tǒng)模塊103的網(wǎng)絡(luò)資源訪問API時,該網(wǎng)絡(luò)資源訪問API在確定出用戶標識B所對應(yīng)的用戶占用的網(wǎng)絡(luò)連接端口數(shù)達到對應(yīng)用戶標識B設(shè)置的網(wǎng)絡(luò)端口數(shù)上限時,向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息;相反地,該網(wǎng)絡(luò)資源訪問API在確定出用戶標識B所對應(yīng)的用戶占用的網(wǎng)絡(luò)連接端口數(shù)未達到對應(yīng)用戶標識B設(shè)置的網(wǎng)絡(luò)端口數(shù)上限時,該網(wǎng)絡(luò)資源訪問API進行網(wǎng)絡(luò)資源訪問操作。
[0067]若對應(yīng)用戶標識B的資源限制設(shè)置項為對應(yīng)用戶標識B設(shè)置的IP地址黑名單或IP地址白名單,則在處理Web請求B的工作進程調(diào)用沙箱系統(tǒng)模塊103的網(wǎng)絡(luò)資源訪問API時,該網(wǎng)絡(luò)資源訪問API確定出網(wǎng)絡(luò)資源訪問操作所涉及的IP地址在對應(yīng)用戶標識B設(shè)置的IP地址黑名單上時,向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息;或者,該網(wǎng)絡(luò)資源訪問API確定出網(wǎng)絡(luò)資源訪問操作所涉及的IP地址不在對應(yīng)用戶標識B設(shè)置的IP地址白名單上時,向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息;相反地,該網(wǎng)絡(luò)資源訪問API確定出網(wǎng)絡(luò)資源訪問操作所涉及的IP地址不在對應(yīng)用戶標識B設(shè)置的IP地址黑名單上,或者,該網(wǎng)絡(luò)資源訪問API確定出網(wǎng)絡(luò)資源訪問操作所涉及的IP地址在對應(yīng)用戶標識B設(shè)置的IP地址白名單上時,該網(wǎng)絡(luò)資源訪問API進行網(wǎng)絡(luò)資源訪問操作。
[0068]由于本發(fā)明中為同一個工作進程配置的沙箱系統(tǒng)模塊,可以根據(jù)針對不同用戶分別設(shè)置的資源限制設(shè)置項,對不同用戶分別進行資源訪問操作的限制,由此,保證了同一工作進程在處理不同用戶的Web請求時,實現(xiàn)用戶資源的隔離,并節(jié)約了服務(wù)器資源。比如,對于一臺物理機,應(yīng)用本發(fā)明的方法,可以使Web服務(wù)器服務(wù)幾十萬用戶,相比于十幾個或幾千個用戶,極大的提高了服務(wù)器資源的利用率;換言之,在處理相同數(shù)量的用戶的Web請求時,極大的減少了服務(wù)器資源的消耗,節(jié)約了服務(wù)器資源。
[0069]進一步,若工作進程處理完畢分配的Web請求,則可以向標記模塊102發(fā)送Web請求處理完畢通知,該Web請求處理完畢通知中攜帶有本進程的進程標識、以及標記模塊102從該Web請求中解析出的用戶標識。
[0070]標記模塊102接收到Web請求處理完畢通知后,根據(jù)接收的Web請求處理完畢通知中攜帶的進程標識,調(diào)用對應(yīng)該進程標識的沙箱系統(tǒng)模塊103的用戶標識清空API ;該用戶標識清空API將本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項進行清空。其中,標記模塊102調(diào)用對應(yīng)該進程標識的沙箱系統(tǒng)模塊103的用戶標識清空API時,還可以將Web請求處理完畢通知中攜帶的用戶標識傳入該用戶標識清空API ;該用戶標識清空API確定出本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項為對應(yīng)傳入的用戶標識的資源限制設(shè)置項后,該用戶標識清空API將本沙箱系統(tǒng)模塊103的當前資源限制設(shè)置項進行清空。
[0071]本發(fā)明的技術(shù)方案中,由于主進程接收到Web請求后,將該Web請求分配給一個工作進程時,不對不同用戶的Web請求進行區(qū)分;這樣,同一個工作進程可以在不同時間處理不同用戶的Web請求,節(jié)約了服務(wù)器資源;同時,工作進程調(diào)用為該工作進程配置的沙箱系統(tǒng)模塊的資源訪問API時,資源訪問API根據(jù)對應(yīng)不同用戶所設(shè)置的資源限制設(shè)置項對資源訪問操作進行限制,由此保證同一工作進程在處理不同用戶的Web請求時,實現(xiàn)用戶資源的隔離,保證各用戶之間的獨立性而不互相干擾。從而,本發(fā)明在實現(xiàn)用戶資源隔離的前提下,節(jié)約了服務(wù)器資源。
[0072]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀取存儲介質(zhì)中,如:R0M/RAM、磁碟、光盤等。
[0073]以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
【權(quán)利要求】
1.一種Web服務(wù)器的系統(tǒng)資源訪問控制方法,其特征在于,包括: 主進程接收到Web請求后,將該Web請求分配給一個工作進程,該工作進程調(diào)用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊; 之后,在該工作進程調(diào)用該沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制。
2.如權(quán)利要求1所述的方法,其特征在于,所述資源訪問API具體包括文件訪問API,以及 所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括由所述用戶標識標示出的存儲空間;以及 所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制,具體為: 所述文件訪問API將資源訪問操作限制于由所述用戶標識標示出的存儲空間中。
3.如權(quán)利要求2所述的方法,其特征在于,所述由所述用戶標識標示出的存儲空間具體為:目錄名為所述用戶標識的目錄下的存儲空間。
4.如權(quán)利要求1所述的方法,其特征在于,所述資源訪問API具體包括網(wǎng)絡(luò)資源訪問API ;以及 所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限;以及 所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制,具體包括: 所述網(wǎng)絡(luò)資源訪問API在確定出所述用戶標識所對應(yīng)的用戶占用的網(wǎng)絡(luò)連接端口數(shù)達到對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限時,向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息。
5.如權(quán)利要求4所述的方法,其特征在于,所述對應(yīng)所述用戶標識的資源限制設(shè)置項還包括:對應(yīng)所述用戶標識設(shè)置的IP地址黑名單或IP地址白名單;以及 所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項,對資源訪問操作進行限制,還包括: 所述網(wǎng)絡(luò)資源訪問API在確定網(wǎng)絡(luò)資源訪問操作所涉及的IP地址在所述IP地址黑名單上,則向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息;或者,在確定網(wǎng)絡(luò)資源訪問操作所涉及的IP地址不在所述IP地址白名單上,則向該工作進程返回拒絕網(wǎng)絡(luò)資源訪問的信息。
6.如權(quán)利要求1-5任一所述的方法,其特征在于,所述工作進程調(diào)用標記模塊,并將分配的Web請求傳送給所述標記模塊;所述標記模塊從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊具體包括: 所述工作進程調(diào)用所述標記模塊時,還將本進程的進程標識傳送給所述標記模塊; 所述標記模塊從接收的Web請求中解析出用戶標識,并調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識設(shè)置API,將所述用戶標識作為參數(shù)傳入到所述用戶標識設(shè)置API,所述用戶標識設(shè)置API根據(jù)傳入的用戶標識,確定出對應(yīng)所述用戶標識的資源限制設(shè)置項,將確定出的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項;以及所述資源訪問API根據(jù)對應(yīng)所述用戶標識的資源限制設(shè)置項對資源訪問操作進行限制具體為: 所述資源訪問API根據(jù)本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項對資源訪問操作進行限制。
7.如權(quán)利要求6所述的方法,其特征在于,在所述用戶標識設(shè)置API根據(jù)傳入的用戶標識,確定出對應(yīng)所述用戶標識的資源限制設(shè)置項后,還包括: 若該工作進程處理完畢所述Web請求,則向所述標記模塊發(fā)送攜帶有本進程的進程標識的Web請求處理完畢通知; 所述標記模塊根據(jù)接收的Web請求處理完畢通知,調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識清空API ;所述用戶標識清空API將本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項進行清空。
8.—種Web服務(wù)器,其特征在于,包括:Web服務(wù)器模塊、標記模塊、多個沙箱系統(tǒng)模塊;其中, 所述Web服務(wù)器模塊用于在其主進程接收到Web請求后,將該Web請求分配給所述Web服務(wù)器模塊的一個工作進程;該工作進程調(diào)用所述標記模塊,并將分配的Web請求傳送給所述標記模塊; 所述標記模塊用于從接收的Web請求中解析出用戶標識,并將解析出的用戶標識傳送給為該工作進程配置的沙箱系統(tǒng)模塊; 所述沙箱系統(tǒng)模塊用于在所述工作進程調(diào)用本沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)對應(yīng)所述用 戶標識的資源限制設(shè)置項對資源訪問操作進行限制。
9.如權(quán)利要求8所述的服務(wù)器,其特征在于,所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:由所述用戶標識標示出的存儲空間;以及所述資源訪問API具體包括:文件訪問 API ; 或者,所述對應(yīng)所述用戶標識的資源限制設(shè)置項具體包括:對應(yīng)所述用戶標識設(shè)置的網(wǎng)絡(luò)端口數(shù)上限、對應(yīng)所述用戶標識設(shè)置的IP地址黑名單或IP地址白名單;以及所述資源訪問API具體包括:網(wǎng)絡(luò)資源訪問API。
10.如權(quán)利要求8或9所述的服務(wù)器,其特征在于, 所述標記模塊具體用于在接收所述工作進程傳送的Web請求時,還接收所述工作進程傳送的該工作進程的進程標識;所述標記模塊從接收的Web請求中解析出用戶標識,并調(diào)用對應(yīng)所述進程標識的沙箱系統(tǒng)模塊的用戶標識設(shè)置API,將所述用戶標識作為參數(shù)傳入到所述用戶標識設(shè)置API,由所述用戶標識設(shè)置API確定出對應(yīng)所述用戶標識的資源限制設(shè)置項作為本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項;以及 所述沙箱系統(tǒng)模塊具體用于在所述工作進程調(diào)用本沙箱系統(tǒng)模塊的資源訪問API時,所述資源訪問API根據(jù)本沙箱系統(tǒng)模塊的當前資源限制設(shè)置項對資源訪問操作進行限制。
【文檔編號】H04L29/08GK103618758SQ201310530031
【公開日】2014年3月5日 申請日期:2013年10月31日 優(yōu)先權(quán)日:2013年10月31日
【發(fā)明者】張任重 申請人:新浪網(wǎng)技術(shù)(中國)有限公司