如何使用 Active Directory 自动向 Hadoop 进行身份验证?

Posted

技术标签:

【中文标题】如何使用 Active Directory 自动向 Hadoop 进行身份验证?【英文标题】:How to automatically authenticate with Hadoop using Active Directory? 【发布时间】:2015-02-03 15:06:08 【问题描述】:

我们有一个通过 HDFS、YARN 和 Hive 接口访问 Hadoop 的应用程序。如果 kinit 已运行,则此应用程序对 Kerberos 保护的集群运行良好。如果我们调用 UserGroupInformation.loginUserFromKeytab(),它也可以正常工作。我们能够将 HDFS 和 Hive 令牌委托给 YARN 应用程序。我们无法弄清楚的是以下场景:

Hadoop 集群使用 Kerberos 保护 Hadoop 集群要么使用 Active Directory 作为其 KDC,要么具有 在其 KDC 和 AD 控制器之间建立了单向信任。 我们的软件正在一个经过身份验证的会话中运行 直接在 Windows 上使用 AD,或者通过 PAM 或 LDAP(或其他一些机制)在 Linux。 我们的软件查询活动的 AD 会话以提取 TGT 或 等效,并将该信息中继到 Hadoop API(通过 UserGroupInformation,大概)。 因此无需用户即可实现 Hadoop 身份验证 输入主体、密码或密钥表。

我们知道这在理论上是可能的,因为有两个软件示例可以实现这一点。第一个是 RedGate 的 HDFS Explorer。第二个是色相。然而,我们似乎无法找出正确的咒语,甚至 Hortonworks 的支持似乎也无济于事。

【问题讨论】:

【参考方案1】:

Hue 带有一个 LDAP 后端,可以transparently authenticate 用户针对您的公司目录,

Hue 还附带了一个KT renewer command,用于保持其 Kerberos 票证是最新的。它甚至在使用 CM 时会自动运行。

【讨论】:

谢谢。我知道使用 AD 进行 Hue 验证,但不确定它是否会对我们有所帮助,因为它使用的是 http 接口而不是 hadoop rpc 库。如果您可以查明执行验证的色调中的代码,我将接受您的回答:-) 还有其他示例使用 waffle 通过 http 进行验证,不幸的是,我们需要的很多代码都隐藏在需要大量挖掘和翻译的层中

以上是关于如何使用 Active Directory 自动向 Hadoop 进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义角色的 Shiro Active Directory

如何在登录时在 JWT 令牌中从 Azure Active Directory 传递自定义扩展属性?

如何使用 Azure Active Directory 设置 Ocelot Api 网关

使用 Terraform 创建一个 Azure Active Directory 自定义域

具有自定义角色和 Active Directory 的 ASP MVC 5 Windows 身份验证

LdapContext.search() 不返回自定义 Active Directory 属性