搭配 Amazon EMR 的 Kerberos 架構選項 - Amazon EMR

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

搭配 Amazon EMR 的 Kerberos 架構選項

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

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

此組態適用於 Amazon EMR 5.10.0 版及更高版本。

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

  • EMR 叢集上的 KDC 獨立於集中式 KDC 實作,例如 Microsoft Active Directory 或 AWS Managed Microsoft AD。

  • 對效能的影響微乎其微,因為 KDC 僅管理叢集中本機節點的身分驗證。

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

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

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

  • 使用者主體必須使用 EC2 私有金鑰檔案和 kinit 登入資料,以使用 SSH 連接到叢集。

跨領域信任

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

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

  • 使用 Active Directory 時,Amazon EMR 會自動建立對應至 KDC 上使用者主體的 Linux 使用者。您仍必須為每個使用者建立 HDFS 目錄。此外,Active Directory 網域中的使用者主體可以使用 kinit 登入資料來存取 Kerberos 化叢集,無需使用 EC2 私有金鑰檔案。這讓您不必在叢集使用者之間共用私有金鑰檔案。

  • 因為每個叢集 KDC 管理叢集中節點的身分驗證,因此網路延遲和處理成本對叢集中大量節點的影響可降至最低。

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

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

  • 跨域信任必須明確建立。例如,如果叢集 A 和叢集 B 都與 KDC 建立跨域信任,他們本質上並不會彼此信任,其應用程式也無法相互進行身分驗證以相互運作。

  • KDC 必須獨立地加以維持和協調,使用者主體的登入資料才能完全相符。

外部 KDC

Amazon EMR 5.20.0 及更高版本支援搭配外部 KDC 的組態。

外部 KDC – MIT KDC

此組態允許一或多個 EMR 叢集使用在 MIT KDC 伺服器中定義和維護的主體。

Amazon EMR叢集 architecture with Kerberos realm, showing master, core, and task nodes.
優點
  • 主體管理已整合至單一 KDC。

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

  • Kerberos 化叢集上的主節點無須承受與維護 KDC 關聯的效能負擔。

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

  • 使用者主體必須使用 EC2 私有金鑰檔案和 kinit 登入資料,以使用 SSH 連接到 Kerberos 化叢集。

  • Kerberos 化 EMR 叢集中的每個節點都必須有連到 KDC 的網路路由。

  • Kerberos 化叢集中的每個 節點都會對外部 KDC 帶來身分驗證負擔,因此 KDC 的組態會影響叢集效能。設定 KDC 伺服器的硬體時,請考慮能同時支援的最大 Amazon EMR 節點數。

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

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

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

此組態幾乎等同於上述的外部 MIT KDC 實作,除了 KDC 位於 EMR 叢集的主節點上。如需詳細資訊,請參閱叢集專用 KDC (主節點上的 KDC)教學課程:使用 Active Directory 域設定跨領域信任

Diagram of Amazon EMR clusters with Kerberos realm, showing master and core nodes.
優點
考量與限制
  • 您必須在對應到 KDC 使用者主體之每個 Kerberos 化叢集主節點的 EC2 執行個體上建立 Linux 使用者,以及每個使用者的 HDFS 目錄。

  • 使用者主體必須使用 EC2 私有金鑰檔案和 kinit 登入資料,以使用 SSH 連接到 Kerberos 化叢集。

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

  • Kerberos 化叢集中的每個 Amazon EMR 節點都會對外部 KDC 帶來身分驗證負擔,因此 KDC 的組態會影響叢集效能。設定 KDC 伺服器的硬體時,請考慮能同時支援的最大 Amazon EMR 節點數。

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

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

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

在這個組態中,您先使用與 Active Directory 具有單向跨域信任的叢集專用 KDC,來建立叢集。如需詳細教學,請參閱教學課程:使用 Active Directory 域設定跨領域信任。接著啟動其他叢集,參考具有信任的叢集 KDC 做為外部 KDC。如需範例,請參閱「外部叢集 KDC 搭配 Active Directory 跨領域信任」。這可讓使用外部 KDC 的每個 Amazon EMR 叢集,驗證在 Microsoft Active Directory 域中定義和維護的主體。

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

  • Amazon EMR 加入 Active Directory 領域,因此無需建立對應至 Active Directory 使用者的 Linux 使用者。您仍必須為每個使用者建立 HDFS 目錄。

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

  • Active Directory 網域中的使用者主體可以使用 kinit 登入資料來存取 Kerberos 化叢集,無需使用 EC2 私有金鑰檔案。這讓您不必在叢集使用者之間共用私有金鑰檔案。

  • 只有一個 Amazon EMR 主節點需負擔維護 KDC 的責任,而且只有該叢集必須使用 Active Directory 憑證來建立 KDC 與 Active Directory 之間的跨領域信任。

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

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

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

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

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

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

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