開(kāi)源大數(shù)據(jù)衛(wèi)士Kerberos面臨挑戰(zhàn) 英特爾HAS系統(tǒng)架構(gòu)提升安全性
在古希臘神話中,Kerberos是住在冥河岸邊的三頭犬,負(fù)責(zé)看守冥界的入口。而在信息技術(shù)界,Kerberos是一種被廣泛采用的網(wǎng)絡(luò)認(rèn)證協(xié)議,通過(guò)對(duì)稱加密的技術(shù),保護(hù)網(wǎng)絡(luò)系統(tǒng)的安全。特別是在Hadoop開(kāi)源大數(shù)據(jù)平臺(tái),Kerberos是唯一內(nèi)置支持的安全的用戶認(rèn)證方式。它可以獨(dú)立于各服務(wù)組件,保證只有通過(guò)身份認(rèn)證的節(jié)點(diǎn)才可以訪問(wèn)對(duì)應(yīng)的服務(wù),進(jìn)而維護(hù)開(kāi)源大數(shù)據(jù)的系統(tǒng)安全。
作為開(kāi)源大數(shù)據(jù)衛(wèi)士的Kerberos,其安全性可靠性毋庸置疑,但是在運(yùn)營(yíng)維護(hù)和部署成本等方面,卻會(huì)為規(guī)模較大的企業(yè)用戶帶來(lái)一筆不小的負(fù)擔(dān)。通常,企業(yè)在接入Kerberos之前,已經(jīng)在多個(gè)場(chǎng)景下配置了對(duì)應(yīng)的身份認(rèn)證系統(tǒng)。而Hadoop開(kāi)源大數(shù)據(jù)平臺(tái)所使用的Kerberos,并不能支持除Kerberos內(nèi)置的用戶名密碼認(rèn)證以外的其它認(rèn)證機(jī)制,無(wú)法和企業(yè)已經(jīng)部署的用戶認(rèn)證方式進(jìn)行無(wú)縫對(duì)接。更讓人煩惱的是,Java也沒(méi)有一個(gè)完整的Kerberos庫(kù),很難對(duì)它進(jìn)行更改。因此,要把已有的身份認(rèn)證系統(tǒng)接入Kerberos的認(rèn)證流程中,其開(kāi)發(fā)難度和工作量都將會(huì)是非常龐大的。
Kerberos 在現(xiàn)實(shí)中遇到的問(wèn)題
Kerberos的這些問(wèn)題,對(duì)騰訊AI Lab這樣的企業(yè)級(jí)用戶,造成了不小的困擾:騰訊AI Lab此前的大數(shù)據(jù)集群并沒(méi)有啟用身份認(rèn)證,無(wú)法實(shí)現(xiàn)用戶存儲(chǔ)隔離,任意用戶都可通過(guò)更改客戶端的配置,偽造成超級(jí)用戶訪問(wèn)所有內(nèi)容。所以,必須把分散在不同服務(wù)上的認(rèn)證方式都合并在一起,基于已有的大數(shù)據(jù)集群進(jìn)行身份認(rèn)證的二次開(kāi)發(fā)。這要求開(kāi)發(fā)者保證現(xiàn)有的服務(wù)不受影響,讓用戶可以沿用過(guò)去熟悉的認(rèn)證方式,不能做太多的更改。同時(shí),還不能用把所有用戶賬號(hào)信息都同步到新數(shù)據(jù)庫(kù)的方式,因?yàn)檫@會(huì)增加大量的部署和運(yùn)維成本。
為了幫助騰訊AI Lab應(yīng)對(duì)這些挑戰(zhàn),在安全認(rèn)證領(lǐng)域積累了豐富經(jīng)驗(yàn)的英特爾大數(shù)據(jù)部門,基于英特爾?的數(shù)據(jù)中心平臺(tái),英特爾開(kāi)發(fā)了可插拔的身份認(rèn)證框架Hadoop Authentication Service (HAS)。它可以與現(xiàn)有的認(rèn)證和授權(quán)體系對(duì)接,無(wú)需在已有的用戶賬號(hào)系統(tǒng)和Kerberos數(shù)據(jù)庫(kù)之間遷移和同步用戶賬號(hào)信息,也不影響現(xiàn)有服務(wù)的連續(xù)性。同時(shí),這種架構(gòu)不需要獨(dú)立維護(hù)自己的身份信息,減少了中間環(huán)節(jié),大大降低了企業(yè)身份信息管理的復(fù)雜性和風(fēng)險(xiǎn)。
HAS系統(tǒng)架構(gòu)示意圖
與傳統(tǒng)的Kerberos不同,HAS在功能上包括了一個(gè)Token Authority和一個(gè)Apache Kerby 提供的Kerby KDC。Token Authority將其他已有認(rèn)證系統(tǒng)的信息轉(zhuǎn)換成HAS Token,再使用HAS Token向Kerby KDC換取Kerberos Ticket。拿到Kerberos Ticket后,就可以通過(guò)標(biāo)準(zhǔn)的Kerberos協(xié)議流程訪問(wèn)Hadoop集群的服務(wù)。
基于這樣的技術(shù)手段,用戶可以繼續(xù)使用原先的Kerberos認(rèn)證機(jī)制,也可以繼續(xù)使用以前熟悉的認(rèn)證方式登錄。所有分散的服務(wù)都統(tǒng)一在一套認(rèn)證系統(tǒng)中,無(wú)需再分別重新設(shè)置。與此同時(shí),因?yàn)楸苊饬擞脩糍~戶信息的拷貝和同步,HAS降低了運(yùn)營(yíng)維護(hù)的復(fù)雜度和成本,和信息泄露的風(fēng)險(xiǎn)。
HAS不僅可以作為在Hadoop集群上通用集成的用戶認(rèn)證解決方案,更可以定制成插件與企業(yè)特有認(rèn)證系統(tǒng)結(jié)合。針對(duì)騰訊AI Lab的需求,英特爾還定制了MySQL插件。當(dāng)用戶選擇使用MySQL插件認(rèn)證方式后,只需要在自己的環(huán)境中配置好賬號(hào)信息,客戶端就會(huì)自動(dòng)完成用戶身份認(rèn)證。此外,英特爾還實(shí)現(xiàn)了自動(dòng)化部署工具,一鍵部署Keytab與SSL證書(shū),極大簡(jiǎn)化了部署與優(yōu)化工作。
HAS能夠幫助各種不同的云計(jì)算、大數(shù)據(jù)相關(guān)的行業(yè)用戶,更便捷地以低成本部署身份認(rèn)證系統(tǒng)。對(duì)英特爾的工程師而言:技術(shù)是為了服務(wù)用戶,而不是為了展現(xiàn)自己的技術(shù)能力。開(kāi)發(fā)HAS的初衷,就是為了方便用戶的使用,將復(fù)雜的問(wèn)題變得簡(jiǎn)單。
HAS還在不斷地完善中,借助Intel? SGX技術(shù),英特爾未來(lái)會(huì)進(jìn)一步提高HAS的安全性。在Intel的下一代Xeon SP處理器上,將有機(jī)會(huì)運(yùn)用SGX技術(shù)來(lái)隔離處理和存儲(chǔ)HAS認(rèn)證過(guò)程中產(chǎn)生和使用的敏感數(shù)據(jù),讓身份認(rèn)證更加安全。