一種基于thrift服務的HBase安全插件的制作方法【專利摘要】本發明公開了一種基于thrift服務的HBase安全插件,該插件提供了14個與HBase相關的安全HBase服務,4個與配置相關的安全HBase服務。HBase安全插件的基本配置信息存儲在本地文件中,服務啟動時加載,HBase連接信息文件存儲與HBase的連接相關的信息,主要包括Zookeeper集群的主機名列表、Zookeeper的端口信息。通過HBase連接信息,安全HBase服務可以與HBase服務進行通信并操作HBase中的表。HBase安全插件的安全策略信息以Json格式保存在Zookeeper中,使得系統具有強一致性、高可靠性。通過本發明能去私隱化,對私隱數據加密,而且部署簡單,運行高效。【專利說明】—種基于thrift服務的HBase安全插件【
技術領域:
】[0001]本發明涉及大數據【
技術領域:
】,尤其涉及一種基于thrift服務的HBase安全插件。【
背景技術:
】[0002]隨著云計算、移動互聯網、物聯網的崛起與發展,大數據的時代已經來臨。HDFS、MapReduce、HBase作為Hadoop的核心組成部分,在大數據計算與存儲領域處在無可替代的地位。[0003]HBase作為分布式數據庫,在Hadoop框架中具有不可替代的地位,具有優越的NoSQL分布式數據庫性能。但是,由于HBase更關注于性能方面的優化與處理,而忽略信息安全方面的隱患,使得存儲在HBase數據庫里面的數據存在數據泄露的風險。因此,對HBase進行信息安全方面的改進與優化,有其實用價值與經濟效益。[0004]HBase,HadoopDatabase,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,一個分布式的、面向列的開源數據庫,利用!Base技術可在廉價PCServer上搭建起大規模結構化存儲集群。[0005]Hbase的優點:[0006](I)列可以動態增加,并且列為空就不存儲數據,節省了存儲空間;[0007](2)自動切分數據,使得數據存儲自動具有水平擴展性;[0008](3)可以提供高并發讀寫操作的支持。[0009]Hbase的缺點:[0010](I)不能支持條件查詢,只支持按照RowKey來查詢。[0011](2)存在HMaster節點的單點故障問題,當HMaster巖機后,某些服務會停止,例如創建表、Region的Split操作等。RegionServer的讀寫在短時間內仍會繼續運行,不過只是短時間。[0012]thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node,js,Smalltalk等編程語言間無縫結合的、高效的服務。[0013]對比服務架構GS0AP、Thrift、REST,它們各自具有如下的特點:[0014]GSOAP:更加適合C/C++程序,重量級應用;[0015]thrift:適合Java程序,中量級應用;[0016]REST:適合腳本語言,輕量級應用。【
發明內容】[0017]本發明為了解決現有技術中的缺陷或不足,采用基于thrift服務的HBase安全插件,從而實現了安全的HBase分布式數據庫的增刪改查(CRUD)功能的目的。[0018]—種基于thrift服務的HBase安全插件,其提供了14個與HBase相關的安全HBase服務,4個與配置相關的安全HBase服務;HBase安全插件的基本配置信息存儲在文件中,服務啟動時加載,HBase連接信息文件存儲與HBase的連接相關的信息,包括Zookeeper集群的主機名列表、Zookeeper的端口信息,通過HBase連接信息,安全HBase服務能夠與HBase服務進行通信并操作HBase中的表;HBase安全插件的安全策略信息以Json格式存儲在Zookeeper中,然后在客戶端請求thrift服務的時候,根據需要自動讀取Zookeeper的安全策略信息,通過安全HBase服務提供的“查詢安全策略”與“重設安全策略”服務對Zooke印er中的安全策略信息進行讀取或者重設,使用Zookeeper存儲安全策略信息,使得系統具有強一致性、高可靠性。[0019]本發明技術方案帶來的有益效果:[0020]1、去私隱化[0021]去除私隱數據,禁止管理人員或者用戶查看私隱數據。[0022]2、私隱數據加密[0023]能夠重新對全部的HBase私隱數據進行加密,防止操作人員或者用戶使用HBase的其它接口查看到私隱數據。[0024]3、部署簡單,運行高效[0025]基于thrift服務實現,進行高層的抽象,部署簡單,運行高效。[0026]4、支持多語言[0027]利用thrift序列化技術,支持C++,PHP,Python等多種語言,適合其它異構系統在線訪問安全的HBase表數據。【專利附圖】【附圖說明】[0028]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。[0029]圖1是本發明中配置信息的讀寫邏輯圖。【具體實施方式】[0030]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。[0031]本發明為了解決現有技術中HBase分布式數據庫中私隱數據可以輕易查看,存在信息涉密的風險的缺點或不足,采用了一種基于thrift服務的HBase安全插件,從而實現了安全的HBase分布式數據庫的增刪改查(CRUD)功能的目的。[0032]HBase安全插件提供的thrift服務主要有:[0033](I)列出全部的表[0034](2)創建表[0035](3)刪除表[0036](4)插入列[0037](5)批量插入列[0038](6)刪除列[0039](7)查詢η行或者全部的數據[0040](8)根據RowKey查詢一行數據[0041](9)根據ColumnKey等于某ColumnValue查詢出數據[0042](10)根據多個ColumnKey等于ColumnValue的組合查詢出數據[0043](11)根據表名判斷表是否有效[0044](12)根據表名判斷表是否可用[0045](13)根據表名判斷表是否存在[0046](14)重建表進行私隱化[0047](15)查詢HBase連接信息[0048](16)重設HBase連接信息[0049](17)查詢策略[0050](18)重設策略[0051]thrift服務分為thrift服務器端與客戶端。在服務器端,啟動thrift服務器,提供thrift服務;在客戶端,提供一層接口把thrift服務端的信息映射到Java類對象中,然后提供給客戶處理業務邏輯。[0052]l、HBase安全插件的部署[0053]基于thrift服務的HBase安全插件,部署在任意一臺Hadoop節點上面,并通過Java命令啟動thrift服務。[0054]2、HBase安全插件的配置信息[0055]基于thrift服務的HBase安全插件一共提供了4個與配置相關的安全HBase服務。[0056](I)查詢HBase連接信息[0057](2)重設HBase連接信息[0058](3)查詢策略[0059](4)重設策略[0060]基于thrift服務的HBase安全插件的基本配置信息存儲在本地文件中,服務啟動時加載,HBase連接信息文件存儲與HBase的連接相關的信息,主要包括Zooke^er集群的主機名列表、Zookeeper的端口信息。通過HBase連接信息,安全HBase服務可以與HBase服務進行通信并操作HBase中的表。[0061]安全策略信息以Json格式存儲在Zookeeper中,然后在客戶端請求thrift服務的時候,根據需要自動讀取Zookeeper的安全策略信息。通過安全HBase服務提供的“查詢安全策略”與“重設安全策略”服務對Zookeeper中的安全策略信息進行讀取或者重設,使用Zookeeper存儲安全策略信息,使得系統具有強一致性、高可靠性。配置信息的讀寫邏輯圖如圖1所示。[0062]3、HBase安全插件的邏輯實現[0063]基于thrift服務的HBase安全插件一共提供了14個與HBase相關的安全HBase服務:[0064](I)列出全部的表[0065](2)創建表[0066](3)刪除表[0067](4)插入列[0068](5)批量插入列[0069](6)刪除列[0070](7)查詢η行或者全部的數據[0071](8)根據RowKey查詢一行數據[0072](9)根據ColumnKey等于某ColumnValue查詢出數據[0073](10)根據多個ColumnKey等于ColumnValue的組合查詢出數據[0074](11)根據表名判斷表是否有效[0075](12)根據表名判斷表是否可用[0076](13)根據表名判斷表是否存在[0077](14)重建表進行私隱化[0078]其中,查詢表的操作需要進行去私隱化處理,列的插入操作需要進行私隱信息加密處理,“重建表進行私隱化”操作,是對整個表進行重新私隱化。[0079]查詢表時去私隱化的處理流程如下:[0080](I)設privacyStrategyMap為全部的私隱策略Map,通過configure取得全部的策略,然后再取得私隱策略的Map;privacyStrategy是私隱策略,通過表名tableName在privacyStrategyMap中獲得;privacyColumns是私隱列的Map,通過privacyStrategy取得,columnMap是全部列的Map,privacyColumn是私隱列。[0081](2)判斷privacyColumns是否為空,若為空,則直接結束,跳轉到(9),否則,跳轉到⑵。[0082](3)初始化第一個循環的條件,設i為O,i為當前行的計數,η為數據行的總數。[0083](4)判斷i與η的大小:當i小于η時,跳到(5),否則,直接結束,跳轉到(9)。[0084](5)row為第i行的值,然后i增加I,columnMap通過row取得。[0085](6)初始化第二個循環的條件,設j為0,j為當前私隱列的計數,m為privacyColumns的大小。[0086](7)判斷j與m的大小:當i小于η時,跳到(8),否則,跳轉到(4)。[0087](8)privacyColumn取第j個privacyColumns,然后j增加I,columnMap把key為privacyColumn的value設為空,跳轉到(7)。[0088](9)結束。[0089]私隱信息加密處理的流程如下:[0090](I)設privacyStrategyMap為全部的私隱策略Map,通過configure取得全部的策略,然后再取得私隱策略Map;privacyStrategy是私隱策略,通過表名tableName在Map中獲得,privacyColumns是私隱列的Map,columnMap是全部列的Map,privacyColumn是私隱列。[0091](2)判斷privacyStrategy是否為空,若為空,則直接結束,跳轉到(15),否則,跳轉到(3)。[0092](3)初始化第一個循環的條件,設i為0,i為當前行的計數,η為數據行的總數。[0093](4)判斷i與η的大小:當i小于η時,跳到(5),否則,跳轉到(15)。[0094](5)row為第i行的值,然后i增加I,columnMap通過row取得。[0095](6)初始化第二個循環的條件,設j為0,j為當前私隱列的計數,m為privacyColumns的大小。[0096](7)判斷j與m的大小:當i小于η時,跳到(8),否則,跳轉到(9)。[0097](8)privacyColumn取第j個privacyColumns,columnMap把key為privacyColumn的value設為空,同時j增加I,跳轉到(7)。[0098](9)columnMap添加到rowList里面,跳轉到(4)。[0099](10)初始化第一個循環的條件,設i為0,η為數據行的總數。[0100](11)判斷i與η的大小:當i小于η時,跳到(12),否則,跳轉到(15)。[0101](12)row為第i行的值,然后i增加1,columnMap通過row取得。[0102](13)columnMap添加到rowList里面,跳轉到(11)。[0103](14)由action對象調用insertRowBatch函數進行批處理。[0104](15)結束。[0105]此外,針對本發明還可以考慮使用REST替換thrift技術,通過HttpAPI訪問,解除語言限制。[0106]以上對本發明實施例所提供的一種基于thrift服務的HBase安全插件進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在【具體實施方式】及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。【權利要求】1.一種基于thrift服務的HBase安全插件,其特征在于,該插件提供了14個與HBase相關的安全HBase服務,4個與配置相關的安全HBase服務;HBase安全插件的基本配置信息存儲在文件中,服務啟動時加載,HBase連接信息文件存儲與HBase的連接相關的信息,包括Zookeeper集群的主機名列表、Zookeeper的端口信息,通過HBase連接信息,安全HBase服務能夠與HBase服務進行通信并操作HBase中的表;HBase安全插件的安全策略信息以Json格式存儲在Zookeeper中,然后在客戶端請求thrift服務的時候,根據需要自動讀取Zook^per的安全策略信息,通過安全HBase服務提供的“查詢安全策略”與“重設安全策略”服務對Zookeeper中的安全策略信息進行讀取或者重設,使用Zookeeper存儲安全策略信息,使得系統具有強一致性、高可靠性。2.根據權利要求1所述的HBase安全插件,其特征在于,其部署在任意一臺Hadoop節點上面,并通過Java命令啟動thrift服務。3.根據權利要求1所述的HBase安全插件,其特征在于,thrift服務分為thrift服務器端與客戶端,在服務器端,啟動thrift服務器,提供thrift服務;在客戶端,提供一層接口把thrift服務端的信息映射到Java類對象中,然后提供給客戶處理業務邏輯。4.根據權利要求1所述的HBase安全插件,其特征在于,該插件提供的服務包括:列出全部的表、創建表、刪除表、插入列、批量插入列、刪除列、查詢n行或者全部的數據、根據RowKey查詢一行數據、根據ColumnKey等于某ColumnValue查詢出數據、根據多個ColumnKey等于ColumnValue的組合查詢出數據、根據表名判斷表是否有效、根據表名判斷表是否可用、根據表名判斷表是否存在、重建表進行私隱化、查詢HBase連接信息、重設HBase連接信息、查詢策略、重設策略。5.根據權利要求1或4所述的HBase安全插件,其特征在于,查詢表時去私隱化的處理流程如下:`s1:設privacyStrategyMap為全部的私隱策略Map,通過configure取得全部的策略,然后再取得私隱策略的Map;privacyStrategy是私隱策略,通過表名tableName在privacyStrategyMap中獲得;privacyColumns是私隱列的Map,通過privacyStrategy取得,columnMap是全部列的Map,privacyColumn是私隱列;s2:判斷privacyColumns是否為空,若為空,則直接結束,跳轉到s9,否則,跳轉到s2;s3:初始化第一個循環的條件,設i為0,i為當前行的計數,n為數據行的總數;s4:判斷i與n的大小:當i小于n時,跳到s5,否則,直接結束,跳轉到s9;s5:row為第i行的值,然后i增加I,columnMap通過row取得;s6:初始化第二個循環的條件,設j為0,j為當前私隱列的計數為privacyColumns的大小;s7:判斷j與m的大小:當i小于n時,跳到s8,否則,跳轉到s4;s8:privacyColumn取第j個privacyColumns,然后j增加1,columnMap把key為privacyColumn的value設為空,跳轉到s7;s9:結束。6.根據權利要求1或4所述的HBase安全插件,其特征在于,私隱信息加密處理的流程如下:I)設privacyStrategyMap為全部的私隱策略Map,通過configure取得全部的策略,然后再取得私隱策略Map;privacyStrategy是私隱策略,通過表名tableName在Map中獲得,privacyColumns是私隱列的Map,columnMap是全部列的Map,privacyColumn是私隱列;2)判斷privacyStrategy是否為空,若為空,則直接結束,跳轉到15),否則,跳轉到3);3)初始化第一個循環的條件,設i為0,i為當前行的計數,n為數據行的總數;4)判斷i與n的大小:當i小于n時,跳到5),否則,跳轉到15);5)row為第i行的值,然后i增加I,columnMap通過row取得;6)初始化第二個循環的條件,設j為0,j為當前私隱列的計數,m為privacyColumns的大小;7)判斷j與m的大小:當i小于n時,跳到8),否則,跳轉到9);8)privacyColumn取第j個privacyColumns,columnMap把key為privacyColumn的value設為空,同時j增加1,跳轉到7);9)columnMap添加到rowList里面,跳轉到4);10)初始化第一個循環的條件,設i為0,n為數據行的總數;11)判斷i與n的大小:當i小于n時,跳到12),否則,跳轉到15);12)row為第i行的值,然后i增加I,columnMap通過row取得;13)columnMap添加到`rowList里面,跳轉到11);14)由action對象調用insertRowBatch函數進行批處理;15)結束。7.根據權利要求1所述的HBase安全插件,其特征在于,本發明還能夠考慮使用REST替換thrift技術,通過HttpAPI訪問,解除語言限制。【文檔編號】G06F9/44GK103678650SQ201310716989【公開日】2014年3月26日申請日期:2013年12月23日優先權日:2013年12月23日【發明者】柯宗貴,楊育斌,趙必廈申請人:藍盾信息安全技術股份有限公司