目前我正在做一个项目来增强hadoop集群的安全性。最终我将使用kerberos和sentry进行身份验证和授权。用户名和组Map将来自ad/ldap(?),我想是的。
但现在我只是在学习和尝试。我有个问题,但我还没弄明白
用户名/组Map信息来自何处?
据我所知,hadoop没有用户名和组名,用户名和组名来自本地客户机或kerberos领域的客户机。但对我来说有点模糊,我能在这里得到实现细节吗?
这些信息是来自hdfs客户机所在的机器还是来自名称节点上的linux shell用户名和组?或者它取决于上下文-甚至与数据节点相关?如果数据节点和名称节点在本地框中有不同的用户或用户组Map,该怎么办。
2条答案
按热度按时间jfewjypa1#
默认情况下,客户机和namenode以及所有在linux框中检查组成员身份和用户名的hadoop服务都使用id命令(不过,我不确定windows客户端的详细信息,但最近它是通过jni完成的,所以这方面也必须有一个解决方案。)
这也意味着结果将取决于本地框的用户组Map。如果您将kerberos与任何后端一起使用,或者如果您通过sssd或其他任何方式对此有一个集中式后端,那么您可以在nsswitch.conf中设置该框,以便在id命令后面使用它。
旁注:有一个名为hadoop.security.group.mapping的属性定义了用于进行Map的策略。我不建议使用ldapgroupmapping,即使您有一个ldap后端,jnibasedgroupmappingwithfallback看起来更可靠而且工作得很好。
m0rkklqb2#
hadoop从一个名为
HADOOP_USER_NAME
.如果你想传递另一个用户名,你可以这样写:
所以命令必须从
HADOOP_USER_NAME=VALUE
,