999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大數據環境下Hive訪問控制技術研究

2018-02-12 12:24:56陳嬌朱焱丁國富
軟件導刊 2018年12期

陳嬌 朱焱 丁國富

摘要:為增強Hive數據倉庫平臺的數據安全性,從大數據安全下的訪問控制問題著手,利用HPL/SQL工具設計實現批量授權方案,增強其授權操作的便捷性。根據Hive的安全體系結構,探索其在訪問控制方面的漏洞,深入源碼改進其實現機制。通過改進Hive用戶識別機制,使Hive能從客戶端與命令行端正確識別當前用戶,增強了安全性,為下一步授權工作打下了基礎。批量授權方案能正確、快速、自動地為大批量用戶授權,操作便利。

關鍵詞:大數據環境;訪問控制;Hive數據倉庫;Hive數據安全

Research and Verification of Hive Data Warehouse Access

Control Technology in Big Data Environment

CHEN Jiao?ZHU Yan?DING Guo?fu?2

(1.Institute of Information Science and technology, Southwest Jiaotong University;

2.Institute of Advanced Design and Manufacturing, School of Mechanical

Engineering, Southwest Jiaotong University, Chengdu 611756, China)

Abstract:In order to enhance the data security of the Hive data warehouse platform, the HPL/SQL tool is designed from the access control problem under the big data security to realize the batch authorization scheme and enhance the convenience of its authorization operation. According to Hive's security architecture, the vulnerability in access control is explored, and the source code to improve its implementation mechanismis is deepened . By improving the Hive user identification mechanism, Hive can correctly identify the current user from the client and the command line, enhances security, and lays the foundation for the next authorization work. The batch authorization scheme can authorize large?volume users correctly, quickly, and automatically, and it is easy to operate.

Key Words:big data environment; access control; hive data warehouse; Hive data security

0?引言

大數據時代數據成為一種資產[1]。Hadoop作為大數據存儲和處理的分布式框架,廣泛應用于教育、社交媒體等領域。Hive是基于Hadoop的NewSQL軟件,適用于開發管理和分析大數據的數據倉庫應用。Hive數據倉庫可以管理數據量巨大的結構化、半結構化數據[2],通過切片、切塊、鉆下、卷上等技術分析大數據,獲得模式和規律,為政務、商務、金融、教育等提供決策支持。但Hive數據倉庫要阻止非法用戶的惡意訪問,保證數據管理和分析的可靠性。

目前大數據安全研究領域主要在大數據隱私保護和大數據訪問控制等方面,文獻[3]列出了大數據安全所面臨的十大挑戰。馮登國等 [4]提出大數據安全面臨的挑戰主要體現在大數據中的用戶隱私保護、大數據的可信性、如何實現大數據訪問控制幾個方面。

云計算環境中有許多不同類型的訪問控制管理系統,如自主訪問控制[5](DAC)、強制訪問控制[6](MAC)、基于角色的訪問控制[7](RBAC)、基于屬性的訪問控制[8](ABAC)以及基于策略的訪問控制[9](PBAC),它們大多是基于身份驗證的。例如DAC、MAC、RBAC,根據一組訪問控制列表規則驗證請求者身份,一旦請求者身份通過認證或請求者被授權,則允許訪問相關數據。在ABAC中,除了一系列請求者的相關屬性,還需要一些其它屬性驗證請求者身份[10]。基于策略的PCAL不考慮身份,而是考慮在一組已定義的策略和規則中,訪問請求是否被驗證。Hadoop增量安全模型[11]實現了基于屬性的訪問控制(ABAC)或基于角色的訪問控制(RBAC)。

Colombo等 [12]第一次將ABAC集成在NoSQL數據庫(MongoDB)中。針對Hadoop的數據存儲安全,Rong等 [13]提出了兩種訪問控制方案,第一種結合BigTorrent協議和數據加密,該方案保證只有在請求者擁有解密訪問令牌的密鑰情況下才能訪問,但數據擁有者對誰下載了這些訪問令牌文件并且訪問這些塊卻一無所知。針對這個問題,提出了第二種訪問控制方案,并且保證數據擁有者可以控制和審計對數據的訪問。

USBKey[14]是一種常用的身份認證方式,但在大數據平臺上不可能對每位用戶提供一個 USBKey[15]。Sun 等[16]提出了云計算環境中基于同態簽名的身份認證機制,Wang 等[17]提出了基于公共第三方審計和數據擁有者授權管理的云安全存儲服務。

