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 域的跨领域信任。
优点
-
在单个 KDC 中,委托人的管理进行了整合。
-
在同一个 Kerberos 领域中,多个集群可以使用相同的 KDC。有关更多信息,请参阅 使用具有相同 KDC 的多个集群的要求。
注意事项和限制
-
在各个使用 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 范围不重叠。