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 领域。

  • 在主节点的 EC2 实例上,您必须创建与 KDC 用户主体相对应的 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 相关的性能负担。

注意事项和限制
  • 在各个使用 Kerberos 集群主节点的 EC2 实例上,您必须创建与 KDC 用户主体相对应的 Linux 用户,以及各个用户的 HDFS 目录。

  • 用户委托人必须使用 EC2 私有密钥文件和 kinit 凭证以通过 SSH 连接到使用 Kerberos 的集群。

  • 使用 Kerberos 的 EMR 集群中的每个节点都必须具有指向 KDC 的网络路由。

  • 使用 Kerberos 的集群中的每个节点对外部 DKC 都会施加身份验证负担,因此 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.
优点
注意事项和限制
  • 在各个使用 Kerberos 集群主节点的 EC2 实例上,您必须创建与 KDC 用户主体相对应的 Linux 用户,以及各个用户的 HDFS 目录。

  • 用户委托人必须使用 EC2 私有密钥文件和 kinit 凭证以通过 SSH 连接到使用 Kerberos 的集群。

  • 各个 EMR 集群中的各个节点必须具有指向 KDC 的网络路由。

  • 使用 Kerberos 的集群中的每个 Amazon EMR 节点都会对外部 DKC 施加身份验证负担,因此 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 节点都会对外部 DKC 施加身份验证负担,因此 KDC 的配置会影响集群性能。在您配置 KDC 服务器的硬件时,请考虑同时支持的最大 Amazon EMR 节点数。

  • 集群性能依赖于集群中节点与 KDC 服务器之间的网络延迟。

  • 由于相互依赖关系,问题排查可能会更加困难。

使用具有相同 KDC 的多个集群的要求

在同一个 Kerberos 领域中,多个集群可以使用相同的 KDC。但是,如果集群并发运行,则如果集群使用的 Kerberos ServicePrincipal 名称存在冲突,则集群可能会失败。

如果您有多个具有相同外部 KDC 的并发集群,请确保这些集群使用不同的 Kerberos 领域。如果集群必须使用相同的 Kerberos 领域,请确保集群位于不同的子网中,并且它们的 CIDR 范围不重叠。