針對Hadoop的MapReduce計算框架的安全問題,Indrajit Roy等 [18]提出了一套分布式計算系統Airavat,其使用DIFC(decentralized information flow control)保證系統免受未經授權的訪問,并結合SELinux的安全特性,防止資源泄露[19]。本文從大數據安全訪問控制著手,增強Hive平臺的數據安全性并實現半自動化授權,以提高訪問授權時的方便性。

1?Hive平臺架構

圖1顯示Hive的平臺架構以及其與Hadoop的交互方式。Hive對外提供3個接口:命令行(CLI)、網頁端用戶接口(WUI)、客戶端(Client)。CLI是Hive的命令行模式,WUI(Web User Inteface)是一個簡單網頁界面,通過該界面可對Hive進行簡單操作,JDBC/ODBC是Hive客戶端,可通過ThriftServer組件由編程方式訪問Hive。

2?Hive安全體系

與傳統的RDBMS類似,Hive的安全體系也分為三級架構,按其安全級別由低到高分別為數據倉庫服務器級、數據倉庫級、語句與對象級,如圖2所示。若要訪問數據倉庫服務器,必須先成為Hive的登錄用戶,登錄用戶可以分配到某個角色或用戶組。要使用某個數據倉庫的某些信息,必須是該數據倉庫的擁有者或超級管理員;如要訪問某數據倉庫下的某個對象,或執行某個命令語句,還必須為該用戶授予所要操作對象或命令的權限。

2.1?Hive登錄用戶

從圖1可以看出,登錄Hive有3種不同的方式,登錄方式不同,Hive對登錄用戶的管理也有所不同,下面以CLI命令端和JDBC客戶端為例詳細討論。

在CLI命令行端中,Hive登錄用戶即是操作系統登錄用戶,Hive平臺對當前系統用戶進行權限認證。

在由JDBC訪問Hive時,需要通過Thrift Server協議連接。默認的Hive配置沒有開啟客戶端用戶身份驗證,任何用戶都可通過JDBC連接至Hive并作為超級用戶操縱Hive中的數據,這是不合理的。為了增強Hive平臺的安全性,需要對通過Thrift Server協議連接,對Hive用戶身份進行驗證。在Hive配置文件中,有幾個HiveServer2用戶身份驗證的可選項供用戶選擇,如NOSASL、NONE、LDAP、KERBEROS、PAM、CUSTOM。CUSTOM是由用戶通過編程自定義的身份驗證機制,可通過PasswdAuthenticationProvider接口實現。

本文采用CUSTOM驗證機制,當用戶名和密碼都通過驗證,則通過hiveServer2將用戶與Hive連接。用戶名及密碼經過加密算法后預存在本地文件中,從而保障Hive安全體系中“Hive登錄用戶級別”的安全性。

2.2?數據倉庫對象授權

若用戶需要訪問數據倉庫中數據對象,例如查詢表中內容,除了需要成功登錄Hive平臺外,還需要通過GRANT授權語句獲得操作該對象的權限。數據對象包括表、視圖。權限包括SELECT(查詢)、INSERT(添加)、UPDATE(修改)、DELETE(刪除)、ALL(全部)5種權限。例如GRANT SELECT ON tableName to USER|ROLE userName/roleName,可使某用戶或角色具有查詢表的權限。類似的,可通過GRANT授權語句對用戶授予增、刪、改權限。由于數據倉庫對象只包括表、視圖,不包括數據倉庫本身,所以不能對數據倉庫進行授權操作。

2.3?數據庫語句授權

在Hive中,限定某些操作只能由具有特定角色的用戶使用。在Hive中有兩個特殊角色——public和admin。所有用戶都屬于角色public,給public角色賦權就相當于給所有用戶賦權。屬于角色admin的用戶稱為超級管理員,即使沒有顯式地賦予權限,也具有對數據倉庫的全部權限。另外,只有擁有admin角色的用戶才擁有執行某些特定語句的權限,例如create role、drop role、show roles等。在使用這些特權時,必須先將角色切換到admin的角色(set role admin),否則即使某個擁有admin的角色也無法進行特權操作。可通過修改Hive配置文件中的hive.users.in.admin.role屬性設置得到角色admin,也可讓具有admin角色的用戶授予。

3?Hive當前用戶識別

不同用戶擁有不同角色,不同角色擁有不同的操作權限,這是M∶N的對應關系。通過對用戶角色權限的控制達到控制用戶操作的目的。

