一種Hadoop平臺上面向數據欄位的訪問控制方法與流程
2023-05-26 20:07:11 1
本發明涉及雲計算
技術領域:
,特別是涉及一種hadoop平臺上面向數據欄位的訪問控制方法。
背景技術:
:社會信息化和網絡化的迅猛發展,導致數據量以呈爆炸式激增。開源分布式框架hadoop作為大數據平臺的標準解決方案,被企業、科研機構及個人所認可。由於hadoop在最初設計時並未考慮到安全問題,隨著其使用量的增加以及使用形式的轉變,如:使用hadoop構建雲存儲、雲計算平臺等等,導致hadoop的安全漏洞以及隱患日益凸顯,且由於平臺中承載了龐大的用戶隱私數據,這就引起了社會各界的擔憂,並成為阻礙其發展的重要原因之一。因此,雲存儲、雲計算平臺的安全問題,尤其是廣泛使用的hadoop集群的安全問題成為了近些年來學術界以及工業界的一個研究熱點。目前最新的hadoop3.0.0-alpha3-snapshot版本中使用kerberos認證體系作為其安全機制的基礎,用於在集群中提供用戶認證、hadoop節點認證以及hadoop服務認證,從而解決了hadoop早期版本中可能出現的冒充威脅;使用sla(servicelevelauthorization)將指定的hadoop服務授權給特定的合法用戶,從而更加規範化、更加安全地管理計算與存儲資源;使用ssl證書(sslcertificates)加密保護瀏覽器/伺服器以及節點間數據傳輸的安全;採用https加密傳輸數據,防止數據在傳送過程中被監聽、盜取、篡改保證了數據的完整性;使用kms(hadoopkeymanagementserver)提供hdfs(hadoopdistributefilesystem)數據的透明加密,有效解決了多租戶中的數據隔離問題。保存到磁碟中的數據以密文形式存儲,還有效地防止了當節點被黑客攻擊後,後者直接從硬碟中取得數據的威脅。使用類unix/linux的訪問機制對主節點(namenode)中文件訪問進行限制,從而提供了豐富的文件級別的訪問控制策略。綜上,hadoop最新版本中雖然提供了多種安全機制,但是它們都屬於粗粒度的訪問控制,而隨著hadoop使用方式的豐富,對資源的共享者來說急需更加細粒度的訪問控制策略,例如某些欄位對於某些具有文件讀取權限的用戶仍需不可見。解決這一問題的關鍵是對存儲於hdfs中的結構化數據使用新的存儲以及讀取方法,使其在存儲以及讀取過程中能有效識別所屬欄位,進而使用訪問控制列表(accesscontrollist,acl)對欄位的訪問權限進行控制。然而由於hadoop使用非結構化的數據存儲方式,即把資源按字節流形式進行讀取並直接寫入hdfs,且不同文件的記錄結構不同,故而無法使用統一的配置文件來限制欄位訪問權限。如何針對不同文件設置並存儲欄位訪問控制列表以及進行欄位級細粒度訪問控制是本發明的主要任務。技術實現要素:本發明所要解決的技術問題是提供一種hadoop平臺上面向數據欄位的訪問控制方法,提高數據擁有者對數據進行安全管理的靈活性。本發明解決其技術問題所採用的技術方案是:提供一種hadoop平臺上面向數據欄位的訪問控制方法,包括以下步驟:(1)文件上傳過程:擴展hadoop中已有的文件上傳命令,設定schema格式,並將原始文件中的數據根據schema解析後上傳到主節點,在主節點中保存欄位的訪問控制列表,添加編輯日誌以及文件鏡像的寫入操作;(2)欄位的權限操作:增加欄位權限操作命令,提供查詢、更新指定文件的欄位訪問控制列表操作;在進行欄位的權限操作時,用戶通過客戶端向主節點發送請求,主節點通過驗證用戶的權限來進行具體的操作;(3)數據下載過程:程序通過對原始block數據輸出流進行解析,驗證用戶對該欄位是否具有讀權限,進而限定反饋的結果列。所述步驟(1)具體包括以下子步驟:(11)對原有命令進行擴展,其中,在擴展後的命令中,-fs用來指定欄位間的分隔符,schema為上傳文件的路徑;(12)為待上傳的文件建立schema文件作為文件的說明;(13)在原有與主節點通信消息之上增加schema欄位用來向主節點傳遞schema信息;主節點獲取到schema信息,將其轉化為fieldpermission對象,其權限為文件的默認權限,並將該對象作為屬性寫入對應文件的元信息中;最後將此信息寫入編輯日誌以便於主節點重啟後仍能加載該文件的欄位訪問控制列表到內存中;(14)客戶端得到主節點反饋的block輸入流後,在原始數據流寫入的過程中增加欄位識別功能;按行讀取原始流數據,然後,將數據存儲為[(,,…)]格式,最後寫入到block流中;(15)增加編輯日誌與文件鏡像合併過程中的解析方法,具體操作內容是將編輯日誌中的欄位的訪問控制列表進行解析然後合併到文件鏡像內對應的記錄中。所述步驟(2)中欄位訪問控制列表查看的基本流程是:用戶通過客戶端向主節點發送rpc請求,主節點通過判斷用戶是否是文件的擁有者決定是否反饋該文件的欄位訪問控制列表。所述步驟(2)中文件欄位權限以及歸屬的修改流程是:用戶通過客戶端向主節點發送rpc請求,主節點接收請求後,驗證用戶是否具有相關權限,若具有則記錄編輯日誌並更新內存中針對於該文件的訪問控制列表信息,若不具有則直接返回拒絕訪問給用戶。所述步驟(3)具體包括以下子步驟:(31)獲取用戶讀取文件的fieldpermission屬性,若存在該屬性則說明用戶正在讀取支持欄位級訪問控制的文件,若不存在則說明用戶讀取的是普通文件;(32)驗證用戶是否具有對文件的讀權限,若具有則允許讀取該文件,進一步判斷用戶讀取的文件類型;若用戶讀取的是普通文件,則進入普通文件的處理流程;若用戶讀取的文件支持欄位級訪問控制,則繼續下述流程;(33)打開block的輸入流,並在數據流寫入到本地文件時,增加數據流解析,按行讀取數據,將數據解析為(,…)格式;(34)通過fieldpermission屬性即可對數據的欄位進行訪問控制,將未授權的欄位過濾,之後對數據格式進行還原,使其能夠還原到上傳前的數據存儲形式。有益效果由於採用了上述的技術方案,本發明與現有技術相比,具有以下的優點和積極效果:本發明增加hadoop對結構化數據欄位的細粒度訪問控制,豐富了hadoop訪問控制方式,提高了數據擁有者對數據管理的靈活性。具體實施方式下面結合具體實施例,進一步闡述本發明。應理解,這些實施例僅用於說明本發明而不用於限制本發明的範圍。此外應理解,在閱讀了本發明講授的內容之後,本領域技術人員可以對本發明作各種改動或修改,這些等價形式同樣落於本申請所附權利要求書所限定的範圍。本發明的實施方式涉及一種hadoop平臺上面向數據欄位的訪問控制方法,包括以下步驟:步驟1、文件上傳過程:擴展原始上傳文件命令,設定schema格式,並將原始文件中的數據根據schema解析後上傳到namenode,在namenode中保存欄位的訪問權限列表,添加editlog以及fsimage的寫入操作;1.1)為原有的hdfsdfs–put[-f][-p][-l][-d]...命令進行擴展,擴展後的命令格式為:hdfsdfs–put[-f][-p][-l][-d][-fs-s]...。其中-fs用來指明欄位間的分隔符,schema為上傳文件的路徑;1.2)為待上傳的文件建立schema文件作為文件的說明,schema文件包含欄位的名稱以及類型。其順序對應於文件中的欄位順序,以json格式保存,其格式展示如下所示:上段中fields欄位保存文件中的所有欄位信息,name用於存儲欄位名稱,type用於存儲欄位類型。fields欄位內記錄有序,隱含index屬性用來標識欄位的邏輯位置信息。設計fields來保存所有欄位的目的是,未來一旦添加新的功能,可以保證原有的解析過程不變;1.3)由於hadoop文件上傳客戶端需要和主節點通過rpc通信獲取blocks,且namenode維護文件的元信息,故需要在原有與主節點通信消息之上增加schema欄位用來向namenode傳遞schema信息。主節點獲取到schema信息,將其轉化為fieldpermission對象,其權限為文件的默認權限,並將該對象作為屬性寫入對應文件的元信息中。最後將此信息寫入editlog以便於namenode重啟後仍能加載該文件的欄位訪問控制列表到內存中。1.4)客戶端得到主節點反饋的block輸入流後,在原始數據流寫入的過程中增加欄位識別功能。按行讀取原始流數據。然後,將數據存儲為[(,,…)]格式,最後寫入到block流中,使用該結構進行存儲的目的是在後續讀取過程中能夠對數據的欄位進行權限判定;1.5)增加editlog與fsimage合併過程中的解析方法,具體操作內容是將editlog中的欄位的訪問控制列表進行解析然後合併到fsimage內對應的記錄中。步驟2、欄位的權限操作:增加欄位權限操作命令,提供查詢、更新指定文件的欄位訪問控制列表操作。2.1)為了能夠更新欄位的訪問控制列表,需要增加新的hdfs命令,新增加的命令如下表1所示:表1欄位權限相關命令用途命令格式查看指定文件hdfsdfs-fshow修改權限hdfsdfs-fchmodmodefields…修改歸屬hdfsdfs–fchown[owner][:[group]]fields…2.2)文件的欄位訪問控制列表查看的基本流程是,用戶通過客戶端向主節點發送rpc請求,主節點通過判斷用戶是否是文件的擁有者決定是否反饋該文件的欄位訪問控制列表;2.3)文件欄位權限以及歸屬的修改流程是用戶通過客戶端向主節點發送rpc請求,主節點接收請求後,驗證用戶是否具有相關權限,若具有則記錄editlog並更新內存中針對於該文件的訪問控制列表信息,若不具有則直接返回permissiondeny給用戶。步驟3、數據下載過程:程序通過對原始block數據輸出流進行解析,驗證用戶對該欄位是否具有讀權限,進而限定反饋的結果列。3.1)獲取用戶讀取文件的fieldpermission屬性,若存在該屬性則說明用戶正在讀取支持欄位級訪問控制的文件,若不存在則說明用戶讀取的是普通文件;3.2)驗證用戶是否具有對文件的讀權限,若具有則允許讀取該文件,進一步判斷用戶讀取的文件類型。若用戶讀取的是普通文件,則進入普通文件的處理流程;若用戶讀取的文件支持欄位級訪問控制,則繼續下述流程;3.3)打開block的輸入流,並在數據流寫入到本地文件時,增加數據流解析。按行讀取數據,將數據解析為(,…)格式;3.4)通過fieldpermission屬性即可對數據的欄位進行訪問控制,將未授權的欄位過濾,之後對數據格式進行還原,使其能夠還原到上傳前的數據存儲形式。當前第1頁12