用于事件的內(nèi)存中處理的系統(tǒng)和方法
【專利摘要】提供了對事件進行內(nèi)存中處理的系統(tǒng)和方法。確定多個查詢的唯一元素集。每個查詢在定義的調(diào)度和持續(xù)時間上運行。在事件流中接收多個事件。使用唯一元素集對事件進行過濾。對于每個查詢,確定針對每個已過濾的事件的查詢結(jié)果。對于每個查詢,提供每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚合。
【專利說明】用于事件的內(nèi)存中處理的系統(tǒng)和方法
【背景技術(shù)】
[0001]安全信息/事件管理(SM或SIEM)的領(lǐng)域通常涉及I)從網(wǎng)絡(luò)和聯(lián)網(wǎng)設(shè)備采集反映網(wǎng)絡(luò)活動和/或設(shè)備的操作的數(shù)據(jù)以及2)對數(shù)據(jù)進行分析以增強安全性。例如,能夠?qū)?shù)據(jù)進行分析以識別網(wǎng)絡(luò)或聯(lián)網(wǎng)設(shè)備上的攻擊并且確定哪個用戶或機器是負責(zé)的。如果攻擊正在進行,能夠執(zhí)行對策以阻撓攻擊或減輕由攻擊所引起的損害。采集到的數(shù)據(jù)通常起源于由聯(lián)網(wǎng)設(shè)備所生成的消息(諸如事件、警報、或警告)或者日志文件中的條目。聯(lián)網(wǎng)設(shè)備包括防火墻、入侵檢測系統(tǒng)、和服務(wù)器。
[0002]每個消息或日志文件條目(“事件”)被存儲用于未來使用。安全系統(tǒng)也可以生成諸如相關(guān)事件和審計事件之類的事件。這些和其他事件與消息和日志文件條目一起也被存儲在磁盤上。在平均客戶部署中,可以生成每秒一千個事件。這總計每天一億個事件或每個月30億個事件。如此大量數(shù)據(jù)的分析和處理會在安全系統(tǒng)上帶來相當大的負載,引起對結(jié)果進行報告的延遲。
【專利附圖】
【附圖說明】
[0003]通過參考附圖可以更好地理解本公開并且使其各種特征和優(yōu)勢顯而易見。
[0004]圖1是根據(jù)實施例的網(wǎng)絡(luò)安全系統(tǒng)的拓撲框圖。
[0005]圖2A是根據(jù)實施例用于聚合趨勢結(jié)果的內(nèi)存中(in-memory)生成的過程流程圖。
[0006]圖2B是根據(jù)實施例用于存留(persist)聚合趨勢結(jié)果的過程流程圖。
[0007]圖3是根據(jù)實施例用于恢復(fù)系統(tǒng)狀態(tài)的過程流程圖。
[0008]圖4A是根據(jù)實施例用于負載共享的過程流程圖。
[0009]圖4B是根據(jù)實施例用于負載共享的另一個過程流程。
[0010]圖4C是根據(jù)實施例用于監(jiān)視趨勢數(shù)據(jù)的過程流程圖。
[0011]圖5圖示其中可以實現(xiàn)實施例的計算機系統(tǒng)。
【具體實施方式】
[0012]安全系統(tǒng)可以將報告提供給終端用戶,這能夠被用于追蹤諸如對登錄嘗試的計數(shù)之類的各種數(shù)據(jù)點、有成功或失敗的登錄嘗試的頂層用戶(top user)、頂層入站或出站阻塞的源和目的地、以及對聯(lián)網(wǎng)設(shè)備的配置改變。通常,報告提供關(guān)于涉及安全系統(tǒng)的范圍下的客戶環(huán)境中的聯(lián)網(wǎng)設(shè)備的這些和其他事件的概要信息。除另有指示外,聯(lián)網(wǎng)設(shè)備包括網(wǎng)絡(luò)附接設(shè)備(例如,網(wǎng)絡(luò)管理系統(tǒng))和網(wǎng)絡(luò)基礎(chǔ)設(shè)施設(shè)備(例如,網(wǎng)絡(luò)交換機、集線器、路由器
坐、一去
寸 7 -ο
[0013]為了產(chǎn)生報告,可以針對存留在數(shù)據(jù)存儲器中的事件運行多個查詢。如本文使用的,事件是消息、日志文件條目、相關(guān)事件、審計事件等。進一步在提交于2007年12月28日的美國申請序列號11/966,078中描述事件,通過引用將其全部內(nèi)容合并于此。由于事件數(shù)據(jù)非常大,通常以太字節(jié)(terabyte)計,所涉及的處理量將相當大的負載強加于安全系統(tǒng)。
[0014]此外,在同時查找多個報告(例如,每月、每季等)的情況下,安全系統(tǒng)上的負載倍增,這可能引起生成報告上的延遲。例如,用于每月報告的事件的處理可以開始于月末。如果請求多個每月報告,則安全系統(tǒng)在月末可能經(jīng)歷負載上的尖峰。
[0015]安全系統(tǒng)上的負載也部分通過單獨地和分別地在事件上運行每個查詢而引起。換句話說,多次從磁盤讀取相同的事件以計算針對每個單獨查詢的結(jié)果。這種類型的多讀和多評估模型是效率低的。
[0016]趨勢使客戶能夠追蹤各種安全相關(guān)的活動。趨勢在定義的調(diào)度和持續(xù)時間上運行規(guī)定的查詢以計算在規(guī)定的持續(xù)時間期間的聚合結(jié)果。趨勢將聚合數(shù)據(jù)保持在數(shù)據(jù)存儲器中。例如,每個趨勢將聚合數(shù)據(jù)保持在數(shù)據(jù)存儲器中其自己的數(shù)據(jù)庫表中。每個趨勢發(fā)布單個查詢并且將查詢結(jié)果的聚合保存在關(guān)聯(lián)的趨勢表中。此外,每個趨勢與頻率和持續(xù)時間或時間間隔關(guān)聯(lián),在此期間查詢被應(yīng)用于事件。安全系統(tǒng)可以被預(yù)配置有多個趨勢。趨勢也可以是用戶可配置的。
[0017]趨勢可以被用于生成報告。例如,每小時趨勢(即,有一個小時的持續(xù)時間)測量在聯(lián)網(wǎng)設(shè)備處接收到的數(shù)據(jù)的字節(jié)數(shù)。趨勢結(jié)果可以被存留在數(shù)據(jù)庫的表中,并且趨勢表中的每個記錄表示對一天的一個小時內(nèi)的字節(jié)的計數(shù)。如果用戶向安全系統(tǒng)發(fā)布表達對上個月從9:00am-12:00pm的數(shù)據(jù)感興趣的查詢,在與該月中每天這些小時對應(yīng)的表中的數(shù)據(jù)可以被用于提供報告。
[0018]如本文所述,在其被流送到網(wǎng)絡(luò)安全系統(tǒng)中的趨勢處理模塊時通過將關(guān)聯(lián)的查詢應(yīng)用于事件來對趨勢進行內(nèi)存中計算。查詢結(jié)果被內(nèi)存中聚合并且周期地存留到數(shù)據(jù)存儲器。聚合趨勢結(jié)果分攤(amortize)在運行報告所花費的較長持續(xù)時間上。換句話說,聚合趨勢結(jié)果表示對事件的預(yù)處理。
[0019]當?shù)搅颂峁┟吭聢蟾娴臅r候,例如,在月末,由于部分數(shù)據(jù)已經(jīng)被預(yù)計算,進一步的處理量被減少。此外,由于聚合趨勢結(jié)果的計算發(fā)生在內(nèi)存中,磁盤訪問量被減少,從而減少安全系統(tǒng)上的負載。
[0020]此外,與趨勢關(guān)聯(lián)的查詢可以被優(yōu)化以識別查詢的唯一元素。通過在事件上運行那些唯一元素,多個查詢(或者甚至相同的查詢)的相同的條件和/或計算字段在事件上僅被計算一次。換句話說,對于相同的事件,條件或計算字段不重復(fù)計算,這減少計算量和網(wǎng)絡(luò)安全系統(tǒng)上的負載。
[0021]提供了用于事件的內(nèi)存中處理的系統(tǒng)和方法。確定多個查詢的唯一元素集。在定義的調(diào)度和持續(xù)時間上執(zhí)行每個查詢。在事件流中接收多個事件。使用唯一元素集來對事件進行過濾。對于每個查詢,確定針對每個已過濾的事件的查詢結(jié)果。對于每個查詢,提供每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚合。
[0022]圖1是根據(jù)實施例的網(wǎng)絡(luò)安全系統(tǒng)100的拓撲框圖。系統(tǒng)100包括代理12a_n、至少一個管理器14和至少一個控制臺16(可以包括其基于瀏覽器的版本)。在一些實施例中,代理、管理器和/或控制臺可以組合在單個平臺中或分布在兩個、三個或更多平臺中(諸如在圖示的示例中)。這種多層架構(gòu)的使用在計算機網(wǎng)絡(luò)或系統(tǒng)發(fā)展時支持可擴展性。
[0023]代理12a_n是提供來自各種網(wǎng)絡(luò)安全設(shè)備和/或應(yīng)用的高效、實時(或近實時)本地事件數(shù)據(jù)捕獲和過濾的軟件程序。安全事件的典型源是公共網(wǎng)絡(luò)安全設(shè)備,諸如防火墻、入侵檢測系統(tǒng)和操作系統(tǒng)日志。代理12a-n能夠從產(chǎn)生事件日志或消息的任何源采集事件并且能夠在本地設(shè)備(native device)、在網(wǎng)絡(luò)內(nèi)的合并點、和/或通過簡單網(wǎng)絡(luò)管理協(xié)議(SNMP )陷阱(trap )進行操作。
[0024]代理12a_n可通過手動和自動過程二者以及經(jīng)由關(guān)聯(lián)的配置文件進行配置。每個代理12可以包括至少一個軟件模塊,所述軟件模塊包括標準化組件、時間校正組件、聚合組件、批量(batch)組件、解析器組件、傳輸組件、和/或附加組件。這些組件可以通過配置文件中適當?shù)拿顏砑せ詈?或釋放。
[0025]管理器14可以包括基于服務(wù)器的組件,所述基于服務(wù)器的組件進一步采用規(guī)則引擎18以及集中式事件和趨勢數(shù)據(jù)庫20來對從代理接收到的事件進行合并、過濾和互相關(guān)。管理器14的一個角色是捕獲和存儲所有實時和歷史事件數(shù)據(jù)以構(gòu)造(經(jīng)由數(shù)據(jù)庫管理器22)安全活動的完整的、企業(yè)范圍的圖像。管理器14也提供集中式管理、通知(通過至少一個通知器24)、和報告、以及知識庫28和案例管理工作流。管理器14可以被部署在任何計算機硬件平臺上,并且一個實施例利用數(shù)據(jù)庫管理系統(tǒng)來實現(xiàn)事件數(shù)據(jù)存儲組件。管理器14和代理12a-n之間的通信可以是雙向的(例如,允許管理器14發(fā)送命令到平臺托管代理12a-n)并且加密的。在一些安裝中,管理器14可以充當多個代理12a_n的集中器并且能夠?qū)⑿畔⑥D(zhuǎn)發(fā)到其他管理器(例如,部署在公司總部)。
[0026]管理器14還包括至少一個事件管理器26,所述事件管理器26負責(zé)接收由代理12a-n所發(fā)送的事件數(shù)據(jù)消息。事件管理器26還負責(zé)生成諸如相關(guān)事件和審計事件之類的事件數(shù)據(jù)消息。在實現(xiàn)與代理12a-n雙向通信的情況下,事件管理器26可以被用于將消息發(fā)送到代理12a-n。如果加密被用于代理-管理器通信,則事件管理器26負責(zé)對從代理12a-n接收到的消息進行解密并且對發(fā)送到代理12a-n的任何消息進行加密。
[0027]控制臺16是基于計算機(例如,工作站)的應(yīng)用,所述應(yīng)用允許安全專家執(zhí)行日復(fù)一日的管理和操作任務(wù),諸如事件監(jiān)視、規(guī)則授權(quán)、事故調(diào)查和報告。訪問控制列表允許多個安全專家使用相同的系統(tǒng)和事件/趨勢數(shù)據(jù)庫,其中每個具有適合于他們的責(zé)任的其自己的視圖、相關(guān)規(guī)則、警報、報告和知識庫。單個管理器14能夠支持多個控制臺16。
[0028]在一些實施例中,基于瀏覽器版本的控制臺16可以被用于提供對安全事件、知識庫項目、報告、通知和案例的訪問。也就是說,管理器14可以包括經(jīng)由托管在個人或手持計算機上的web (網(wǎng)絡(luò))瀏覽器可訪問的web服務(wù)器組件(代替控制臺16)以提供控制臺16的部分或全部功能。瀏覽器訪問對于遠離控制臺16的安全專家以及對于兼職用戶尤其有用。控制臺16和管理器14之間的通信是雙向的并且可以被加密。
[0029]通過上述架構(gòu),可以支持集中式或分布式環(huán)境。這是有用的,因為組織可能想要實現(xiàn)系統(tǒng)100的單個實例以及對部分用戶使用訪問控制列表??商娲兀M織可以選擇對于多個組中的每一個部署單獨的系統(tǒng)100并且在“主控(master)”級合并結(jié)果。此類部署也能夠?qū)崿F(xiàn)“跟隨太陽(follow-the-sun)”布置,其中地理上分散的對等組通過將監(jiān)管責(zé)任傳遞到當前工作標準業(yè)務(wù)時間的組而彼此合作。系統(tǒng)100也能夠被部署于其中業(yè)務(wù)部單獨地工作并且支持向上滾動到集中式管理功能的公司層級中。
[0030]網(wǎng)絡(luò)安全系統(tǒng)100還包括趨勢處理能力。在一個實施例中,管理器14進一步包括趨勢處理模塊30和本地內(nèi)存32。趨勢處理模塊30被配置成接收事件集,諸如經(jīng)由事件管理器26來自代理12a-n中的至少一個的、經(jīng)由數(shù)據(jù)庫管理器22來自時間和趨勢數(shù)據(jù)庫20的、或來自事件管理器26的安全事件。可以將事件集讀取到本地內(nèi)存32內(nèi)。本地內(nèi)存32可以是任何適當?shù)拇鎯橘|(zhì)并且可以位于管理器14本身上、在包含管理器14的集群中、或在對管理器14而言可訪問的網(wǎng)絡(luò)節(jié)點上。趨勢處理模塊30進一步被配置成通過將與趨勢關(guān)聯(lián)的過濾器應(yīng)用于每個事件上、以及對趨勢結(jié)果進行聚合來對事件進行內(nèi)存中處理(例如,在本地內(nèi)存32中)。趨勢處理模塊30也被配置成將聚合趨勢結(jié)果存儲在持久性存儲器中,諸如經(jīng)由數(shù)據(jù)庫管理器22存儲在數(shù)據(jù)庫20的趨勢表中。
[0031]如前所述,趨勢是被調(diào)度以周期性運行查詢的任務(wù),所述查詢的聚合結(jié)果被周期性存儲在例如與該特定趨勢關(guān)聯(lián)的數(shù)據(jù)庫表中。趨勢可以被用于給使用網(wǎng)絡(luò)安全系統(tǒng)100的網(wǎng)絡(luò)管理者或其他分析者提供報告。在調(diào)度多個趨勢的情況下,趨勢處理模塊30被配置成確定用于每個趨勢的查詢以及每個查詢的條件和計算字段。此外,趨勢處理模塊30被配置成根據(jù)所述條件和計算字段對事件進行過濾。查詢結(jié)果被聚合并且周期地存儲在事件和趨勢數(shù)據(jù)庫20中。
[0032]趨勢處理模塊30可以通過將唯一條件和唯一計算字段應(yīng)用到每個接收到的事件來對過濾過程進行優(yōu)化。例如,可以存在60個被評估的趨勢。每個趨勢可以包括10個條件??偟膩碚f,這總計達600個條件。600個條件可以包括100個唯一條件。代替對事件執(zhí)行600個條件的評估,應(yīng)用100個唯一條件,從而減少計算量。
[0033]在一個實施例中,代理12a_n可以進一步被配置成對事件進行內(nèi)存中處理。代理12a-n尤其被配置成從源接收事件集,通過將與趨勢關(guān)聯(lián)的過濾器應(yīng)用于每個事件來對事件進行內(nèi)存中處理,以及對趨勢結(jié)果進行聚合。代理操作于其接收的事件并且不會使關(guān)于所述事件的信息被其他代理所接收。正因為這樣,由代理所提供的聚合數(shù)據(jù)是基于部分事件集的趨勢結(jié)果(例如,部分聚合趨勢結(jié)果)。
[0034]在操作中,代理12a_n可以提供事件和/或聚合數(shù)據(jù)。在一個示例中,代理12a_n提供事件,所述事件由事件管理器26在事件流中接收到并且被傳遞給規(guī)則引擎18和趨勢處理模塊30用于處理。此外,由管理器14經(jīng)由事件管理器26所生成的事件也被傳遞給規(guī)則引擎18和趨勢處理模塊30用于處理。如本文使用的,事件流是事件的連續(xù)流。從代理12a-n接收到的或由管理器14所生成的事件數(shù)據(jù)經(jīng)由數(shù)據(jù)庫管理器22被存儲在數(shù)據(jù)庫20的事件表中。
[0035]當接收事件時,趨勢處理模塊30根據(jù)條件和計算字段對事件進行過濾。被應(yīng)用的條件可以是查詢條件集的唯一條件。同樣地,被應(yīng)用的計算字段可以是唯一計算字段。對于通過過濾器的事件來說,在該事件上對每個查詢進行評估。每個查詢的結(jié)果被保存在管理器14的內(nèi)存中。針對多個事件來將查詢結(jié)果聚合為聚合趨勢結(jié)果,所述聚合趨勢結(jié)果被存儲在數(shù)據(jù)庫20的趨勢表中。在一個實施例中,每個趨勢與數(shù)據(jù)庫20中其自身的表關(guān)聯(lián)。
[0036]當?shù)搅颂峁﹫蟾娴臅r候,數(shù)據(jù)庫20的趨勢表被查詢并且相關(guān)預(yù)計算數(shù)據(jù)(即,聚合趨勢結(jié)果)被檢索。正因為這樣,本文描述了讀取一次并多次評估模型。通過減少磁盤訪問量以及通過評估唯一條件和唯一計算字段而顯著減少系統(tǒng)上的負載。
[0037]圖2A是根據(jù)實施例用于聚合趨勢結(jié)果的內(nèi)存中生成的過程流程圖??梢酝ㄟ^運行可執(zhí)行指令的序列來執(zhí)行所描述的過程流程200。在另一個實施例中,過程流程200的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程200的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢處理模塊中的可執(zhí)行指令的序列來執(zhí)行。趨勢處理模塊可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器和/或代理處。
[0038]趨勢報告能力使客戶能夠追蹤規(guī)定時間段上的活動以識別例如聯(lián)網(wǎng)設(shè)備中的風(fēng)險或威脅上的改變。部分地通過在事件到達內(nèi)存中時對其進行評估來改善生成規(guī)律調(diào)度的報告的性能。在步驟210,與趨勢關(guān)聯(lián)的查詢被確定。在由網(wǎng)絡(luò)安全系統(tǒng)來評估多個趨勢的情況下,與其關(guān)聯(lián)的每個查詢被確定。
[0039]在步驟220,從查詢識別出唯一元素(例如,唯一條件和唯一計算字段)。如本文使用的,查詢的元素是查詢的元素表達。通常,查詢包括條件或表達,例如在WHERE子句中和在HAVING子句中用于SELECT (選擇)數(shù)據(jù)的子集。許多條件與值進行比較例如以得到相等、不等、或相似。
[0040]盡管查詢是唯一的(例如,查找不同的事件以及計算不同的結(jié)果),在使用的條件中可能存在共性。單個查詢中的唯一條件被識別。在存在多個查詢的情況下,查詢中的唯一條件被識別。
[0041]條件可以具有復(fù)合過濾器,例如,過濾器可以具有子過濾器。如本文使用的,條件元素是條件或子條件的元素表達。正因為這樣,唯一條件元素可以被識別。
[0042]此外,唯一計算字段也被識別。如本文使用的,計算字段是例如數(shù)據(jù)庫表中的字段,對于所述數(shù)據(jù)庫表,值是在至少一個其他字段上執(zhí)行計算的結(jié)果。在一個實施例中,計算涉及將函數(shù)或表達屬性應(yīng)用于另一個字段上或通過將表進行連接。在多個查詢被確定的情況下,所有查詢中的唯一計算字段被識別。通常計算字段的評估是十分復(fù)雜的,涉及各種其他字段和/或表。
[0043]使用唯一條件和唯一計算字段確定的過濾結(jié)果能夠在所有查詢之中共享,從而減少在事件上執(zhí)行的評估的冗余。例如,第一查詢可以包括條件:SELECT * from T WHEREsource = 001.16.254.1。盡管與第一查詢不同,另一個查詢共享該相同的條件。代替在接收到的事件上評估這個條件兩次(即,一次對于第一查詢,并且再次對于第二查詢),在接收到的事件上評估該條件一次(例如,作為過濾器),并且結(jié)果在第一和第二查詢之間共享。
[0044]在另一個示例中,第一查詢可以包括規(guī)定參與者(actor)的角色的計算字段:SELECT * from T WHERE role (Source_IP_Address) = developer。第二查詢可以包括相同的計算字段,而在不同的查詢的上下文中:SELECT * from T WHERE role (Source_IP_Address)= QA?!敖巧庇嬎阕侄问菑?fù)雜的。如果這些查詢在磁盤(或者甚至是內(nèi)存中)的事件上被計算,相同的計算字段可以被評估多次。由于計算字段的評估是資源密集操作,減少這些評估的冗余是有利的。特別地,對兩個查詢共同的計算字段可以被評估一次并且過濾結(jié)果共享在網(wǎng)絡(luò)安全系統(tǒng)中的評估下的所有查詢之中。
[0045]使用唯一條件和唯一計算字段來共享結(jié)果為針對內(nèi)存中評估和存儲在磁盤上(例如,在數(shù)據(jù)庫的事件表中)的數(shù)據(jù)的查詢的評估二者提供效率。
[0046]當事件被接收到并且查詢被在事件上評估時,聚合趨勢結(jié)果被確定。在步驟230,事件例如通過網(wǎng)絡(luò)安全系統(tǒng)中的管理器被接收在內(nèi)存中。事件可能已經(jīng)源自代理并且經(jīng)由事件流而被管理器所接收。在另一個實施例中,事件由代理從諸如聯(lián)網(wǎng)設(shè)備之類的源設(shè)備接收。
[0047]在步驟240,在事件上對查詢進行評估。評估包括對查詢結(jié)果進行過濾和確定。為了過濾,來自查詢或在多個查詢之中的唯一條件和/或唯一計算字段被應(yīng)用到事件。過濾條件和計算字段被用于確定事件是否是感興趣的。沒有通過過濾器的事件不進一步進行任何處理。[0048]在一個實施例中,過濾樹被用于將唯一條件和/或唯一計算字段應(yīng)用于一個或多個事件。特別地,過濾樹被針對每個查詢而生成。過濾樹表示單個查詢的條件和/或計算字段。在存在多個查詢的情況下,每個查詢的過濾樹被結(jié)合,形成復(fù)雜表達,所述復(fù)雜表達然后被應(yīng)用于一個或多個事件。
[0049]在另一個實施例中,條件和/或計算字段被應(yīng)用于一個或多個事件作為每個條件和/或計算字段的邏輯OR (或)。用于使用唯一條件和/或計算字段對事件進行過濾的其他技術(shù)可以被實現(xiàn)。
[0050]查詢結(jié)果被針對通過過濾器的那些事件而確定。該結(jié)果是將查詢應(yīng)用于事件的結(jié)果。例如,在查詢包括GROUP BY子句、HAVING子句、ORDER子句、或其他非條件子句的情況下,在已過濾的事件上運行包括這些或其他非條件子句的完整查詢。
[0051]在步驟250,針對多個事件的查詢結(jié)果被聚合。如本文使用的,聚合結(jié)果是在趨勢間隔的持續(xù)時間內(nèi)所有已過濾的事件上的查詢結(jié)果。在多個事件上評估相同的查詢,并且聚合每個評估的結(jié)果,提供單個組合結(jié)果(即,聚合趨勢結(jié)果)。
[0052]例如,對于在第一事件上評估的查詢的結(jié)果被確定。對于在第二事件上評估的相同的查詢的結(jié)果被確定。對于第一事件的查詢結(jié)果與對于第二事件的查詢結(jié)果相聚合,提供聚合趨勢結(jié)果。
[0053]在另一個示例中,每小時趨勢可以測量在一個小時的范圍內(nèi)源IP地址的帶寬使用。在一個實施例中,一個事件包括測量源IP地址的帶寬使用。另一個事件包括其自己測量相同的源IP地址的帶寬使用。為了確定聚合趨勢結(jié)果(例如,總運行計數(shù)),兩個事件的帶寬使用通過求和來聚合。
[0054]處理繼續(xù)從步驟250到步驟230,其中另一個事件被內(nèi)存中處理。事件處理繼續(xù),例如,直到趨勢時間間隔已經(jīng)期滿,如圖2B所述。
[0055]聚合趨勢結(jié)果可以不被直接使用。如前所述,報告或查詢可以被應(yīng)用于趨勢結(jié)果以生成最終報告。例如,報告可以對理解在一個月的過程中對安全系統(tǒng)中聯(lián)網(wǎng)設(shè)備的攻擊的總數(shù)感興趣。趨勢可以以較高的頻率來對事件數(shù)據(jù)進行預(yù)計算,即,每天生成聚合趨勢結(jié)果而不是在月末一次評估所有的事件。當報告在月末到期時,30個聚合趨勢結(jié)果(每天一個)被用于生成最終報告。通過每天對事件進行評估,運行查詢的成本被分布在多天上。計算上地,內(nèi)存中事件數(shù)據(jù)的最小集的評估顯著地減少安全系統(tǒng)上的負載。當最終報告在月末到期時,大部分數(shù)據(jù)已經(jīng)被預(yù)計算并且最終報告可以被快速并按時生成。
[0056]此外,磁盤訪問也極大減少,這可以提供附加效率。由于查詢評估全部發(fā)生在內(nèi)存中,磁盤訪問可以被限制于例如從數(shù)據(jù)庫中的趨勢表采集與報告相關(guān)的聚合趨勢數(shù)據(jù)。
[0057]圖2B是根據(jù)實施例用于存留聚合趨勢結(jié)果的過程流程圖。描述的過程流程280可以通過運行可執(zhí)行指令序列來執(zhí)行。在另一個實施例中,過程流程280的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程280的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢處理模塊中的可執(zhí)行指令的序列來執(zhí)行。趨勢處理模塊可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器處。
[0058]在步驟285,聚合趨勢結(jié)果被確定,例如,如圖2A所示。聚合趨勢結(jié)果可以被代理發(fā)送并且被部署在管理器處的趨勢處理模塊所接收。在另一個實施例中,聚合趨勢結(jié)果由部署在管理器處的趨勢處理模塊所生成。[0059]事件被處理,直到趨勢時間間隔已經(jīng)期滿。在步驟290,確定趨勢時間間隔是否已經(jīng)期滿。如前所述,每個趨勢與其間在事件上對查詢進行評估的時間間隔或持續(xù)時間關(guān)聯(lián)。如果對于趨勢來說,間隔已經(jīng)期滿,則聚合趨勢結(jié)果被存留或以其他方式被存儲在例如數(shù)據(jù)庫的趨勢表中,在步驟295。
[0060]在一個實施例中,在間隔期滿之后并且在寬限期之后,聚合趨勢結(jié)果被存留。寬限期允許將處理管道(processing pipeline)中的一些事件被考慮到聚合結(jié)果中。
[0061]數(shù)據(jù)檢查點可以以定義的間隔(例如,每5分鐘或10分鐘)來生成。在過程流程200或280的過程期間的任何時間,當檢查點時間間隔已經(jīng)過去時,內(nèi)存中的一個或多個聚合趨勢結(jié)果的當前運行值被存留在例如文件系統(tǒng)上的文件中作為序列化數(shù)據(jù)結(jié)構(gòu)。檢查點間隔可以是可配置的。在一個實施例中,如果在過程流程200或280的過程期間的任何時間請求系統(tǒng)關(guān)閉,則聚合趨勢結(jié)果檢查點被存留到磁盤。
[0062]圖3是根據(jù)實施例用于恢復(fù)系統(tǒng)狀態(tài)的過程流程圖。描述的過程流程300可以通過運行可執(zhí)行指令序列來執(zhí)行。在另一個實施例中,過程流程300的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程300的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢處理模塊中的可執(zhí)行指令的序列來執(zhí)行。趨勢處理模塊可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器處。
[0063]在系統(tǒng)故障或系統(tǒng)無意地關(guān)閉的其他場景的情況下,管理器可以被恢復(fù)到先前的狀態(tài)。特別地,管理器可以被恢復(fù)到當關(guān)閉發(fā)生時的狀態(tài)。在由管理器評估事件流中的任何新事件之前,可以恢復(fù)管理器的先前狀態(tài)?;謴?fù)開始于管理器啟動的時候,在系統(tǒng)故障之后。在步驟320,從磁盤加載上一個檢查點(例如,最近的檢查點)。更特別地,通過將上一個檢查點從文件系統(tǒng)加載到管理器內(nèi)存,趨勢處理器的狀態(tài)被恢復(fù)到當上一個檢查點被獲得時的時間。
[0064]確定管理器是否完全恢復(fù)到先前的狀態(tài)。如果是的話,管理器可以從上一個檢查點重新開始。否則,先前狀態(tài)的附加重建被執(zhí)行。在步驟330,確定上一個檢查點的時間戳。將管理器關(guān)閉時間戳和上一個檢查點的時間戳進行比較,并且確定二者之間是否存在匹配,在步驟340。如果時間戳匹配,確定管理器被完全恢復(fù)到先前的狀態(tài)(即,當發(fā)生關(guān)閉時管理器的狀態(tài))。管理器被視為準備好重新開始處理內(nèi)存中的新事件。
[0065]如果不存在匹配,附加重建被執(zhí)行以便將管理器恢復(fù)到先前的狀態(tài)(即,當發(fā)生關(guān)閉時管理器的狀態(tài))。在步驟350,例如從包括實時和歷史事件數(shù)據(jù)的事件數(shù)據(jù)庫獲取感興趣的一個或多個事件。感興趣的事件包括在獲得上一個檢查點之后并且在管理器關(guān)閉發(fā)生之前到達趨勢處理器的事件。
[0066]例如,檢查點發(fā)生在11:00并且管理器在11:02突然關(guān)閉。到11:00的一個或多個聚合趨勢結(jié)果可以從上一個檢查點獲取。然而,存在兩分鐘的時段(在上一個檢查點時間戳和關(guān)閉之間的時間),其中被處理的時間在內(nèi)存中,而不被反映在上一個檢查點中。這些感興趣的事件被檢索。正因為這樣,加載上一個檢查點提供到先前狀態(tài)的部分恢復(fù)。
[0067]感興趣的事件被重處理以將狀態(tài)完全恢復(fù)到系統(tǒng)出故障的時間。特別地,在步驟360,針對感興趣的事件確定聚合趨勢結(jié)果。感興趣的事件被評估,例如,如圖2所示。特別地,在每個感興趣的事件上對查詢進行評估,并且查詢結(jié)果被聚合。聚合趨勢結(jié)果表示在關(guān)閉發(fā)生時的時間段內(nèi)內(nèi)存的快照。在該階段,先前狀態(tài)(即,當關(guān)閉發(fā)生時管理器的狀態(tài))被完全恢復(fù)并且管理器準備好重新開始處理內(nèi)存中的新事件。
[0068]圖4A是根據(jù)實施例用于負載共享的過程流程圖。描述的過程流程400可以通過運行可執(zhí)行指令的序列來執(zhí)行。在另一個實施例中,過程流程400的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程400的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢處理模塊中的可執(zhí)行指令的序列來執(zhí)行。趨勢處理模塊可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器處。
[0069]處理事件的責(zé)任可以選擇地從實時、內(nèi)存中處理轉(zhuǎn)移到數(shù)據(jù)存儲器中的批處理,二者產(chǎn)生相同的結(jié)果,即聚合趨勢結(jié)果。
[0070]在步驟410,確定資源利用率是否超過最大閾值。例如,管理器的系統(tǒng)管理組件可以基于事件的內(nèi)存中評估來監(jiān)視處理器負載和/或內(nèi)存消耗,并且在超過最大處理器負載閾值或最大內(nèi)存消耗閾值的情況下可以生成警報或其他消息。在一個實施例中,如果在延長的持續(xù)時間內(nèi)超過至少一個最大閾值,則生成警報例如來避免處理器尖峰。
[0071]在超過最大閾值的情況下,內(nèi)存中被處理的趨勢數(shù)被減小,在步驟415。例如,如果系統(tǒng)在內(nèi)存或處理器資源上低,對于內(nèi)存中評估,內(nèi)存中查詢的子集被暫時掛起。在稍后的時間針對流入內(nèi)存中的相同的事件來對被掛起的查詢進行評估,但是使用包括實時和歷史事件數(shù)據(jù)的事件數(shù)據(jù)庫中的批處理。
[0072]此外,趨勢(及關(guān)聯(lián)的查詢)可以被選擇以基于各種資源利用率統(tǒng)計而被掛起。例如,消耗大量內(nèi)存或處理器資源的查詢被選擇以被掛起和卸載到數(shù)據(jù)存儲器中的批處理。
[0073]圖4B是根據(jù)實施例用于負載共享的另一個過程流程。描述的過程流程420可以通過運行可執(zhí)行指令的序列來執(zhí)行。在另一個實施例中,過程流程420的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程420的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢處理模塊中的可執(zhí)行指令的序列來執(zhí)行。趨勢處理模塊可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器處。
[0074]處理事件的職責(zé)可以被選擇性地從數(shù)據(jù)存儲器中的批處理轉(zhuǎn)回實時、內(nèi)存中處理。
[0075]在步驟425,確定管理器的資源利用率是否超過轉(zhuǎn)回(shift-back)閾值。轉(zhuǎn)回閾值表示重新開始被掛起的趨勢(及關(guān)聯(lián)的查詢)的內(nèi)存中處理所需的可用資源的最小量。在最小量資源變得可用的情況下,一個或多個被掛起的趨勢可以被選擇以重新開始內(nèi)存中處理,在步驟430。
[0076]圖4C是根據(jù)實施例用于監(jiān)視趨勢數(shù)據(jù)的過程流程圖。描述的過程流程440可以通過運行可執(zhí)行指令的序列來執(zhí)行。在另一個實施例中,過程流程440的各部分被網(wǎng)絡(luò)安全系統(tǒng)的組件、例如專用集成電路(ASIC)等的硬件邏輯的布置所執(zhí)行。例如,過程流程440的塊可以通過運行網(wǎng)絡(luò)安全系統(tǒng)的趨勢數(shù)據(jù)監(jiān)視器中的可執(zhí)行指令的序列來執(zhí)行。趨勢數(shù)據(jù)監(jiān)視器可以被部署在例如網(wǎng)絡(luò)安全系統(tǒng)中的管理器處。
[0077]周期任務(wù)可以被運行以監(jiān)視數(shù)據(jù)庫中的趨勢表。在步驟450,確定對于趨勢的聚合數(shù)據(jù)是否如所預(yù)期的那樣存在于趨勢表中。例如,當趨勢時間間隔已經(jīng)期滿時,聚合趨勢數(shù)據(jù)預(yù)期將被存留。周期任務(wù)檢查來確認數(shù)據(jù)已經(jīng)確實如所預(yù)期的那樣被存留。
[0078]在趨勢表中沒有找到聚合趨勢數(shù)據(jù)的情況下,在事件數(shù)據(jù)庫上對與趨勢關(guān)聯(lián)的查詢進行評估,在步驟455。換句話說,在事件上對查詢進行評估作為批處理。在步驟465,例如通過填充(populate)趨勢表而將查詢結(jié)果存留。正因為這樣,當內(nèi)存中處理表現(xiàn)不如所預(yù)期的那樣時,針對被存儲在數(shù)據(jù)庫中的事件對趨勢進行評估。
[0079]圖5圖示其中可以實現(xiàn)實施例的計算機系統(tǒng)。系統(tǒng)500可以被用于實現(xiàn)上述任何計算機系統(tǒng)。計算機系統(tǒng)500被示出包括可以經(jīng)由總線524電耦合的硬件元件。硬件元件可以包括至少一個中央處理單元(CPU) 502、至少一個輸入設(shè)備504、和至少一個輸出設(shè)備506。計算機系統(tǒng)500還可以包括至少一個存儲設(shè)備508。例如,存儲設(shè)備508能夠包括能夠是可編程的、可閃速更新的和/或等等的設(shè)備,諸如磁盤驅(qū)動器、光學(xué)存儲設(shè)備、諸如隨機存取存儲器(“RAM”)和/或只讀存儲器(“ROM”)之類的固態(tài)存儲設(shè)備。
[0080]計算機系統(tǒng)500可以附加地包括計算機可讀存儲介質(zhì)讀取器512、通信系統(tǒng)514(例如,調(diào)制解調(diào)器、網(wǎng)卡(無線或有線的)、紅外通信設(shè)備等)、以及可以包括上述的RAM和ROM設(shè)備的工作內(nèi)存518。在一些實施例中,計算機系統(tǒng)500還可以包括處理加速單元516,其能夠包括數(shù)字信號處理器(DSP)、專用處理器、和/或等等。
[0081]計算機可讀存儲介質(zhì)讀取器512能夠進一步連接到計算機可讀存儲介質(zhì)510, —起(在一個實施例中結(jié)合存儲設(shè)備508)全面表示遠程、本地、固定和/或可移動的存儲設(shè)備及任何有形非臨時存儲介質(zhì),用于暫時和/或更持久包含、存儲、傳遞、和檢索計算機可讀信息(例如,指令和數(shù)據(jù))。計算機可讀存儲介質(zhì)510可以是非臨時的,諸如硬件存儲設(shè)備(例如,RAM、ROM、EPROM (可擦除可編程R0M)、EEPR0M (電可擦除可編程ROM)、硬盤、和閃存)。通信系統(tǒng)514可以允許與網(wǎng)絡(luò)和/或上文參考系統(tǒng)500所描述的任何其他計算機交換數(shù)據(jù)。計算機可讀存儲介質(zhì)510包括趨勢處理模塊525,并且還可以包括趨勢數(shù)據(jù)監(jiān)視器。
[0082]計算機系統(tǒng)500還可以包括是機器可讀指令的軟件元素,示為當前位于工作內(nèi)存518內(nèi),包括操作系統(tǒng)520和/或諸如應(yīng)用程序(可以是客戶端應(yīng)用、web瀏覽器、中間層應(yīng)用等)之類的其他代碼522。應(yīng)該認識到的是,計算機系統(tǒng)500的可替代實施例可以具有從上述實施例產(chǎn)生的各種變形。例如,定制硬件也可以被使用和/或特定元素可以以硬件、軟件(包括便攜式軟件,諸如小應(yīng)用程序(applet))或二者實現(xiàn)。此外,可以采用到諸如網(wǎng)絡(luò)輸入/輸出設(shè)備之類的其他計算設(shè)備的連接。
[0083]因此,說明書和附圖應(yīng)以說明性而非限制性意義來考慮。然而,明顯的是可以做出各種修改和改變。
[0084]在本說明書中(包括任何附加的權(quán)利要求、摘要和附圖)公開的每個特征可以被相同、等價或類似目的的可替代特征所替代,除非另有表述之外。因而,除另有表述之外,公開的每個特征是一系列通用的等價或類似特征的一個示例。
【權(quán)利要求】
1.一種用于對事件進行內(nèi)存中處理的方法,所述方法包括: 確定多個查詢的唯一元素集,其中多個查詢中的每個查詢在定義的調(diào)度和持續(xù)時間上運行; 在計算設(shè)備的本地內(nèi)存處,在事件流中接收多個事件; 使用唯一元素集對多個事件進行過濾; 對于多個查詢中的每個查詢,確定針對多個事件中的每個已過濾的事件的查詢結(jié)果;以及 對于多個查詢中的每個查詢,提供每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚合。
2.如權(quán)利要求1所述的方法,其中所述唯一元素集包括唯一計算字段。
3.如權(quán)利要求1所述的方法,其中確定唯一元素集包括: 確定多個查詢中的第一查詢的計算字段和多個查詢中的第二查詢的計算字段是相同的。`
4.如權(quán)利要求1所述的方法,進一步包括: 對于多個查詢中的每個查詢,將聚合查詢結(jié)果存儲在持久性存儲體中。
5.如權(quán)利要求1所述的方法,其中確定唯一元素集包括: 確定用于多個查詢中的第一查詢的過濾樹,其中用于第一查詢的過濾樹包括第一查詢的唯一元素集; 確定用于多個查詢中的第二查詢的過濾樹,其中用于第二查詢的過濾樹包括第二查詢的唯一元素集;以及 將第一查詢的過濾樹與第二查詢的過濾樹合并。
6.如權(quán)利要求1所述的方法,進一步包括: 生成多個數(shù)據(jù)檢查點,其中每個檢查點包括聚合查詢結(jié)果的內(nèi)存中運行值; 檢測計算設(shè)備的關(guān)閉;以及 使用多個檢查點中的數(shù)據(jù)檢查點將計算設(shè)備恢復(fù)到先前的狀態(tài)。
7.如權(quán)利要求6所述的方法,其中恢復(fù)計算設(shè)備進一步包括: 將多個檢查點中的數(shù)據(jù)檢查點加載到計算設(shè)備的本地內(nèi)存;以及 確定計算設(shè)備是否完全被恢復(fù)到先前的狀態(tài)。
8.如權(quán)利要求7所述的方法,進一步包括: 在確定計算設(shè)備沒有被完全恢復(fù)的情況下,從持久性存儲體中獲取感興趣的事件; 使用唯一元素集對感興趣的事件進行過濾; 對于多個查詢中的每個查詢,確定針對感興趣的每個已過濾的事件的查詢結(jié)果;以及 對于多個查詢中的每個查詢,提供感興趣的每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚口 ο
9.一種用于對事件進行處理的系統(tǒng),所述系統(tǒng)包括: 用于存儲聚合查詢結(jié)果的持久性存儲器;以及 計算機,包括: 趨勢處理模塊;以及 用于查詢結(jié)果的內(nèi)存中聚合的內(nèi)存; 其中所述趨勢處理模塊被配置成:確定多個查詢的唯一元素集,其中多個查詢中的每個查詢在定義的調(diào)度和持續(xù)時間上運行; 在事件流中接收多個事件; 使用唯一元素集對多個事件進行過濾; 對于多個查詢中的每個查詢,確定針對多個事件中的每個已過濾的事件的查詢結(jié)果;以及 對于多個查詢中的每個查詢,提供每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚合。
10.如權(quán)利要求9所述的系統(tǒng),其中所述持久性存儲器包括多個事件,并且其中趨勢處理模塊進一步被配置成: 選擇多個查詢中的查詢;以及 在持久性存儲器中的多個事件上運行已選擇的查詢。
11.如權(quán)利要求9所述的系統(tǒng),其中確定唯一元素集包括: 確定多個查詢中的第一查詢的計算字段和多個查詢中的第二查詢的計算字段是相同的。
12.如權(quán)利要求9所述的系統(tǒng),其中對于多個查詢中的每個查詢,聚合查詢結(jié)果被存儲在持久性存儲器中。
13.一種存儲多個指令以控制用于對事件進行處理的數(shù)據(jù)處理器的非臨時計算機可讀介質(zhì),所述多個指令包括使數(shù)據(jù)處理器進行以下動作的指令: 確定多個查詢的唯一元素集,其中多個查詢中的每個查詢在定義的調(diào)度和持續(xù)時間上運行; 在計算設(shè)備的本地內(nèi)存處,在事件流中接收多個事件; 使用唯一元素集對多個事件進行過濾; 對于多個查詢中的每個查詢,確定針對多個事件中的每個已過濾的事件的查詢結(jié)果;以及 對于多個查詢中的每個查詢,提供每個已過濾的事件的查詢結(jié)果的內(nèi)存中聚合。
14.如權(quán)利要求13所述的非臨時計算機可讀介質(zhì),其中所述唯一元素集包括唯一計算字段。
15.如權(quán)利要求13所述的非臨時計算機可讀介質(zhì),其中使數(shù)據(jù)處理器確定唯一元素集的指令包括使數(shù)據(jù)處理器確定多個查詢中的第一查詢的計算字段和多個查詢中的第二查詢的計算字段相同的指令。
【文檔編號】G06F21/30GK103502990SQ201180070497
【公開日】2014年1月8日 申請日期:2011年4月29日 優(yōu)先權(quán)日:2011年4月29日
【發(fā)明者】A.辛拉 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)