在Hive中對當前用戶的識別問題需要特別處理。連接Hive主要有兩種方式:①命令行方式,直接在命令行下執行操作;②客戶端方式,通過Java等編程語言連接Hive。由于客戶端方式連接Hive必須經過ThriftServer(hiveServer)協議,導致通過命令行方式和客戶端方式連接Hive后有區別。在通過客戶端連接Hive時,Hive不能正確識別當前用戶,即使是具有不同權限的用戶連接Hive后,能夠執行的操作也并無差別,造成安全性降低,為此本文提出融合式用戶識別技術。

默認的Hive認證機制使用HadoopDefaultAuthenticator(以下簡稱HDA)獲取當前用戶名,并對其進行權限驗證。但是經過分析Hive源碼發現,HDA獲取的當前用戶是操作系統當前的登錄用戶,并不是實際意義上的執行HQL(Hive 中類SQL的查詢語言)的用戶。例如用戶user1通過JDBC連接Hive后,對Hive數據倉庫進行數據管理和分析操作,理論上Hive應當識別當前用戶為user1,然后對user1進行權限認證,判斷其是否具有相關權限,但實際上HDA捕獲到的當前用戶依然為OS登錄用戶。不管user1具有什么權限,是何身份,其具有的權限都是當前OS登錄用戶所具有的權限。在這種情況下,為不同用戶分配不同角色變得無效。

為解決上述問題, Hive提供了另一種名為SessionStateAuthenticator(以下簡稱SSA)的驗證機制。經過分析源代碼以及實驗,發現使用SSA可以正確識別通過客戶端連接的Hive用戶,但是對命令行方式下的用戶識別失效,全都返回null。

為了對客戶端用戶以及命令行端用戶進行統一管理,通過比較和分析,融合這兩種認證機制實現自定義的Authenticator(MyAuthenticator),使其不僅可以正確識別通過客戶端連接的用戶,也能正確識別命令行的當前用戶。

HDA和SSA實際上都是對HiveAuthenticationProvider接口的具體實現。在HDA中重寫了父類中的setConf方法,在該方法中實現了對用戶名的初始化,追蹤可得知獲取的用戶名即是系統當前登錄用戶,故在使用HDA機制時不能正確獲取客戶端連接的用戶。而在SSA中,重寫了其父類的setSessionState方法,該方法實現了設置當前的sessionState,在sessionState中包含了當前環境中的一系列參數。在重寫父類getUserName(獲取當前用戶名)的方法中,返回的是當前sessionState中的用戶,故而在使用SSA中,不能獲取當前系統登錄用戶。通過對比這兩種實現機制,重新提出HiveAuthenticationProvider接口,并重寫setConf、setSessionState和getUserName這幾個關鍵方法。在獲取用戶名時,既獲取了系統當前登錄用戶,也獲取通過客戶端連接的用戶,進一步完善了Hive的安全機制。表1列出本文提出的MyAuthenticator與Hive已有的Authenticator的比較。

4?Hive批量授權

在實際應用中,授權工作復雜、耗時。由于一個用戶可能同時具有多個角色,具體應用中用戶數目也比較大,如果對每個用戶進行手工授權/收權,無疑會耗時耗力。而Hive的組授權是基于操作系統(linux)的,只有在linux中真實存在的用戶以及真實存在的組才能對其進行組授權,這一機制無疑大大降低了Hive授權的靈活性。實際上并不需要“真實”存在的用戶,用戶僅僅是一系列角色的承載體。比如通過客戶端連接Hive用戶,實際上并不一定是系統登錄用戶。如何對這類“虛擬”用戶快速、便捷地授權,是需要考慮的另一個重要問題。

在Hive中,可以通過hive?f ‘文件名方式調用存儲在以sql為后綴名的文件代碼,并在調用時為文件中的語句傳遞參數。使用此種方式為用戶進行單次授權,只需將用戶名及對應的角色傳遞給文件中的授權語句即可。若要實現批量授權則需要不斷調用hive?f,并為其傳遞參數,直到授權完成為止,但在Hive中沒有類似的循環功能。

Hive2.0版本之后,Hive中集成了一個HPL/SQL的開源工具[20]。該工具不僅支持Hive,還支持在SparkSQL或其它NoSQL中實現管理和訪問控制機制,甚至支持RDBMS中類似Oracle PL/SQL的功能,極大方便了用戶使用。以前Hive中較難實現的功能,現可通過HPL/SQL方便地實現,比如自定義變量、基于一個結果集的游標、循環等。本文利用HPL/SQL實現對用戶的批量授權。

