searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

hadoop hdfs 50070页面 添加登录验证

2023-07-25 06:41:29
153
0

hadoop安装完之后,默认情况下,可以通过 http://ip:50070/dfshealth.jsp 访问hdfs页面,查看namenode、datanode状态,查看存放的文件等。但这个页面在默认配置下,是不需要输入用户名密码的,直接输入地址到浏览器就可以访问,这为hdfs带来了安全隐患 – 所有人都可以通过这个页面删除文件。
鉴于这样的情况,我们希望在访问这个页面时,必须输入用户名密码,这样就只有少部分知情的人能操作这个页面。
在baidu上查相关的解决方案,基本都是通过配置core-site.xml等,在访问地址后面加上user.name=xx,即http://ip:50070/dfshealth.jsp?user.name=xx 的方式,开始觉得这样也能接受,后面发现,user.name=xx,这个xx输入任意字符就能通过检验,就比如我设置的user.name是abcdefg,在访问页面时我填?user.name=123也是可以访问页面的,这是不能接受了。
那既然这是一个web界面,那我们就可以从为web项目添加用户校验入手,为hadoop页面添加用户校验。

1 效果

在访问页面时,要输入用户名密码,我把50070端口改成了8070

 

2 具体的配置如下

在namenode节点配置即可,不用在datanode中配置

2.1 web.xml


路径: $HADOOP_HOME/share/hadoop/hdfs/webapps/hdfs/WEB-INF
编辑web.xml,填入以下内容(这是我的配置,role-name要根据自己的实际情况配置,我的hadoop用户是在root group下的,所以填root):

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
    <!-- Add this towards the bottom of the xml document. -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>root</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>jobtrackerRealm</realm-name>
    </login-config>
</web-app>

 

这是对各配置项的说明:

 

2.2 jetty-web.xml

 

和web.xml在同一个文件夹下,如果没有,则新增一个,填入以下内容(/etc/hadoop/realm.properties是配置用户名密码的文件,在同一行配置中已经加上hadoop.home.dir前缀了,这里补充实际路径就可以了):

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Get name="securityHandler">
    <Set name="userRealm">
      <New class="org.mortbay.jetty.security.HashUserRealm">
        <Set name="name">jobtrackerRealm</Set>
        <Set name="config">
                <SystemProperty name="hadoop.home.dir"/>/etc/hadoop/realm.properties
        </Set>
      </New>
    </Set>
  </Get>
</Configure>

 

2.3 realm.properties

$HADOOP_HOME/etc/hadoop/realm.properties,这个文件是没有的,要先创建

$ cd $HADOOP_HOME/etc/hadoop/
$ vi realm.properties

在编辑器中输入

用户名:密码,用户所在的组    #比如:  hadoop:hadoop123,root  一个用户密码一行,要配置多个,就多行

 

2.4 重启使修改生效

$ cd $HADOOP_HOME/sbin
$ ./stop-all.sh
# stop执行完之后,start
$ ./start-all.sh

 

3 参考文档

https://streever.atlassian.net/wiki/spaces/HADOOP/blog/2014/03/07/491558/Securing+Hadoop+HDP+Web+UI+Component+s

 

 

0条评论
作者已关闭评论
李****杰
2文章数
0粉丝数
李****杰
2 文章 | 0 粉丝
李****杰
2文章数
0粉丝数
李****杰
2 文章 | 0 粉丝
原创

hadoop hdfs 50070页面 添加登录验证

2023-07-25 06:41:29
153
0

hadoop安装完之后,默认情况下,可以通过 http://ip:50070/dfshealth.jsp 访问hdfs页面,查看namenode、datanode状态,查看存放的文件等。但这个页面在默认配置下,是不需要输入用户名密码的,直接输入地址到浏览器就可以访问,这为hdfs带来了安全隐患 – 所有人都可以通过这个页面删除文件。
鉴于这样的情况,我们希望在访问这个页面时,必须输入用户名密码,这样就只有少部分知情的人能操作这个页面。
在baidu上查相关的解决方案,基本都是通过配置core-site.xml等,在访问地址后面加上user.name=xx,即http://ip:50070/dfshealth.jsp?user.name=xx 的方式,开始觉得这样也能接受,后面发现,user.name=xx,这个xx输入任意字符就能通过检验,就比如我设置的user.name是abcdefg,在访问页面时我填?user.name=123也是可以访问页面的,这是不能接受了。
那既然这是一个web界面,那我们就可以从为web项目添加用户校验入手,为hadoop页面添加用户校验。

1 效果

在访问页面时,要输入用户名密码,我把50070端口改成了8070

 

2 具体的配置如下

在namenode节点配置即可,不用在datanode中配置

2.1 web.xml


路径: $HADOOP_HOME/share/hadoop/hdfs/webapps/hdfs/WEB-INF
编辑web.xml,填入以下内容(这是我的配置,role-name要根据自己的实际情况配置,我的hadoop用户是在root group下的,所以填root):

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
    <!-- Add this towards the bottom of the xml document. -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>root</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>jobtrackerRealm</realm-name>
    </login-config>
</web-app>

 

这是对各配置项的说明:

 

2.2 jetty-web.xml

 

和web.xml在同一个文件夹下,如果没有,则新增一个,填入以下内容(/etc/hadoop/realm.properties是配置用户名密码的文件,在同一行配置中已经加上hadoop.home.dir前缀了,这里补充实际路径就可以了):

<Configure class="org.mortbay.jetty.webapp.WebAppContext">
  <Get name="securityHandler">
    <Set name="userRealm">
      <New class="org.mortbay.jetty.security.HashUserRealm">
        <Set name="name">jobtrackerRealm</Set>
        <Set name="config">
                <SystemProperty name="hadoop.home.dir"/>/etc/hadoop/realm.properties
        </Set>
      </New>
    </Set>
  </Get>
</Configure>

 

2.3 realm.properties

$HADOOP_HOME/etc/hadoop/realm.properties,这个文件是没有的,要先创建

$ cd $HADOOP_HOME/etc/hadoop/
$ vi realm.properties

在编辑器中输入

用户名:密码,用户所在的组    #比如:  hadoop:hadoop123,root  一个用户密码一行,要配置多个,就多行

 

2.4 重启使修改生效

$ cd $HADOOP_HOME/sbin
$ ./stop-all.sh
# stop执行完之后,start
$ ./start-all.sh

 

3 参考文档

https://streever.atlassian.net/wiki/spaces/HADOOP/blog/2014/03/07/491558/Securing+Hadoop+HDP+Web+UI+Component+s

 

 

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0