全部產品
Search
文件中心

E-MapReduce:Kerberos概述

更新時間:Jul 01, 2024

從EMR-3.43.0和EMR-5.9.0版本開始,E-MapReduce支援建立高安全類型的叢集。在這種高安全層級的叢集中,所有開源組件均採用Kerberos安全模式啟動,確保只有經過Kerberos認證的用戶端能夠訪問叢集提供的服務(例如HDFS)。

背景資訊

叢集開啟Kerberos之後:

  • 用戶端:可以對可信任的用戶端提供認證,使得可信任用戶端能夠正確提交作業,惡意使用者無法偽裝成其他使用者侵入到叢集當中,能夠有效防止惡意冒充用戶端提交作業的情況。

  • 服務端:叢集中的服務都是可以信任的,叢集服務之間使用密鑰進行通訊,避免了冒充服務的情況。

開啟Kerberos能夠提升叢集的安全性,但是也會增加使用者使用叢集的複雜度:

  • 提交作業的方式與沒有開啟Kerberos前會有一些區別,需要對作業進行改造,增加Kerberos認證的相關內容。

  • 開啟Kerberos前需要使用者對Kerberos的原理、使用有一些瞭解,才能更好地使用Kerberos。

  • 由於叢集服務間的通訊加入了Kerberos認證機制,認證過程會有一些輕微的時間消耗,相同作業相較於沒有開啟Kerberos的同規格叢集執行速度會有一些下降。

Kerberos身份認證原理

Kerberos是一種基於對稱金鑰技術的身份認證協議,可以為其他服務提供身份認證功能,且支援SSO(即用戶端身份認證後,可以訪問多個服務,例如HBase和HDFS)。

Kerberos組成內容如下:

  • KDC:Kerberos的服務端程式。

  • Client:需要訪問服務的使用者(Principal),KDC和Service會對使用者的身份進行認證。

  • Service:整合了Kerberos的服務。例如,HDFS、YARN和HBase。

Kerberos協議認證過程如下圖所示。kerbers

Kerberos協議認證過程主要有以下兩個階段:

  • 第一階段:KDC對Client進行身份認證

    當用戶端使用者(Principal)訪問一個整合了Kerberos的服務之前,需要先通過KDC的身份認證。

    如果身份認證通過,則用戶端會擷取到一個TGT(Ticket Granting Ticket),後續就可以使用該TGT去訪問整合了Kerberos的服務。

  • 第二階段:Service對Client進行身份認證

    當使用者擷取TGT後,就可以繼續訪問Service服務。

    使用TGT以及需要訪問的服務名稱(例如HDFS)去KDC擷取SGT(Service Granting Ticket),然後使用SGT去訪問Service。Service會利用相關資訊對Client進行身份認證,認證通過後就可以正常訪問Service服務。

開啟Kerberos

建立叢集時,在軟體配置頁面的進階設定地區中,開啟Kerberos身份認證開關。

Kerberos

說明

EMR-3.43.1及後續版本,EMR-5.9.1及後續版本支援選擇KDC來源。

您可以選擇以下KDC來源:

  • 本群自建KDC(預設):當前叢集為您建立KDC。

  • 外部KDC:您外部自建的KDC,需要填寫相關的資訊,詳情請參見EMR對接外部KDC

相關文檔