

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

# 搭配 Amazon EMR 的 Kerberos 架構選項
<a name="emr-kerberos-options"></a>

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

## 叢集專用 KDC (主節點上的 KDC)
<a name="emr-kerberos-localkdc-summary"></a>

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

![\[Amazon EMR叢集 architecture with master node, core nodes, and task node within a Kerberos realm.\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/kerb-cluster-dedicated-kdc.png)


**優點**
+ Amazon EMR 具有完整的 KDC 擁有權。
+ EMR 叢集上的 KDC 獨立於集中式 KDC 實作，例如 Microsoft Active Directory 或 AWS Managed Microsoft AD。
+ 對效能的影響微乎其微，因為 KDC 僅管理叢集中本機節點的身分驗證。
+ 或者，其他 Kerberos 化的叢集可以參考 KDC 做為外部 KDC。如需詳細資訊，請參閱[外部 KDC – 不同叢集上的主節點](#emr-kerberos-extkdc-cluster-summary)。

**考量和限制**
+ Kerberos 化叢集不能相互驗證，所以應用程式無法相互運作。如果叢集應用程式需要相互運作，您必須在叢集之間建立跨域信任，或設定一個叢集做為其他叢集的外部 KDC。如果建立跨域信任，KDC 必須有不同的 Kerberos 領域。
+ 您必須在對應到 KDC 使用者主體的主節點 EC2 執行個體上建立 Linux 使用者，以及每個使用者 HDFS 目錄。
+ 使用者主體必須使用 EC2 私有金鑰檔案和 `kinit` 登入資料，以使用 SSH 連接到叢集。

## 跨領域信任
<a name="emr-kerberos-crossrealm-summary"></a>

在這個組態中，來自不同 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.\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/kerb-cross-realm-trust.png)


**優點**
+ 安裝 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
<a name="emr-kerberos-extkdc-summary"></a>

Amazon EMR 5.20.0 及更高版本支援搭配外部 KDC 的組態。
+ [外部 KDC – MIT KDC](#emr-kerberos-extkdc-mit-summary)
+ [外部 KDC – 不同叢集上的主節點](#emr-kerberos-extkdc-cluster-summary)
+ [外部 KDC – 叢集 KDC 位於具有 Active Directory 跨領域信任的不同叢集上](#emr-kerberos-extkdc-ad-trust-summary)

### 外部 KDC – MIT KDC
<a name="emr-kerberos-extkdc-mit-summary"></a>

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

![\[Amazon EMR叢集 architecture with Kerberos realm, showing master, core, and task nodes.\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/kerb-external-kdc.png)


**優點**
+ 主體管理已整合至單一 KDC。
+ 多個叢集可以使用相同 Kerberos 領域中的相同 KDC。如需詳細資訊，請參閱[使用多個具有相同 KDC 的叢集的需求](#emr-kerberos-multi-kdc)。
+ Kerberos 化叢集上的主節點無須承受與維護 KDC 關聯的效能負擔。

**考量和限制**
+ 您必須在對應到 KDC 使用者主體之每個 Kerberos 化叢集主節點的 EC2 執行個體上建立 Linux 使用者，以及每個使用者的 HDFS 目錄。
+ 使用者主體必須使用 EC2 私有金鑰檔案和 `kinit` 登入資料，以使用 SSH 連接到 Kerberos 化叢集。
+ Kerberos 化 EMR 叢集中的每個節點都必須有連到 KDC 的網路路由。
+ Kerberos 化叢集中的每個 節點都會對外部 KDC 帶來身分驗證負擔，因此 KDC 的組態會影響叢集效能。設定 KDC 伺服器的硬體時，請考慮能同時支援的最大 Amazon EMR 節點數。
+ 叢集效能取決於 Kerberos 化叢集中節點和 KDC 之間的網路延遲。
+ 由於不同的因素相互牽連，疑難排解會比較困難。

### 外部 KDC – 不同叢集上的主節點
<a name="emr-kerberos-extkdc-cluster-summary"></a>

此組態幾乎等同於上述的外部 MIT KDC 實作，除了 KDC 位於 EMR 叢集的主節點上。如需詳細資訊，請參閱[叢集專用 KDC (主節點上的 KDC)](#emr-kerberos-localkdc-summary)及[教學課程：使用 Active Directory 域設定跨領域信任](emr-kerberos-cross-realm.md)。

![\[Diagram of Amazon EMR clusters with Kerberos realm, showing master and core nodes.\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/kerb-external-cluster-kdc.png)


**優點**
+ 主體管理已整合至單一 KDC。
+ 多個叢集可以使用相同 Kerberos 領域中的相同 KDC。如需詳細資訊，請參閱[使用多個具有相同 KDC 的叢集的需求](#emr-kerberos-multi-kdc)。

**考量和限制**
+ 您必須在對應到 KDC 使用者主體之每個 Kerberos 化叢集主節點的 EC2 執行個體上建立 Linux 使用者，以及每個使用者的 HDFS 目錄。
+ 使用者主體必須使用 EC2 私有金鑰檔案和 `kinit` 登入資料，以使用 SSH 連接到 Kerberos 化叢集。
+ 每個 EMR 叢集中的每個節點都必須有連到 KDC 的網路路由。
+ Kerberos 化叢集中的每個 Amazon EMR 節點都會對外部 KDC 帶來身分驗證負擔，因此 KDC 的組態會影響叢集效能。設定 KDC 伺服器的硬體時，請考慮能同時支援的最大 Amazon EMR 節點數。
+ 叢集效能取決於叢集中節點和 KDC 之間的網路延遲。
+ 由於不同的因素相互牽連，疑難排解會比較困難。

### 外部 KDC – 叢集 KDC 位於具有 Active Directory 跨領域信任的不同叢集上
<a name="emr-kerberos-extkdc-ad-trust-summary"></a>

在這個組態中，您先使用與 Active Directory 具有單向跨域信任的叢集專用 KDC，來建立叢集。如需詳細教學，請參閱[教學課程：使用 Active Directory 域設定跨領域信任](emr-kerberos-cross-realm.md)。接著啟動其他叢集，參考具有信任的叢集 KDC 做為外部 KDC。如需範例，請參閱 [外部叢集 KDC 搭配 Active Directory 跨領域信任](emr-kerberos-config-examples.md#emr-kerberos-example-extkdc-ad-trust)。這可讓使用外部 KDC 的每個 Amazon EMR 叢集，驗證在 Microsoft Active Directory 域中定義和維護的主體。

![\[Amazon EMR clusters with Kerberos authentication and Active Directory integration diagram.\]](http://docs.aws.amazon.com/zh_tw/emr/latest/ManagementGuide/images/kerb-external-ad-trust-kdc.png)


**優點**
+ 管理主體已合併至 Active Directory 網域。
+ Amazon EMR 加入 Active Directory 領域，因此無需建立對應至 Active Directory 使用者的 Linux 使用者。您仍必須為每個使用者建立 HDFS 目錄。
+ 多個叢集可以使用相同 Kerberos 領域中的相同 KDC。如需詳細資訊，請參閱[使用多個具有相同 KDC 的叢集的需求](#emr-kerberos-multi-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 的叢集的需求
<a name="emr-kerberos-multi-kdc"></a>

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

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