一種基于并行分布式架構的復雜事件處理的方法
【專利摘要】一種基于并行分布式架構的復雜事件處理的方法屬于網絡安全領域。本發明把關聯分析的查詢語句分解成由有狀態操作和無狀態操作組成的操作序列,按照每個子查詢至多有且僅包含一個有狀態查詢的原則把操作序列進行拆分,并且按照拆分的數目把集群等分成幾個子集群,然后把子查詢部署到相應的子集群。這樣部署到不同子群的不同子操作序列之間可以并行計算,部署到同一個子群的不同機器的同一個操作也可以并行計算。即不同查詢之間是并行的(查詢間并行),相同查詢之間也是并行的(查詢內并行);查詢內并行不僅包括不同操作之間是并行的,而且相同操作之內也是并行的。即每個操作都是并行,這樣即可解決查詢計算遇到的節點性能瓶頸問題。
【專利說明】一種基于并行分布式架構的復雜事件處理的方法
【技術領域】
[0001] 本發明屬于網絡安全【技術領域】,特別是一種網絡安全事件實時關聯分析引擎基于 分布式并行架構的實現方法。
【背景技術】
[0002] 安全信息和事件管理系統技術為安全相關信息提供一個綜合的視角。安全信息和 事件管理系統作為安全信息和事件的最終匯總,并對其進行實時分析,其所處的位置居于 整個安全防御系統的核心中央。目前的安全信息和事件管理系統已經廣泛擴展了事件監控 能力,包括主動安全事故監控管理,被動日志自動收集管理。
[0003] 當前的安全信息和事件管理系統的關聯分析引擎是一個集中式的解決方案,隨著 接入安全信息和事件管理系統的日志源增加,其收集到的數據增長速度已經遠快于其關聯 分析引擎的計算能力提升速度。
[0004] 目前安全信息和事件管理系統在面對收集數據的增加,主要采取三種思路:第一 種思路是改進現有安全信息和事件管理系統關聯分析引擎的處理能力,比如采用復雜事件 處理技術改進關聯分析引擎,該種方案可以暫時緩解關聯分析引擎計算能力不足的問題; 第二種思路是對未來得及處理的安全信息和事件先緩存,以等待進一步的分析,該種方案 的好處是安全信息和事件不會被遺漏;第三種思路是對安全信息和事件采取QoS (服務質 量控制)策略,對定義認為無效的事件做丟棄處理,該種方案的好處是對安全信息和事件 可做快速的響應。從安全的角度出發,以上三種思路都有缺陷:
[0005] >采取復雜事件處理技術,增強安全信息和事件管理系統關聯分析引擎的技術能 力,相比以前,增加了一定的關聯分析計算能力的,但是這種增加無法趕上計算數據的增加 速度,無法完全改善關聯分析引擎的計算能力;
[0006] >采取緩存技術,可保證安全信息和事件不會丟棄,保證分析的全面性,但是無法 滿足安全發現的及時性,延后的分析結果對安全處置幾乎無太多用處;
[0007] >采取QoS策略,可保證安全信息和事件的即時關聯分析,并作出即時響應,但是 丟棄的事件規則是人依據已有的知識制定的,可能會因此遺漏關鍵的安全事件,導致分析 結果不完全。
【發明內容】
[0008] 本發明是為了解決以上三種思路的困境,提出一種基于并行分布式架構的復雜事 件處理方法,即結合復雜事件處理技術、分布式技術以及并行技術,以分布式并行的復雜事 件處理引擎替代當前集中式的處理引擎,以徹底解決當前解決方案面臨的技術困境。
[0009] 本發明結合復雜事件處理技術的特點,把復雜事件處理技術對事件進行處理的操 作分解成幾個元操作,并把元操作分為兩類:無狀態操作和有狀態操作。所謂無狀態操作, 即對后面的事件的處理操作和前面的事件的處理操作無關聯。所謂有狀態操作,對后面事 件的處理操作需要依據結合前面事件的處理操作進行處理操作,通過滑動窗口實現。劃分 的無狀態操作包括:映射、轉換操作,過濾操作,聯合操作;有狀態操作包括:聚合操作,連 接操作。
[0010] 本發明方法的流程如圖1所示。
[0011] 本發明方法的具體步驟如下:
[0012] 步驟1 :獲取用于關聯分析的查詢語句;
[0013] 步驟2 :把查詢語句按照上文定義的有狀態操作和無狀態操作分解成一串操作序 列;
[0014] 步驟3 :按照有狀態操作把操作序列(查詢語句)分解成子操作序列(子查詢語 句),即有多少個有狀態操作就劃分成多少個子操作序列。其中劃分的第一個子操作序列至 少包括無狀態的操作,可以僅由無狀態的操作組成,且該子操作序列包含了第一個有狀態 操作之前的所有無狀態操作。包含有狀態操作的子操作序列其第一個操作一定是有狀態操 作,該子操作也包含下一個有狀態操作之前的所有無狀態操作。
[0015] 步驟4:依照步驟3查詢語句劃分成子查詢的數量,把集群按照該數目等分成相同 數量的子群,把查詢語句按照步驟2劃分成的子操作序列分布式部署到劃分好的每個子群 上,子群中的每個機器都部署相應的子操作。
[0016] 本發明結合復雜事件處理技術把關聯分析的查詢語句分解成由有狀態操作和無 狀態操作組成的操作序列,按照每個子查詢至多有且僅包含一個有狀態查詢的原則把操作 序列進行拆分,并且按照拆分的數目把集群等分成幾個子集群,然后把子查詢部署到相應 的子集群。這樣部署到不同子群的不同子操作序列之間可以并行計算,部署到同一個子群 的不同機器的同一個操作也可以并行計算。即不同查詢之間是并行的(查詢間并行),相同 查詢之間也是并行的(查詢內并行);查詢內并行不僅包括不同操作之間是并行的(操作 間并行),而且相同操作之內也是并行的(操作內并行)。即每個操作都是并行,這樣即可 解決查詢計算遇到的節點性能瓶頸問題。
【專利附圖】
【附圖說明】
[0017] 圖1是本發明流程圖。
[0018] 圖2查詢語句分解 [0019] 圖3操作序列劃分
[0020] 圖4查詢部署
【具體實施方式】
[0021] 下面結合流程圖,對優選實施例作詳細說明,應該強調的是,下述說明僅僅是示例 性的,而不是為了限制本發明的范圍及其應用。
[0022] 首先結合事件流定義,對復雜事件流元操進行定義:
[0023] 映射操作Map,其定義如下:
[0024] Map{ Aj - F1,..., Aih - F111} (5*)
[0025] 給定一個輸入事件流S,依照用戶定義一組有序的轉換表達式,例如 < =F1,..,對輸入的事件進行屬性轉換并輸出轉換結果事件。
[0026] 過濾操作Filter,其定義如下:
[0027] Fi Iter ((P1, O1),..., (Pm, 0m), 0m+1} (S)
[0028] 給定一個輸入事件流S,依照用戶預定義的一組有序的斷言集合 {(P1, O1),. . .,(Pm,OJ,0m+1},每一個輸入的事件轉發到該事件適配的第一個斷言對應的輸 出,即符合斷言Pm,則輸出到Om,如果全部斷言都不符合,則輸出到〇m+1。
[0029] 聯合操作Union,其定義如下:
[0030] Union (S1,…,Sm)
[0031] 該操作合并輸入流S1, ...,Sm,并輸出一個合并的流,其中這些流模式相同。輸出 流的模式和輸入流的模式相同。
[0032] 聚合操作Aggregate,其定義如下:
[0033] AggregateixWType^izeMvance, A, = Fr...,A:n = Fm,Group-by{A],...,AJ\(S)
[0034] 給定一個事件輸入流S,在該輸入流上執行滑動窗口,并在窗口上應用一組有序的 聚合函數4 = 6,...,^*^ = ,每個單獨的窗口保持的事件的屬性由"Group-by"的參數確 定。其中窗口由窗口的大小size,滑動步長advance兩個參數定義。窗口類型WType可分 為基于時間(Time)和元組(Tuple)兩類。
[0035] 連接操作Join,其定義如下:
[0036] Join {P,size, advance} (S1, Sr)
[0037] 斷言P對從來自左右兩個流Sp 的事件進行判斷,size為窗口大小,此處 滑動步長advance等于窗口大小size。
[0038] 下面示例開始:
[0039] 步驟1 :獲取用于關聯分析的查詢語句。
[0040] 例如:我們比較感興趣:在180秒內,訪問目的端口 25、80、135的次數落在區間 [15, 30]的IP用戶到底有多少。因為這可能是蠕蟲爆發的結果。
[0041] 輸入事件的模式的域包括:ID (事件標識)、SRC_IP (源地址IP)、SRC_Port (源地 址端口)、DST_IP (目的地址IP)、DST_Port (目的地址端口)、timestamp (事件時間戳)、 Info (其他信息)。
[0042] 步驟2 :把查詢語句按照上文定義的有狀態操作和無狀態操作分解成一串操作序 列。
[0043] 上文的查詢語句可由2個有狀態操作(聚合操作Al、A2)和3個無狀態操作(Map 操作M和Filters操作F1、F2)組成。具體各個操作定義如下:
[0044] Map操作M具體定義如下:
[0045] M{SRC_IP - SRC_IP,DST_Port - DST_Port,Time - Time} (I,0M)
[0046] Map操作M完成對輸入事件流I的元組的屬性域進行裁剪,丟棄后續運算不需要的 域,即在本示例中去掉ID、SRC_Port、Info等域。Map操作M的下一個操作是Filters操作 F1,操作M輸出流Om是Fl操作的輸入流。
[0047] Filters操作Fl具體定義如下:
[0048] Fl {DST_port = = 25 I I DST_Port = = 80 I I DST_Port = = 135} (0M,0F1)
[0049] Fl操作僅轉發端口等于25、80、135的事件元組。Filters操作Fl的下一個操作 是聚合操作Al, Fl的輸出流Ofi是Al操作的輸入流。
[0050] Aggregate操作Al具體定義如下:
[0051] Al {Time, 180, I, Access ^ count (), Group-by = (SRC_IP)} (0F1, 0A1)
[0052] 聚合操作Al統計180秒內每個IP地址訪問上面端口的次數(Access)。聚合操作 Al的下一個操作是Filters操作F2,聚合操作Al的輸出流Oai是F2操作的輸入流。
[0053] Filters操作F2具體定義如下:
[0054] F2 {Access ^ 15 A Access ^ 30} (0A1, 0F2)
[0055] F2操作用來過濾掉訪問次數小于15次和大于30次的事件元組,僅轉發訪問次數 處于[15, 30]區間的事件元組。Filters操作F2的下一個操作是聚合操作A2,操作F2的 輸出流〇F2是八2的輸入流。
[0056] Aggregate操作A2具體定義如下:
[0057] A2 {Time, 180, 1,SRCJJsers - count (),Group-by = (DST_IP)} (0F2, 0)
[0058] 聚合操作A2用來統計滿足以上條件的IP地址的數目(SRC_Users)。操作A2的輸 出流〇為最終計算結果。
[0059] 以上可完成步驟1假設的查詢語句全部功能。
[0060] 步驟3 :按照有狀態操作把操作序列(查詢語句)分解成子操作序列(子查詢語 句),即有多少個有狀態操作就劃分成多少個子操作序列。其中劃分的第一個子操作序列也 可以僅由無狀態的操作組成,且該子操作序列包含了第一個有狀態操作之前的所有無狀態 操作。包含有狀態操作的子操作序列其第一個操作一定是有狀態操作,該子操作也包含下 一個有狀態操作之前的所有無狀態操作。
[0061] 上文查詢語句經過分解操作可做簡單抽象,如下圖2所示:
[0062] 按照子查詢劃分策略,即上述的查詢語句可做如下劃分,具體如圖3所示:
[0063] 即第一個子查詢包含操作M和Fl,第二個子查詢包含操作Al和F2,第三個操作包 含A2。
[0064] 步驟4:依照步驟3查詢語句劃分成子查詢的數量,把集群按照該數目等分成相同 數量的子群,把查詢語句按照步驟3劃分成的子操作序列分布式部署到劃分好的每個子群 上,子群中的每個機器都部署相應的子操作。
[0065] 假設部署的集群的節點數量為90,參照上文劃分的子查詢語句數,集群劃分為3 個子集群,每個子集群30個節點。
[0066] 查詢語句最終部署效果如圖4 :
[0067] 該種查詢部署方式相對代價較小,并且很好的解決了查詢計算遇到的節點性能瓶 頸問題。
[0068] 下面給出子操作序列劃分原則和查詢部署方式的依據:
[0069] 對于并行計算的代價,定義2個參數表示并行的代價:扇出開銷,跳數開銷。扇出 開銷(f表示):在全系統范圍內,任何計算節點和其他計算節點建立聯通并維持通信管道 的代價。即計算節點和其他節點聯通的管道數目越高,花銷越大。跳數開銷(h表示):表 示在運行在不同節點的操作之間移動(轉移)一個元組花費的代價。在不同節點之間轉移 一個元組,每個元組在發送前是排序好的,在接收端則是亂序的。需要注意的是,給定一個 查詢,這種開銷影響所有運行在不同節點上的串行操作對。對于任何并行策略,定義如下代 價函數:
[0070] c (X) = a ? f (X) + ^ ? h (X)
[0071] 其中,a,旦G [0, 1]是兩個任意的權重。
[0072] 查詢計算分布式部署方法首先可以想到2種:
[0073] 1、全查詢分布部署(FQ表示):即整個查詢部署到每一個計算節點上,每個節點部 署同樣的查詢。假設集群有N個計算節點,則N個節點的每一個節點都需要和N-I個節點 保持通信,其扇出開銷是N的二次方(N2)。跳數開銷和有狀態操作數目成正比,這是因為元 組在每個有狀態操作前需要重新編配。對于在一個查詢中有s個有狀態操作和N個計算節 點,該分布式部署策略的代價是:
[0074]
【權利要求】
1. 一種基于并行分布式架構的復雜事件處理的方法,其特征在于: 把復雜事件處理技術對事件進行處理的操作分解成幾個元操作,并把元操作分為兩 類:無狀態操作和有狀態操作;所謂無狀態操作,即對后面的事件的處理操作和前面的事 件的處理操作無關聯;所謂有狀態操作,對后面事件的處理操作需要依據結合前面事件的 處理操作進行處理操作,通過滑動窗口實現;劃分的無狀態操作包括:映射、轉換操作,過 濾操作或聯合操作;有狀態操作包括:聚合操作或連接操作; 具體步驟如下: 步驟1:獲取用于關聯分析的查詢語句; 步驟2 :把查詢語句按照上文定義的有狀態操作和無狀態操作分解成一串操作序列; 步驟3 :按照有狀態操作把操作序列即查詢語句分解成子操作序列即子查詢語句,即 有多少個有狀態操作就劃分成多少個子操作序列;其中劃分的第一個子操作序列至少包括 無狀態的操作,或者僅僅由無狀態的操作組成,且該子操作序列包含了第一個有狀態操作 之前的所有無狀態操作;包含有狀態操作的子操作序列其第一個操作一定是有狀態操作, 該子操作也包含下一個有狀態操作之前的所有無狀態操作; 步驟4 :依照步驟3查詢語句劃分成子查詢的數量,把集群按照該數目等分成相同數量 的子群,把查詢語句按照步驟2劃分成的子操作序列分布式部署到劃分好的每個子群上, 子群中的每個機器都部署相應的子操作。
【文檔編號】H04L29/08GK104394149SQ201410697724
【公開日】2015年3月4日 申請日期:2014年11月26日 優先權日:2014年11月26日
【發明者】廉海明, 郭旭東, 謝小明, 胡佳, 胡大正, 郭江, 沈艷林, 石波, 沈德峰, 吳朝雄, 王紅艷 申請人:中國航天科工集團第二研究院七〇六所