借鑒關系型數據庫中的表結構,設置用戶表,包含屬性用戶ID和用戶名。角色表可列出所有存在的角色名,每個角色有一個唯一的ID值(相當于關系型數據庫中的主鍵)。最后,設置一個用戶-角色表,存儲用戶與角色之間的對應關系。

基于表2、表3、表4所示的表結構,利用HPLSQL實現批量賦權。HPLSQL中提供了類似關系型數據庫中的游標(cursor),用它可記錄并遍歷一個結果集。通過查詢用戶-權限表中的用戶名以及角色名,將結果集保存在游標中。然后遍歷游標中的數據,將數據作為參數傳遞給Hive授權語句并調用授權語句,便可實現批量賦權。

核心代碼段1定義了一個游標,其中存儲了從用戶-角色表中查詢出的用戶名和其對應的角色名,步驟③從游標的下一行中取出數據并存儲在名為uname和rname的變量中,步驟⑤將變量uname和rname中存儲的用戶名與角色名傳遞給 ‘hivehqlfilePath.sql文件中的HQL代碼,并調用相關語句執行授權操作。核心代碼段2表示在文件‘hivehqlPath.sql中存儲的代碼。首先將當前用戶所屬角色切換至admin,然后接收從核心代碼段1步驟⑤中傳遞的數據,調用授權語句。最后調用hplsql -f test.sql,執行核心代碼段1所示代碼,實現批量賦權。

核心代碼段(1)(test.sql):

①declare cur CURSOR FOR ‘select uname rolename from…where…;

②declare cur;

③fetch cur into uname, rname;

④while SQLCODE=0 THEN

⑤hive-hiveconf userName=uname-hiveconf roleName=rname-f‘hivehqlfilePah.sql

⑥FETCH cur INTO uname, rname;

⑦end while;

⑧close cur;

核心代碼段(2)(hivehqlPath.sql):

①set role admin;

②grant${hiveconf:roleName} to user${hiveconf:userName};

5?結語

本文從大數據安全角度出發,在Hive數據倉庫平臺上從身份認證及訪問控制兩方面進行相關實驗,闡述了存在的問題及解決辦法。將Hive安全體系分成三級結構并逐層分析,結合源碼對Hive安全體系機制加以改進。實驗開始時因為沒有意識到Hive針對不同連接方式的用戶采取的驗證機制不同,所以走了一些彎路。通過閱讀資料以及對比實驗才發現問題,由此創造性地對Hive機制作了改進。當然,針對不同需求用戶可通過分析源碼實現自定義機制。另外,由于Hive本身并不支持傳統數據中的存儲過程,故本文結合HPL/SQL工具,通過找出兩者的結合點,編程實現批量授權,提高了Hive數據平臺的安全性以及授權操作的方便性,用戶也可使用HPL/SQL實現所需功能。

參考文獻:

[1]?馮勤群.大數據背景下數據庫安全保障體系研究[J].軟件導刊,2013,12(1):156?158.

[2]?CAPRIOLO E, WAMPLER D,RUTBERGLEN. HIVE編程指南[M]. 曹坤,譯.北京:人民郵電出版社, 2013.

[3]?CLOUDE SECURITY ALLIENCE.Top ten big data security and privacy challenges[EB/OL].www.cloudsecurityalliance.org, 2012.

[4]?馮登國,張敏,李昊.大數據安全與隱私保護[J].計算機學報,2014,37(1):246?258.

[5]?ASSOCIATION N C S. A guide to understanding discretionary access control in trusted systems[EB/OL]. https:∥link.springer.com/chapter/10.1007%2F11734628_17, 1987.

[6]?OSBORN S, SANDHU R, MUNAWER Q. Configuring role?based access control to enforce mandatory and discretionary access control policies[M]. ACM, 2000.

[7]?FERRAIOLO D F, SANDHU R, GAVRILA S, et al. Proposed NIST standard for role?based access control[M]. TISSEC, 2001.

[8]?HU V, FERRAIOLO D, KUHN R, et al. Guide to attribute based access control (ABAC) definition and considerations[M]. ITLB, 2013.

[9]?DIXIT S S. Method for policy based and granular approach to role based access control, US 20100031312 A1[P]. 2010.

