首頁技術(shù)文章正文

什么是Kerberos?Kerberos如何做身份認(rèn)證?

更新時間:2022-08-15 來源:黑馬程序員 瀏覽量:

在大數(shù)據(jù)領(lǐng)域,安全永遠(yuǎn)是一個繞不開的話題。

對于一個簡單安裝上線的 hadoop 集群,我們可以認(rèn)為有如下安全隱患:

如,可以人為的添加一個客戶端節(jié)點,并以此假冒的客戶端來獲取集群數(shù)據(jù)。對于一個假冒的客戶端節(jié)點,成功加入集群就能夠偽裝 datanode 讓得到 namenode 指派的任務(wù)和數(shù)據(jù)。創(chuàng)建一個HDFS賬戶,就可以得到 hadoop 文件系統(tǒng)的最高權(quán)限。Kerberos 主要用來做網(wǎng)絡(luò)通訊中的身份認(rèn)證,幫助我們高效、安全的識別訪問者。那么 Kerberos 是如何做身份認(rèn)證的呢?


我們來看一個現(xiàn)實中的例子:

小明要去電影院觀看一場電影

那么對于這樣一個流程來說就有:

1. 前期需求,確定了自己想要看什么電影,位于哪個影院,什么時間后使用自己的賬戶密碼登錄票務(wù)中心。

2. 購票機(jī)制,通過付費(發(fā)送請求)來讓小明從未授權(quán)的影院訪問者變成被授權(quán)訪問的狀態(tài)。

3. 驗票機(jī)制,驗證票據(jù)持有者的身份,和票務(wù)中心核對驗證票據(jù)的合法性、時間、以及訪問的位置。

4. 觀看電影,一切驗證通過后得到想要的內(nèi)容。

5. 再次觀看,需要重新購票走流程。

那么對于這樣一個例子,相信大家應(yīng)該都很好理解。 Kerberos的認(rèn)證流程基本上和上述的例子差不多,我們來對上述例子進(jìn)行一個轉(zhuǎn)換一一對應(yīng):

 發(fā)送請求,表明要訪問什么服務(wù),使用自己的密碼來對請求進(jìn)行加密
 驗證身份后,得到一個ticket(票據(jù))
 服務(wù)提供者和Kerberos進(jìn)行通訊驗證ticket的合法性、有效期
 驗證通過提供服務(wù)
 超出ticket的有效期后再次訪問需要重新申請

基于這樣一個轉(zhuǎn)換,我們可以得到一個關(guān)鍵信息: Kerberos 的身份認(rèn)證其實是基于 ticket 來完成 的,就像看電影是基于電影票來進(jìn)行驗證的一樣。 那么我們客戶端,想要訪問某些服務(wù),最主要的是得到一張 ticket.

理解了上述的概念之后,來看一下具體的 Kerberos 的執(zhí)行流程:

Kerberos 的執(zhí)行流程

在如上的流程里有如下關(guān)鍵字:

1. KDC (秘鑰分發(fā)中心), KDC (也就是 Kerberos Server )提供提供 AS 和 TGS 兩個服務(wù)

① AS: authorization server , 授權(quán)服務(wù),對于上面流程1,提供初始授權(quán)認(rèn)證,用戶表明需求并使用密碼對請求進(jìn)行加密,AS用提供的密碼對請求進(jìn)行解密后得到請求內(nèi)容,返回給用戶一個TGT(ticket granting tickets)(用一個秘鑰加密)

② 用戶得到TGT后使用TGT去訪問TGS( Ticket Granting Server ),TGS驗證TGT后(使用秘鑰解密)返回一個Ticket給用戶

2. 用戶(圖中John),得到ticket后去訪問server,server收到ticket和KDC進(jìn)行驗證,通過后提供服務(wù)

如上是一個典型的Kerberos運行流程,對于 hadoop 的授權(quán)認(rèn)證來說,就是把server換為具體的服務(wù),如 namenode resourcemanager 等想要訪問 namenode (也就是 hdfs )需要拿到對應(yīng) hdfs 的 ticket 才可以訪問

分享到:
在線咨詢 我要報名
和我們在線交談!