Kerberos 架構選項 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Kerberos 架構選項

將 Kerberos 與 Amazon 搭配使用時EMR,您可以從本節中列出的架構中進行選擇。無論選擇哪個架構,請使用相同的步驟來設定 Kerberos。您可以建立安全性組態、在建立叢集時指定安全性組態和相容的叢集特定 Kerberos 選項,並在叢集上建立與中使用者主體相符的 Linux 使用者HDFS目錄。KDC如需組態選項的說明和每個架構的範例組態,請參閱在 Amazon 上配置凱伯洛斯 EMR

叢集專用 KDC (KDC在主節點上)

此配置適用於 Amazon 5.10.0 及更高EMR版本。

Amazon EMR叢集 architecture with master node, core nodes, and task node within a Kerberos realm.
優點
  • Amazon EMR 擁有KDC.

  • EMR集群KDC上的獨立於集中KDC實現,如 Microsoft 活動目錄或 AWS Managed Microsoft AD.

  • 因為只KDC管理叢集內本機節點的驗證,因此對效能的影響很小。

  • 或者,其他 Kerberized 叢集可以將KDC作為外部參考。KDC如需詳細資訊,請參閱不同KDC叢集上的外部主要節點

考量與限制
  • Kerberos 化叢集不能相互驗證,所以應用程式無法相互運作。如果叢集應用程式需要互通,您必須在叢集之間建立跨領域信任,或將一個叢集設定為其他叢集KDC的外部叢集。如果建立跨領域信任,則KDCs必須具有不同的 Kerberos 範圍。

  • 您必須在與使用者主體對應的主要節點EC2執行個體上建立 Linux KDC 使用者,以及每個使用者的HDFS目錄。

  • 使用者主體必須使用EC2私密金鑰檔案和kinit認證,才能使SSH用連線至叢集。

跨領域信任

在此組態中,來自不同 Kerberos 範圍的主體 (通常是使用者) 會認證 Kerberized EMR 叢集上具有自己的應用程式元件。KDC主要節點KDC上的KDC使用兩KDCs者中都存在的跨領域主體,與另一個節點建立信任關係。每個主體名稱和密碼都完全相符KDC。跨域信任最常用於 Active Directory 實作,如下圖所示。也支援與外部MITKDC或另一個 Amazon EMR 叢集KDC上的跨領域信任。

Amazon EMR clusters in different Kerberos realms with cross-realm trust to Active Directory.
優點
  • 已安裝的EMRKDC叢集維護的完整擁有權KDC。

  • 透過使用中目錄,Amazon EMR 會自動建立對應於使用者主體的 Linux 使用者。KDC您仍然必須為每個使用者建立HDFS目錄。此外,Active Directory 網域中的使用者主體可以使用kinit認證存取 Kerberized 叢集,而不需要EC2私密金鑰檔案。這讓您不必在叢集使用者之間共用私有金鑰檔案。

  • 由於每個叢集都會KDC管理叢集中節點的驗證,因此可將叢集間大量節點的網路延遲和處理額外負荷的影響降到最低。

考量與限制
  • 如果您要與 Active Directory 領域建立信任,您必須提供當您建立叢集時具備將主體加入網域之許可的 Active Directory 使用者名稱和密碼。

  • 跨域信任無法在具有相同名稱的 Kerberos 領域之間建立。

  • 跨域信任必須明確建立。例如,如果叢集 A 和叢集 B 都與 a 建立跨領域信任KDC,它們本質上就不會彼此信任,而且應用程式無法彼此驗證以進行互通。

  • KDCs必須獨立和協調維護,以便使用者主體的認證精確匹配。

外部 KDC

Amazon EMR 5.20.0 及更新版本支援具KDC有外部設定的組態。

外部 KDC — MIT KDC

此組態可讓一或多個EMR叢集使用在MITKDC伺服器中定義及維護的主體。

Amazon EMR叢集 architecture with Kerberos realm, showing master, core, and task nodes.
優點
  • 管理主參與者會合併為單KDC一主參與者。

  • 多個叢集可以KDC在相同的 Kerberos 領域中使用相同的叢集。如需詳細資訊,請參閱使用具有相同叢集的需求 KDC

  • Kerberized 叢集上的主要節點沒有與維護. KDC