[10]?HABIBA M, ISLAM M R, ALI A B M S. Access control management for cloud[C].IEEE International Conference on Trust, Security and Privacy in Computing and Communications. IEEE, 2013:485?492.

[11]?VINOD SHARMA , PROF?N?K?JOSHI. The evolution of big data security through hadoop incremental security model[J]. International Journal of Innovative Research in Science. Engineering and Technology,2015,4(5):158?164.

[12]?COLOMBO P, FERRARI E. Towards a unifying attribute based access control approach for NOSQL datastores[C]. IEEE, International Conference on Data Engineering, 2017.

[13]?RONG C, QUAN Z, CHAKRAVORTY A. On access control schemes for Hadoop data storage[C]. International Conference on Cloud Computing and Big Data. IEEE, 2014:641?645.

[14]?曹喆,王以剛.基于USBKey的身份認證機制的研究與實現[J]. 計算機應用與軟件,2011,28(2):284?286.

[15]?夏云.非結構化大數據存儲系統安全性增強技術研究[D].成都:電子科技大學,2015.

[16]?WANG Z, SUN G, CHEN D. A new definition of homomorphic signature for identity management in mobile cloud computing[J]. Journal of Computer & System Sciences, 2014, 80(3):546?553.

[17]?WANG C, REN K, LOU W, et al. Toward publicly auditable secure cloud data storage services[J]. Network IEEE, 2010, 24(4):19?24.

[18]?ROY I, SETTY S T V, KILZER A, et al. Airavat:security and privacy for MapReduce[M].Usenix Symposium on Networked Systems Design and Implementation, NSDI 2010(4):28?30.

[19]?陳文捷,蔡立志.大數據安全及其評估[J].計算機應用與軟件,2016,33(4):34?38.

[20]?Hive擴展功能(六)—HPL/SQL(可使用存儲過程)[EB/OL].http:∥www.hplsql.org/configuration.

主站蜘蛛池模板: 在线a网站| 亚洲精品国产综合99| 日本三区视频| 国产精品网曝门免费视频| 色AV色 综合网站| 色吊丝av中文字幕| 少妇极品熟妇人妻专区视频| 国产精品九九视频| 日韩123欧美字幕| 色网在线视频| 尤物精品国产福利网站| 蜜臀AV在线播放| 亚洲福利一区二区三区| 亚洲第一区欧美国产综合 | 国产成人精品日本亚洲77美色| 亚洲综合色婷婷中文字幕| 天天干伊人| 久久伊人色| 欧美人人干| 黄色成年视频| 欧美精品一区在线看| 久久这里只精品国产99热8| 欧美国产综合视频| 蜜桃臀无码内射一区二区三区 | 国产v精品成人免费视频71pao| 日韩在线中文| 国产福利影院在线观看| 青青草国产一区二区三区| 国产欧美日韩综合在线第一| 国产精品亚洲精品爽爽| 国产免费好大好硬视频| 亚洲高清资源| 男女性色大片免费网站| 四虎在线观看视频高清无码 | 国产午夜精品鲁丝片| 毛片a级毛片免费观看免下载| 欧美狠狠干| 国产欧美日韩精品综合在线| 日韩在线网址| 在线观看精品自拍视频| 亚洲无线国产观看| 伊人精品视频免费在线| 福利小视频在线播放| 日韩大乳视频中文字幕| 日韩美一区二区| 色综合热无码热国产| 老司国产精品视频91| 伊人色综合久久天天| 午夜国产大片免费观看| 亚洲成年网站在线观看| 色老头综合网| 午夜视频在线观看免费网站| 国产美女在线观看| 五月婷婷导航| 在线播放国产一区| 亚洲视频一区在线| 日韩精品高清自在线| 欧美视频在线不卡| 亚洲αv毛片| 欧美爱爱网| 天天摸夜夜操| 久久黄色一级视频| 潮喷在线无码白浆| 野花国产精品入口| 亚洲永久视频| 美女视频黄又黄又免费高清| 欧美精品成人| 成人日韩欧美| 亚洲欧洲天堂色AV| 刘亦菲一区二区在线观看| 91小视频在线观看| 日本不卡在线| 欧美成人一区午夜福利在线| 国产综合无码一区二区色蜜蜜| 午夜影院a级片| 国产一级二级在线观看| 超碰色了色| 欧美 国产 人人视频| 波多野结衣一区二区三区四区 | 亚洲无码日韩一区| 91在线国内在线播放老师| 成人免费一级片|