賀宗平, 李光瑞, 張曉東
(1 南京審計大學 信息化辦公室, 南京 211815; 2 中共江蘇省委黨校 信息管理處, 南京 210009)
Apache Hive是基于Hadoop大數據存儲架構的數據倉庫工具,可以對存儲在HDFS系統中的數據集進行查詢分析和計算處理,提供了類似于SQL語言的查詢語言HQL。作為Hadoop大數據平臺的主要數據訪問接口,Hive從架構上具備一定程度的靈活配置能力,能夠無縫集成多種安全認證體系,從而為保證大數據平臺的安全訪問提供完善支撐。
通常訪問認證包括三個要素,內容表述為:
(1)主體。提出訪問資源具體請求。
(2)客體。指被訪問資源的實體。
(3)控制策略。主體對客體訪問的限制和規則。
大數據平臺的數據倉庫訪問認證的主要目的是限制主體對客體的訪問,從而保障數據資源在合法范圍內的有效使用和管理。
數據倉庫的訪問認證應當包括身份認證(authentication)和訪問授權(authorization)兩個方面的內容,身份認證的功能是驗證用戶的身份是否為合法用戶,訪問授權的功能是授予合法用戶相應的數據訪問權限。
概括來說,數據倉庫的訪問認證機制的總體作用是保證合法用戶訪問授權許可的數據資源,防止非法用戶訪問受保護的數據資源,以及限制合法用戶對受保護的數據資源進行越權訪問。
目錄是一組具有類似屬性、以一定邏輯和層次組合的信息。例如,通訊錄是由以字母順序排列的名字、地址和電話號碼組成。計算機網絡中的目錄服務是一種在分布式環境中發現目標的方法。LDAP是輕量目錄訪問協議(Lightweight Directory Access Protocol)的縮寫,是從X.500目錄訪問協議的基礎上發展而來,是一種集中賬號管理架構的實現協議。從另一個角度來看,目錄服務其實也是一種樹形結構的數據庫系統。這種樹形結構數據庫與關系型數據庫之間的主要區別在于,目錄服務是主要為查詢設計,而關系型數據庫則是為讀寫而設計。
LDAP的功能模型中定義了其協議的主要操作,包含4部分內容,可做如下闡釋:
(1)查詢操作。允許查詢目錄和獲取數據,查詢性能比關系型數據庫優異。
(2)更新操作。允許進行添加、刪除、修改等更新操作。
(3)復制操作。提供復制操作,可將主服務器的數據的更新復制到設置的從服務器中。
(4)認證和管理操作。允許客戶端在目錄中識別自己,并且能夠控制一個會話的性質。
LDAP協議作為一種目錄服務,使用特殊結構的數據庫,具備以下幾個主要特點:
(1)讀取性能遠高于寫操作。
(2)不同于一般意義上的關系型數據庫,不支持事務、回滾等操作。
(3)采用服務器/客戶端模式,支持分布式架構,支持通過客戶端API實現分布式操作。
(4)條目以樹形結構組織和存儲。
(5)直接運行在簡單和通用的TCP/IP或其它可靠的傳輸協議層上。
(6)具有低成本、易配置和易管理的特點。
一般關系型數據庫往往通過服務進程來支持客戶端通過IPC等方式進行連接訪問,客戶端可以是通過JDBC或ODBC方式驅動的命令行以及應用程序。大數據平臺的數據倉庫也通過類似同樣的方式進行總體架構和訪問認證控制。
HiveServer2作為數據倉庫Hive的一個重要組件,是一種能使客戶端執行Hive查詢的服務,可以支持多客戶端并發、安全訪問配置,為開放支持JDBC、ODBC的API客戶端提供更好的支持。基于Thrift的Hive服務是HiveServer2的核心,可以處理并發用戶查詢,同時支持LDAP、Kerberos以及自定義身份認證協議。Hive數據倉庫體系架構示意如圖1所示。

