hadoop - 在 Kerberos 安全 Hadoop 集群中运行时模拟用户

标签 hadoop impersonation kerberos

我有一个 Web 应用程序,它可以接收来自不同用户的从 Linux 命令行运行的几个其他应用程序的请求。对于每个请求,我都必须从 hdfs 读取数据来调用应用程序文件夹,只有调用应用程序的 Linux 用户才能访问该文件夹。有没有一种方法可以设置配置,以便可以在运行时覆盖它以模拟调用者应用程序用户进行 hadoop kerberos 身份验证。 我使用下面的代码创建了一个 UserGroupInformation 以从 kerberos keytab 登录。此 UGI 将充当真实用户并将其传递给 UserGroupInformation 类以创建代理用户,如下所示。

UserGroupInformation realUgi = UserGroupInformation.loginUserFromKeytabAndReturnUGI("KerberosUser ", "pathToKeytabFile") ;
UserGroupInformation ugi = UserGroupInformation.createProxyUser("NewProxyUser", realUgi ); 
ugi.doAs(new PrivilegedExceptionAction() { 
public Void run() throws Exception { 
  Configuration jobconf = new Configuration(); 
  jobconf.set("fs.default.name", "hdfs://server:hdfsport"); 
  jobconf.set("hadoop.job.ugi", "NewroxyUser"); 
  jobconf.set("mapred.job.tracker", "server:jobtracker port"); 
  String[] args = new String[] { "data/input", "data/output" }; 
  ToolRunner.run(jobconf, WordCount.class.newInstance(), args); 
  return null; 
} });

在本例中,我使用 Kerberos 安全 hadoop 实现,并且收到下面给出的错误。

ERROR UserGroupInformation:1125 - PriviledgedActionException as:NewProxyUser
via KerberosUser cause:org.apache.hadoop.ipc.RemoteException: User: KerberosUser is not allowed to impersonate NewProxyUser
Caused by: org.apache.hadoop.ipc.RemoteException: User: KerberosUser is not allowed to impersonate NewProxyUser

您能否建议我使用 Kerberos 用户模拟代理用户的任何其他方法。

提前致谢

最佳答案

我认为您需要设置安全模拟。请参阅下面的链接了解更多信息 http://hadoop.apache.org/docs/r1.2.1/Secure_Impersonation.html

关于hadoop - 在 Kerberos 安全 Hadoop 集群中运行时模拟用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20430390/

相关文章:

tridion - 在 Tridion 2011 中模拟而不使用核心服务

macos - 从 SSO kerberos 注销

hadoop - 在 Hadoop 上启用 Kerberos 时发出警告

带有 JAAS 和多个领域的 Kerberos 身份验证

java - 如何强制 pig 增加 map 数量

hadoop - Accumulo:没有平板电脑服务器

debugging - 如何将调试器附加到远程 Hadoop 实例

hadoop - 还原Impala的Load语句?

c# - 使用 Azure 服务总线终结点在本地 WCF 服务中进行 Windows 模拟

c# - 模拟、Active Directory 和 "user does not have authority to xxxx"问题