本發(fā)明涉及數(shù)據(jù)安全領域,具體涉及一種大數(shù)據(jù)非結構化文件動態(tài)脫敏方法及系統(tǒng)。
背景技術:
在hadoop生態(tài)體系中,hdfs系統(tǒng)用來存儲非結構化數(shù)據(jù)。在大數(shù)據(jù)處理系統(tǒng)從海量數(shù)據(jù)中挖掘價值的同時,一些數(shù)據(jù)字典、人口信息等存檔數(shù)據(jù)作為數(shù)據(jù)價值挖掘的重要基礎,一經存儲就很少改動,hdfs文件是這類數(shù)據(jù)常見的存儲方式。
以基于權限的訪問控制,對用戶對數(shù)據(jù)資源的訪問做出是或否兩種鑒權結論,這種方式難以滿足用戶多樣化的數(shù)據(jù)使用需求。當訪問某類敏感數(shù)據(jù)的用戶僅需要敏感數(shù)據(jù)的部分內容,而不需要獲取安全級別較高的數(shù)據(jù)內容時,僅靠權限控制模型不能滿足這種需求。大數(shù)據(jù)動態(tài)脫敏技術作為權限管控技術的有效補充,稱為大數(shù)據(jù)應用領域的研究熱點。
靜態(tài)脫敏是大數(shù)據(jù)脫敏一種較為常見的解決方案。其實現(xiàn)思路是通過調用數(shù)據(jù)存儲系統(tǒng)提供的訪問api,從原始數(shù)據(jù)存儲庫中讀取數(shù)據(jù),然后將脫敏引擎處理后的數(shù)據(jù),寫入到一個新的存儲庫中,如圖1所示。
目前采用的hdfs靜態(tài)脫敏技術主要存在以下缺點:
(1)脫敏一經完成,脫敏數(shù)據(jù)即固定,如果需要應用其他脫敏規(guī)則,必須重新執(zhí)行脫敏過程。
(2)需要額外的存儲庫來存儲脫敏數(shù)據(jù)。
(3)不支持動態(tài)脫敏規(guī)則設置,脫敏規(guī)則的變化不能實時反映到脫敏數(shù)據(jù)上。
技術實現(xiàn)要素:
為解決上述技術問題,本發(fā)明提供了一種大數(shù)據(jù)非結構化文件動態(tài)脫敏方法,該方法包括以下步驟:
1)客戶端向中央調度器發(fā)送數(shù)據(jù)讀取指令;
2)中央調度器解析數(shù)據(jù)讀取指令,判斷是否需要脫敏,如果是,修改獲取到的文件數(shù)據(jù)塊的datanode地址為脫敏系統(tǒng)所在主機地址,跳轉到步驟3),如果不需要脫敏,則跳轉到步驟6);
3)將修改過的datanode地址返回客戶端,同時將未修改的datanode地址發(fā)給脫敏系統(tǒng);
4)客戶端向脫敏系統(tǒng)所在主機請求數(shù)據(jù)信息;
5)脫敏系統(tǒng)將數(shù)據(jù)脫敏后返回給客戶端,跳轉到步驟7);
6)將獲取的真實文件數(shù)據(jù)塊的datanode地址返回客戶端,客戶端直接從datanode獲取數(shù)據(jù);
7)結束。
根據(jù)本發(fā)明的實施例,優(yōu)選的,所述步驟2)中,所述中央調度器解析所述數(shù)據(jù)讀取指令,形成三元組:用戶、操作、資源。
根據(jù)本發(fā)明的實施例,優(yōu)選的,所述步驟2)中,所述中央調度器根據(jù)預設規(guī)則對所述三元組進行比對,判斷是否需要脫敏。
根據(jù)本發(fā)明的實施例,優(yōu)選的,所述步驟5)中,所述脫敏系統(tǒng)通過從中央調度器轉發(fā)來的真實的datanode地址獲取數(shù)據(jù)信息,將數(shù)據(jù)脫敏后返回給客戶端。
為解決上述技術問題,本發(fā)明提供了一種大數(shù)據(jù)非結構化文件動態(tài)脫敏系統(tǒng),該系統(tǒng)包括:客戶端、中央調度器、脫敏系統(tǒng)以及hdfs;
所述客戶端向中央調度器發(fā)送數(shù)據(jù)讀取指令,并根據(jù)從所述中央調度器返回的datanode地址從脫敏系統(tǒng)所在主機或者hdfs獲取數(shù)據(jù);
所述中央調度器解析數(shù)據(jù)讀取指令,判斷是否需要脫敏,如果是,修改獲取到的文件數(shù)據(jù)塊的datanode地址為脫敏系統(tǒng)所在主機地址,將修改過的datanode地址返回客戶端,同時將未修改的datanode地址發(fā)給脫敏系統(tǒng),如果不需要脫敏,則將獲取的真實文件數(shù)據(jù)塊的datanode地址返回客戶端;
所述脫敏系統(tǒng)用于將從datanode地址獲取的數(shù)據(jù)脫敏后返回給客戶端。
根據(jù)本發(fā)明的實施例,優(yōu)選的,根據(jù)權利要求5所述的系統(tǒng),所述hdfs由namenode服務器和datanode服務器構成,其中namenode是主節(jié)點,存儲文件元數(shù)據(jù)信息,可以是一個或多個,所述datanode是從節(jié)點,存儲實際文件塊。
根據(jù)本發(fā)明的實施例,優(yōu)選的,還包括一個應用服務器,所述應用服務器連接所述客戶端,所述中央調度服務器和所述脫敏服務器為雙網卡網關,所述中央調度服務器和所述脫敏服務器分別通過一網卡連接所述應用服務器,同時通過另一網卡與所述namenode服務器連接。
根據(jù)本發(fā)明的實施例,優(yōu)選的,所述中央調度器解析數(shù)據(jù)讀取指令,形成三元組:用戶、操作、資源,并根據(jù)預設規(guī)則對所述三元組進行比對,判斷是否需要脫敏。
為解決上述技術問題,本發(fā)明提供了一種數(shù)據(jù)脫敏系統(tǒng),該系統(tǒng)包括:
地址接收模塊,接收中央調度器解析數(shù)據(jù)讀取指令獲得的文件數(shù)據(jù)塊的datanode地址;
數(shù)據(jù)獲取模塊,根據(jù)文件數(shù)據(jù)塊的datanode地址,獲取數(shù)據(jù);
數(shù)據(jù)脫敏模塊,對獲取的數(shù)據(jù)進行脫敏處理;
數(shù)據(jù)發(fā)送模塊,根據(jù)外部數(shù)據(jù)讀取請求,將經過脫敏處理的數(shù)據(jù)發(fā)送給外部設備。
為解決上述技術問題,本發(fā)明提供了一種計算機存儲介質,該計算機存儲介質存儲有計算機指令,當執(zhí)行所述計算機指令時,執(zhí)行所述權利要求1-4之一的方法。
通過本發(fā)明的技術方案取得了以下技術效果:
1、實現(xiàn)簡單,節(jié)約成本
只需要修改少量hadoop源代碼即可實現(xiàn)hdfs訪問指令截斷、脫敏路由和數(shù)據(jù)脫敏功能,技術門檻低,工作量少,能夠有效節(jié)約產品開發(fā)成本。
2、透明部署,對已有應用無影響
產品以網關形式部署,支持軟件部署和軟硬一體化部署,不影響已有應用的運行邏輯。
附圖說明
圖1是現(xiàn)有技術防止截屏泄密流程圖
圖2是本發(fā)明生成用戶加密水印圖像方法流程圖
圖3是本發(fā)明的截屏控制方法流程圖
具體實施方式
<名詞解釋>
hadoop:是一個能夠對大量數(shù)據(jù)進行分布式處理的軟件框架,包括hdfs、yarn、mapreduce三部分,其中hdfs是一個分布式文件系統(tǒng),yran是一個分布式資源調度系統(tǒng)、mapreduce是一個分布式編程框架,由map和reduce兩個原子操作構成。
hdfs:采用主從架構,由namenode和datanode兩部分構成。其中namenode是主節(jié)點,存儲文件元數(shù)據(jù)信息,可以是一個或多個;datanode是從節(jié)點,存儲實際文件塊,數(shù)量可達上千個。
<本發(fā)明的系統(tǒng)構成>
如圖2,本發(fā)明該系統(tǒng)包括:客戶端、中央調度器、脫敏系統(tǒng)以及hadoop,其中hadoop包括hdfs;所述客戶端向中央調度器發(fā)送數(shù)據(jù)讀取指令,并根據(jù)從所述中央調度器返回的datanode地址從脫敏系統(tǒng)所在主機或者hdfs獲取數(shù)據(jù)。所述hdfs由namenode服務器和datanode服務器構成,其中namenode服務器是主節(jié)點,存儲文件元數(shù)據(jù)信息,可以是一個或多個,所述datanode服務器是從節(jié)點,存儲實際文件塊,數(shù)量可達上千個。
所述中央調度器解析數(shù)據(jù)讀取指令,從namenode服務器獲得文件數(shù)據(jù)塊的datanode地址,判斷讀取的數(shù)據(jù)是否需要脫敏,如果是,修改獲取到的文件數(shù)據(jù)塊的datanode地址為脫敏系統(tǒng)所在主機地址,將修改過的datanode地址返回客戶端,同時將未修改的datanode地址發(fā)給脫敏系統(tǒng),如果不需要脫敏,則將獲取的真實文件數(shù)據(jù)塊的datanode地址返回客戶端;
所述脫敏系統(tǒng)用于將從datanode地址獲取的數(shù)據(jù)脫敏后返回給客戶端。
該系統(tǒng)還包括一個應用服務器,所述應用服務器連接所述客戶端,所述中央調度服務器和所述脫敏服務器為雙網卡網關,所述中央調度服務器和所述脫敏服務器分別通過一網卡連接所述應用服務器,同時通過另一網卡與所述namenode服務器連接。
如圖3所示,調度服務器和脫敏服務器物理上都作為網關,分別設置兩個網卡,一個連接應用服務器,一個連接namenode服務器,實現(xiàn)一個反向代理的功能,其中央調度服務器負責截獲用戶讀取數(shù)據(jù)指令,并按照預設的規(guī)則判斷此次訪問行為相關的數(shù)據(jù)是否需要脫敏處理,脫敏服務器負責按照中央調度器的指令從datanode讀取數(shù)據(jù),完成脫敏動作,并將脫敏后的數(shù)據(jù)返回應用服務器。
本發(fā)明還公開了一種數(shù)據(jù)脫敏系統(tǒng),該系統(tǒng)包括:
地址接收模塊,接收中央調度器解析數(shù)據(jù)讀取指令獲得的文件數(shù)據(jù)塊的datanode地址。
數(shù)據(jù)獲取模塊,根據(jù)文件數(shù)據(jù)塊的datanode地址,獲取數(shù)據(jù)。
數(shù)據(jù)脫敏模塊,對獲取的數(shù)據(jù)進行脫敏處理。
數(shù)據(jù)發(fā)送模塊,根據(jù)外部數(shù)據(jù)讀取請求,將經過脫敏處理的數(shù)據(jù)發(fā)送給外部設備。
<本發(fā)明實施流程>
本發(fā)明提供一種在客戶端使用javaapi訪問hdfs文件時,對文件內容實現(xiàn)實時動態(tài)脫敏的方法。
如圖2所示,客戶端使用javaapi訪問hdfs文件時需要與大數(shù)據(jù)中心進行兩次數(shù)據(jù)交互,客戶端首先向namenode節(jié)點請求目錄信息,獲得存儲文件數(shù)據(jù)塊的datanode地址,然后與對應datanode建立連接獲取數(shù)據(jù)信息。
1)在客戶端與hdfs之間設置一個反向代理,接收客戶端請求,并將客戶端請求轉發(fā)到hdfs。在反向代理中實現(xiàn)一個中央調度器,用于識別用戶請求的數(shù)據(jù)是否需要脫敏。數(shù)據(jù)動態(tài)脫敏的步驟如下:
2)客戶端向中央調度器發(fā)送數(shù)據(jù)讀取指令;
3)中央調度器解析用戶請求指令,形成(用戶,操作,資源)三元組。
4)根據(jù)預設規(guī)則和三元組比對結果,如果需要脫敏,中央調度器修改獲取到的文件數(shù)據(jù)塊的datanode地址為脫敏系統(tǒng)所在主機地址。
5)中央調度器將修改過的信息返回客戶端,同時將未修改的文件數(shù)據(jù)塊的datanode地址發(fā)給脫敏系統(tǒng)。
6)客戶端獲取數(shù)據(jù)塊地址后向脫敏系統(tǒng)所在主機請求數(shù)據(jù)信息。
7)脫敏系統(tǒng)通過從中央調度器轉發(fā)來的真實數(shù)據(jù)塊地址獲取數(shù)據(jù)信息,將數(shù)據(jù)脫敏后返回給客戶端。
8)如果不需要脫敏中央調度器直接將獲取的真實數(shù)據(jù)目錄返回客戶端,客戶端會直接從datanode獲取數(shù)據(jù)。
<本發(fā)明的具體實現(xiàn)過程>
參考圖2-3,本發(fā)明的具體實現(xiàn)過程如下:
3.2.1中央調度服務器
1)新建一個maven工程,并添加hadoop-hdfs和hadoop-common依賴。
2)新建org.apache.hadoop.hdfs.server.namenode包。
3)拷貝hadoop源文件中fsnamesystem.java文件到新建包中。
4)在fsnamesystem.java文中,修改getblocklocations函數(shù),添加自定義脫敏路由規(guī)則。新建hdfs客戶端并訪問namenode服務器獲取保存在一個locatedblocks對象中的文件塊元數(shù)據(jù)信息,如果數(shù)據(jù)需要脫敏,則將block所在datanode服務器ip地址都更改為脫敏服務器ip地址,否則直接將locatedblocks對象返回。
5)拷貝hadoop源文件中namenode.java文件到新建包中。
6)在namenode.java中,只啟動clientrpcserver,不啟動servicerpcsever和httpserver服務。
7)maven工程打包,并部署在中央調度服務器上。
8)在中央調度服務器上啟動自定義的namenode進程。
9)修改應用服務器上的hadoop配置文件,將namenode地址改為hdfs防火墻所在地址。
通過上述步驟,用戶通過應用服務器請求hdfs文件時,訪問指令會首先經過中央調度服務器,然后經過自定義脫敏路由后,決定是否更改數(shù)據(jù)塊所在服務器地址,從而達到脫敏調度的效果。
3.2.1脫敏服務器
1)新建一個maven工程,并添加hadoop-hdfs和hadoop-common依賴。
2)新建org.apache.hadoop.hdfs.server.datanode包。
3)拷貝hadoop源文件中datanode.java和dataxceiver.java文件到新建包中。
4)在datanode.java只啟動數(shù)據(jù)訪問接收服務,不啟動數(shù)據(jù)塊上報等其他服務
5)在dataxceiver.java文件中,新建數(shù)據(jù)讀取客戶端,從中央調度器發(fā)送的消息隊列中取出存儲數(shù)據(jù)塊的真實datanode地址,并讀取數(shù)據(jù)。
6)在dataxceiver.java中,將取到的數(shù)據(jù)執(zhí)行脫敏,并返回客戶端。
7)maven工程打包,并部署在脫敏服務器上。
通過本發(fā)明的技術方案,可以取得以下技術效果:
1、實現(xiàn)簡單,節(jié)約成本
只需要修改少量hadoop源代碼即可實現(xiàn)hdfs訪問指令截斷、脫敏路由和數(shù)據(jù)脫敏功能,技術門檻低,工作量少,能夠有效節(jié)約產品開發(fā)成本。
2、透明部署,對已有應用無影響
產品以網關形式部署,支持軟件部署和軟硬一體化部署,不影響已有應用的運行邏輯。
以上所述僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換以及改進等,均應保護在本發(fā)明的保護范圍之內。