圖 1 Hive數據倉庫體系架構示意圖Fig. 1 Hive's architecture of data warehouse
HiveServer2在Hive的架構中相當于執行引擎容器,對于每一個客戶端連接,HiveServer2創建一個新對應的執行環境,為Hive客戶端的SQL查詢提供服務。RPC接口實現了將Hive服務端的執行環境與客戶端請求服務線程之間的對應關聯。HiveServer2客戶端主要包括:
(1)JDBC。應用程序可以通過JDBC驅動,以指定的網絡服務地址、端口等要素的標準格式來連接Hive服務端。
(2)Beeline CLI。Beeline CLI是基于SQLLine CLI的JDBC客戶端,其工作模式包括2種,即本地嵌入模式和遠程模式。在嵌入模式情況下,將返回一個嵌入式的Hive;遠程模式是通過Thrift協議與HiveServer2進程進行連接通信。
Hive元存儲服務通過自身的JVM進程啟動,Hive中表和分區的相關所有元數據都存儲在Hive的元存儲Metastore當中。大多數關系型數據庫都可以支持Hive的元存儲服務。Hive中的元存儲服務架構共有3種不同的模式,分別是:內嵌式元存儲、本地元存儲、遠程元存儲。Hive元存儲服務架構設計則如圖2所示。
OpenLDAP是基于LDAP標準的一種具體開源實現,支持TCP/IP 協議,對于互聯網和企業級應用具有較強的優勢。OpenLDAP 以Berkeley DB 作為默認的后端數據庫。Berkeley DB 是一類特殊的數據庫,主要用于搜索、瀏覽、更新查詢操作,適合于一次寫入數據、多次查詢搜索的應用場景。由于Berkeley DB 是面向查詢和讀取進行優化的數據庫,不支持高并發的吞吐量以及復雜的事務操作。OpenLDAP支持LDAP 最新標準、更多的模塊擴展功能、自定義schema、權限管理、密碼策略及審計管理、主機控制策略管理、第三方應用平臺管理,甚至可以結合第三方開源軟件實現高可用、負載均衡等多種擴展功能。

圖2 Hive元存儲服務架構示意圖Fig. 2 Metastore's architecture for Hive
OpenLDAP目錄中的信息是按照樹形結構進行組織,具體信息數據存儲在條目中,條目可以看成關系數據庫中的表記錄,條目是具有區別名(Distinguished Name,DN)的屬性(attribute),DN 是用來引用條目,DN 相當于關系數據庫中的主鍵。屬性由類型(type)和值(value)組成,與關系型數據庫中字段的概念相類似。
通常用戶賬號是作為訪問系統的唯一入口憑證。隨著單點登錄(SSO)、統一身份認證系統在政府部門、教育機構、企業集團等大型組織中的廣泛應用,通過LDAP目錄服務提供用戶賬戶集中管理的優勢越發明顯。對于用戶賬戶管理人員而言,在用戶數量大、增長快的情況下,賬號的創建、回收、權限管理、密碼策略、安全審計等一系列管理工作繁瑣、復雜。基于OpenLDAP 的帳號集中管理系統解決了多層次、多類型系統、數據庫的安全訪問難題,所有與賬號相關的管理策略均在服務端配置,實現賬號的集中維護、管理,客戶端賬號及密碼通過OpenLDAP服務器進行驗證,管理員只須維護OpenLDAP 服務器條目即可。
OpenLDAP的目錄信息是以樹形結構進行存儲的,在樹根一般定義域名(dc=com),其次往往定義一個或多個組織(organization,o)或組織單元(organization unit,ou)。一個組織單元可以包含用戶賬戶相關信息。OpenLDAP將數據的存儲設計組織成樹形結構,與很多物理模型結構可以直接對應,避免了關系型數據庫的表結構的轉換。
在圖3所示的樹形結構中,樹的根結點是一個組織的域名(com.example),往下分為manager、people2個分支,這2個分支可以對應組織中的2個不同的組或2個不同層級權限的角色,如manager角色是所有管理人員,people角色用來代表普通用戶。圖中每個結點用一個條目來保存,OpenLDAP中通過objectClass的類型來控制不同結點需要的數據。每一個條目都有一個唯一的dn,dn的構造方式是首先得到條目自己的名稱(dn),然后開始向上逐級查找父結點,一直到根節點為止。例如,對于圖3中最左下方的結點,其dn為:
uid=user_test,ou=people,dc=example,dc=com

圖3 OpenLDAP組織模型示意圖Fig. 3 Organization model of OpenLDAP
Hive的各種客戶端方式如JDBC、Beeline CLI等,都支持身份認證模式,允許Hive通過部署配置的方式實現與認證服務系統進行集成。身份認證的體系架構具體如圖4所示。

