hadoop hdfs 50070页面 添加登录验证

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是真的xx,任意输字符就能通过检验,就比如我设置的user.name是abcdefg,在访问页面时我填?user.name=123也是可以访问页面的,那这就不能接受了。
后来在google翻到了一篇文章:
https://streever.atlassian.net/wiki/spaces/HADOOP/blog/2014/03/07/491558/Securing+Hadoop+HDP+Web+UI+Component+s ([注]: 在文末附该链接内容的截图)
才反应过来,既然这是一个web界面,那就可以从为web项目添加用户校验入手,而不是为hadoop提供用户校验入手。

1 效果

在访问页面时,要输入用户名密码,我把50070端口改成了8070
hadoop hdfs 50070页面 添加登录验证_第1张图片

2 具体的配置如下

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

2.1 web.xml

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


    
    
        
            Protected
            /*
        
        
            root
        
    
    
        BASIC
        jobtrackerRealm
    

这是对各配置项的说明:
hadoop hdfs 50070页面 添加登录验证_第2张图片

2.2 jetty-web.xml

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


  
    
      
        jobtrackerRealm
        
                /etc/hadoop/realm.properties
        
      
    
  

这是对各配置项的说明:
hadoop hdfs 50070页面 添加登录验证_第3张图片

2.3 realm.properties

在1.2配置的路径下,$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

2 附

https://streever.atlassian.net/wiki/spaces/HADOOP/blog/2014/03/07/491558/Securing+Hadoop+HDP+Web+UI+Component+s
hadoop hdfs 50070页面 添加登录验证_第4张图片

你可能感兴趣的:(hadoop,50070,用户校验,hdfs,web,ui,hdfs,安全验证,user.name)