考量與限制
  • 您必須在與使用者主EC2體對應的每個 Kerberized 叢集主要節點的執行個體上建立 Linux 使KDC用者,以及每個使用者的HDFS目錄。

  • 使用者主體必須使用EC2私密金鑰檔案和kinit認證,才能使用來連線至 Kerberized 叢集。SSH

  • Kerberized EMR 叢集中的每個節點都必須有一個網路路由到. KDC

  • Kerberized 叢集中的每個節點都會對外部造成驗證負擔KDC,因此的組態KDC會影響叢集效能。設定KDC伺服器的硬體時,請考慮同時支援的 Amazon EMR 節點數目上限。

  • 叢集效能取決於 Kerberized 叢集中節點之間的網路延遲和. KDC

  • 由於不同的因素相互牽連,疑難排解會比較困難。

不同KDC叢集上的外部主要節點

此組態與上述外部MITKDC實作幾乎相同,不同之處在KDC於EMR叢集的主要節點上。如需詳細資訊,請參閱 叢集專用 KDC (KDC在主節點上)教學課程:使用 Active Directory 域設定跨領域信任

Diagram of Amazon EMR clusters with Kerberos realm, showing master and core nodes.
優點
  • 管理主參與者會合併為單KDC一主參與者。

  • 多個叢集可以KDC在相同的 Kerberos 領域中使用相同的叢集。如需詳細資訊,請參閱使用具有相同叢集的需求 KDC

考量與限制
  • 您必須在與使用者主EC2體對應的每個 Kerberized 叢集主要節點的執行個體上建立 Linux 使KDC用者,以及每個使用者的HDFS目錄。

  • 使用者主體必須使用EC2私密金鑰檔案和kinit認證,才能使用來連線至 Kerberized 叢集。SSH

  • 每個EMR叢集中的每個節點都必須有一個網路路由到KDC.

  • Kerberized 叢集中的每個 Amazon EMR 節點都會對外部造成身份驗證負擔KDC,因此的組態KDC會影響叢集效能。設定KDC伺服器的硬體時,請考慮同時支援的 Amazon EMR 節點數目上限。

  • 叢集效能取決於叢集中節點之間的網路延遲和KDC.

  • 由於不同的因素相互牽連,疑難排解會比較困難。

具有 Active Directory 跨領域信任的不同叢集KDC上的外部KDC叢集

在此組態中,您首先建立具有叢集專用的叢集,KDC該叢集具有單向跨領域信任與 Active Directory。如需詳細教學,請參閱教學課程:使用 Active Directory 域設定跨領域信任。然後啟動其他叢集,參考具有KDC信任做為外部叢集的叢集KDC。如需範例,請參閱KDC具有作用中目錄跨領域信任的外部叢集。這允許使用外部的每個 Amazon EMR 叢集KDC來驗證在 Microsoft 活動目錄域中定義和維護的主體。

Amazon EMR clusters with Kerberos authentication and Active Directory integration diagram.
優點
  • 管理主體已合併至 Active Directory 網域。

  • Amazon EMR 加入了活動目錄領域,這樣就不需要創建對應活動目錄用戶的 Linux 用戶。您仍然必須為每個使用者建立HDFS目錄。

  • 多個叢集可以KDC在相同的 Kerberos 領域中使用相同的叢集。如需詳細資訊,請參閱使用具有相同叢集的需求 KDC

  • Active Directory 網域中的使用者主體可以使用kinit認證存取 Kerberized 叢集,而不需要EC2私密金鑰檔案。這讓您不必在叢集使用者之間共用私有金鑰檔案。

  • 只有一個 Amazon EMR 主節點有維護的負擔KDC,而且只有該叢集必須使用 Active Directory 登入資料建立,以便在KDC和 Active Directory 之間進行跨領域信任。

考量與限制
  • 每個EMR叢集中的每個節點都必須具有連至KDC和 Active Directory 網域控制站的網路路由。

  • 每個 Amazon EMR 節點都會對外部造成身份驗證負擔KDC,因此的組態會KDC影響叢集效能。設定KDC伺服器的硬體時,請考慮同時支援的 Amazon EMR 節點數目上限。

  • 叢集效能取決於叢集中節點與KDC伺服器之間的網路延遲。

  • 由於不同的因素相互牽連,疑難排解會比較困難。

使用具有相同叢集的需求 KDC

多個叢集可以KDC在相同的 Kerberos 領域中使用相同的叢集。但是,如果叢集同時執行,則叢集使用衝突的 Kerberos ServicePrincipal 名稱可能會失敗。

如果您有多個並行叢集具有相同的外部KDC,請確定叢集使用不同的 Kerberos 範圍。如果叢集必須使用相同的 Kerberos 範圍,請確定叢集位於不同的子網路中,而且它們的CIDR範圍不會重疊。