Kerberos 架构选项 - Amazon EMR

Kerberos 架构选项

在您将 Kerberos 与 Amazon EMR 结合使用时,可以从此部分中列出的架构进行选择。不论选择什么架构,您都使用相同步骤来配置 Kerberos。您需要创建安全配置,在创建集群时指定安全配置和兼容的集群特定 Kerberos 选项,并为集群上与 KDC 中集群委托人用户匹配的 Linux 用户创建 HDFS 目录。有关各个架构的配置选项及示例配置的说明,请参阅在 Amazon EMR 上配置 Kerberos

集群专用 KDC(主节点上的 KDC)

此配置在 Amazon EMR 版本 5.10.0 及更高版本中提供。

优点
  • 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 的跨领域信任。

优点
  • 安装 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 服务器中定义和维护的委托人。

优点
  • 在单个 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 域的跨领域信任

优点
注意事项和限制
  • 在各个使用 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 域中定义和维护的委托人进行身份验证。

优点
  • 在 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 范围不重叠。