圖 4 身份認證的架構設計Fig. 4 The architecture of access authentication
Hive提供了基于元數據的權限管理,通過擴展這種細粒度的權限管理,可以實現功能較為完備的訪問授權。Hive訪問授權命令可見表1。

表1 Hive訪問授權命令表Tab. 1 The commands of Hive's authorization
OpenLDAP中應用了Group(組)和Role(角色)的方法來管理用戶,通過建立組或角色,可以將不同組織架構下的用戶進行屬性、權限等方面的區分。OpenLDAP中的Group(組)是其中的一個實體,具有member的屬性。將用戶添加到這個Group中,member屬性中就添加成員的dn記錄。OpenLDAP中的Role(角色)本質上是nsrole的屬性記錄。每個OpenLDAP實體都有一個nsrole的屬性。如果某個角色賦予某個用戶實體的話,會在用戶的nsrole的屬性中添加角色的記錄。在Hive認證授權中實現了OpenLDAP集成架構,其關鍵在于建立兩者組或角色之間的對應關系,區分兩者的功能邊界。Hive與OpenLDAP的訪問認證功能區分可見表2。
表2Hive與OpenLDAP的訪問認證功能區分表
Tab.2ThedistinctionofauthenticationbetweenHiveandOpenLDAP

應用方法HiveOpenLDAP組(Group)不管理管理用戶(User)不管理管理角色(Role)權限控制屬性定義
綜合概括來說,Hive本身不負責用戶、用戶組的管理,由OpenLDAP負責用戶、用戶組的管理,OpenLDAP對于角色的定義是一種屬性區分定義,Hive通過OpenLDAP角色屬性定義區分來進行權限控制。訪問授權的流程解析可分述如下:
(1)創建Hive超級管理員。
(2)集成IT平臺中的統一身份認證OpenLDAP的用戶組、用戶和角色。
(3)進入Hive超級管理員,管理或新建具備各種數據操作權限的角色;授權OpenLDAP中用戶組和用戶相應的角色權限。
(4)客戶端可以通過已有的用戶名和密碼連接到Hive執行授權范圍內的操作。
上述流程在具體操作中,可以通過腳本代碼、前端工程等實現訪問認證功能的應用化開發,為系統管理員提供訪問認證的交互式、可視化操作的UI管理界面。
在面向大數據安全訪問認證的體系架構問題研究中,基于OpenLDAP實現的大數據存儲安全訪問架構,具備高實用、高可靠的價值。這種架構能夠充分繼承和利用組織中現有賬戶管理系統的身份認證功能,并實現了賬戶管理與訪問控制管理的分離,為大數據平臺的安全訪問管理和配置帶來了便捷性。在下一步的研究中,將通過結合數據倉庫工具Hive的相關架構、功能和特性,以及訪問授權的分解流程,開發拓展大數據平臺安全訪問的專業管理工具,深度集成LDAP、SSL等安全協議,實現高可靠、易操作的細粒度安全訪問配置管理。
[1] 張銳卿,湯泰鼎,萬可. 大數據環境下細粒度的訪問控制與審計管理[J]. 信息安全研究,2017,3(6):509-515.
[2] 董涵. 基于LDAP的校園網統一身份認證的探索與研究[J]. 科技視界,2017(9):311.
[3] 陸艷軍,李月航,李忠強. 大數據平臺訪問控制方法的設計與實現[J]. 信息安全研究,2016,2(10):926-930.
[4] 李昊,張敏,馮登國,等. 大數據訪問控制研究[J]. 計算機學報,2017,40(1):72-91.
[5] 陳垚坤,尹香蘭,劉文麗. 大數據環境下訪問控制模型適用性研究[J]. 網絡空間安全,2016,7(7):3-5,11.
[6] 黃秀芳,王海. 基于LDAP的高校數字化校園統一身份認證集成實施方案[J]. 江蘇科技大學學報(自然科學版),2015,29(6):580-584.
[7] 朱麟. 基于LDAP的單點登錄的設計與實現[J]. 科技風,2015(24):74.
[8] 章松,劉春波. 基于LDAP的高可用目錄服務器的設計與實現[J]. 軟件,2015,36(12):146-148,157.
[9] 于鵑. 數據倉庫與大數據融合的探討[J]. 電信科學,2015,31(3):166-170.