• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      大數(shù)據環(huán)境下Hive訪問控制技術研究

      2018-02-12 12:24陳嬌朱焱丁國富
      軟件導刊 2018年12期
      關鍵詞:大數(shù)據環(huán)境訪問控制

      陳嬌 朱焱 丁國富

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

      關鍵詞:大數(shù)據環(huán)境;訪問控制;Hive數(shù)據倉庫;Hive數(shù)據安全

      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?引言

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

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

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

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

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

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

      1?Hive平臺架構

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

      2?Hive安全體系

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

      2.1?Hive登錄用戶

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

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

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

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

      2.2?數(shù)據倉庫對象授權

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

      2.3?數(shù)據庫語句授權

      在Hive中,限定某些操作只能由具有特定角色的用戶使用。在Hive中有兩個特殊角色——public和admin。所有用戶都屬于角色public,給public角色賦權就相當于給所有用戶賦權。屬于角色admin的用戶稱為超級管理員,即使沒有顯式地賦予權限,也具有對數(shù)據倉庫的全部權限。另外,只有擁有admin角色的用戶才擁有執(zhí)行某些特定語句的權限,例如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主要有兩種方式:①命令行方式,直接在命令行下執(zhí)行操作;②客戶端方式,通過Java等編程語言連接Hive。由于客戶端方式連接Hive必須經過ThriftServer(hiveServer)協(xié)議,導致通過命令行方式和客戶端方式連接Hive后有區(qū)別。在通過客戶端連接Hive時,Hive不能正確識別當前用戶,即使是具有不同權限的用戶連接Hive后,能夠執(zhí)行的操作也并無差別,造成安全性降低,為此本文提出融合式用戶識別技術。

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

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

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

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

      4?Hive批量授權

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

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

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

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

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

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

      核心代碼段(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?結語

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

      參考文獻:

      [1]?馮勤群.大數(shù)據背景下數(shù)據庫安全保障體系研究[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]?馮登國,張敏,李昊.大數(shù)據安全與隱私保護[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的身份認證機制的研究與實現(xiàn)[J]. 計算機應用與軟件,2011,28(2):284?286.

      [15]?夏云.非結構化大數(shù)據存儲系統(tǒng)安全性增強技術研究[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]?陳文捷,蔡立志.大數(shù)據安全及其評估[J].計算機應用與軟件,2016,33(4):34?38.

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

      猜你喜歡
      大數(shù)據環(huán)境訪問控制
      ONVIF的全新主張:一致性及最訪問控制的Profile A
      基于大數(shù)據環(huán)境的新聞編輯理念變革創(chuàng)新機制
      動態(tài)自適應訪問控制模型
      淺析云計算環(huán)境下等級保護訪問控制測評技術
      大數(shù)據平臺訪問控制方法的設計與實現(xiàn)
      基于崗位映射的應急組織間跨域訪問控制研究
      林口县| 贡觉县| 云霄县| 民丰县| 杨浦区| 舒兰市| 汝阳县| 嘉峪关市| 漳州市| 丰顺县| 尖扎县| 阜南县| 大冶市| 民勤县| 抚顺市| 宁波市| 英山县| 乌什县| 额敏县| 朝阳区| 饶河县| 白城市| 额尔古纳市| 吉水县| 万年县| 长岛县| 原阳县| 黄山市| 扬州市| 宁城县| 呼图壁县| 昌吉市| 亳州市| 武川县| 綦江县| 东阿县| 永清县| 阿坝县| 上高县| 望都县| 梅州市|