作為開源大數據衛士的Kerberos,其安全性可靠性毋庸置疑,但是在運營維護和部署成本等方面,卻會為規模較大的企業用戶帶來一筆不小的負擔。通常,企業在接入Kerberos之前,已經在多個場景下配置了對應的身份認證系統。而Hadoop開源大數據平台所使用的Kerberos,並不能支持除Kerberos內置的用戶名密碼認證以外的其它認證機制,無法和企業已經部署的用戶認證方式進行無縫對接。更讓人煩惱的是,Java也沒有一個完整的Kerberos庫,很難對它進行更改。因此,要把已有的身份認證系統接入Kerberos的認證流程中,其開發難度和工作量都將會是非常龐大的。
Kerberos 在現實中遇到的問題
Kerberos的這些問題,對騰訊AI Lab這樣的企業級用戶,造成了不小的困擾:騰訊AI Lab此前的大數據集群並沒有啟用身份認證,無法實現用戶存儲隔離,任意用戶都可通過更改客戶端的配置,偽造成超級用戶訪問所有內容。所以,必須把分散在不同服務上的認證方式都合併在一起,基於已有的大數據集群進行身份認證的二次開發。這要求開發者保證現有的服務不受影響,讓用戶可以沿用過去熟悉的認證方式,不能做太多的更改。同時,還不能用把所有用戶賬號信息都同步到新數據庫的方式,因為這會增加大量的部署和運維成本。
為了幫助騰訊AI Lab應對這些挑戰,在安全認證領域積累了豐富經驗的英特爾大數據部門,基於英特爾®的數據中心平台,英特爾開發了可插拔的身份認證框架Hadoop Authentication Service (HAS)。它可以與現有的認證和授權體系對接,無需在已有的用戶賬號系統和Kerberos數據庫之間遷移和同步用戶賬號信息,也不影響現有服務的連續性。同時,這種架構不需要獨立維護自己的身份信息,減少了中間環節,大大降低了企業身份信息管理的複雜性和風險。
HAS系統架構示意圖
與傳統的Kerberos不同,HAS在功能上包括了一個Token Authority和一個Apache Kerby 提供的Kerby KDC。Token Authority將其他已有認證系統的信息轉換成HAS Token,再使用HAS Token向Kerby KDC換取Kerberos Ticket。拿到Kerberos Ticket后,就可以通過標準的Kerberos協議流程訪問Hadoop集群的服務。
基於這樣的技術手段,用戶可以繼續使用原先的Kerberos認證機制,也可以繼續使用以前熟悉的認證方式登錄。所有分散的服務都統一在一套認證系統中,無需再分別重新設置。與此同時,因為避免了用戶賬戶信息的拷貝和同步,HAS降低了運營維護的複雜度和成本,和信息泄露的風險。
HAS不僅可以作為在Hadoop集群上通用集成的用戶認證解決方案,更可以定製成插件與企業特有認證系統結合。針對騰訊AI Lab的需求,英特爾還定製了MySQL插件。當用戶選擇使用MySQL插件認證方式后,只需要在自己的環境中配置好賬號信息,客戶端就會自動完成用戶身份認證。此外,英特爾還實現了自動化部署工具,一鍵部署Keytab與SSL證書,極大簡化了部署與優化工作。
HAS能夠幫助各種不同的雲計算、大數據相關的行業用戶,更便捷地以低成本部署身份認證系統。對英特爾的工程師而言:技術是為了服務用戶,而不是為了展現自己的技術能力。開發HAS的初衷,就是為了方便用戶的使用,將複雜的問題變得簡單。
HAS還在不斷地完善中,藉助Intel® SGX技術,英特爾未來會進一步提高HAS的安全性。在Intel的下一代Xeon SP處理器上,將有機會運用SGX技術來隔離處理和存儲HAS認證過程中產生和使用的敏感數據,讓身份認證更加安全。