Hadoop Web控制台添加身份验证

       我们在安装完hadoop 2.x 版本之后,默认情况下,可以通过 http://ip:50070/dfshealth.html访问hdfs页面,查看namenode和datanode状态,以及hdfs的相关文件等。但是这存在安全隐患,可能导致我们的文件信息的泄露,如果我们在页面里面添加个认证机制,只有验证之后的用户才可以进入页面里操作。

下面介绍一个既安全又好用的配置方案。

既然这是一个web界面,那就可以从为web项目添加用户校验入手,而不是为hadoop提供用户校验入手。
 

1、具体的配置如下

 
在namenode节点配置即可,不用在datanode中配置
web.xml (web项目的配置文件)
jetty.xml (jetty运行配置文件)
realm.properties (账号密码)

 

2、 web.xml

路径:  /usr/hdp/2.5.3.0-37/hadoop-hdfs/webapps/hdfs/WEB-INF
编辑web.xml,填入以下内容(这是我的配置, role-name 要根据自己的实际情况配置,我的hadoop用户是在hadoop group下的,所以填hadoop):
 
<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
 
 
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<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>    <!--  这是正在被保护的路径,当前设定的是root路径下的web ui -->
        </web-resource-collection>
        <auth-constraint>
            <role-name>hadoop </role-name>   <!--  hadoop用户的组名 -->
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>  <!-- HTTP规范,Base64 编码方式, 采用Base64编码具有不可读性,需要解码后才能阅读。-->
        <realm-name>jobtrackerRealm</realm-name>  <!-- 这个名称要和下面jetty里的name一致-->
      </login-config>
</web-app>
 

 

3、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>  <!-- 这个名称要和上面web里的realm-name一致-->
        <Set name="config">
                <SystemProperty name="hadoop.home.dir"/>/etc/hadoop/realm.properties  <!-- 存放用户和用户密码的地方-->
        </Set>
      </New>
    </Set>
  </Get>
</Configure>
4、 realm.properties
jetty-web.xml 配置的路径下,/etc/hadoop/realm.properties ,这个文件是没有 的,要先创 建。
cp /etc/hadoop/realm.properties /etc/hadoop/2.5.3.0-37/0/
chmod 755 /etc/hadoop/2.5.3.0-37/0/realm.properties
此时做完文件会放到 /etc/hadoop/2.5.3.0-37/0/ realm.properties下面    
vi /etc/hadoop/realm.properties
 
hadoop:4rfvbhu_2IU,hadoop
 
用户名:密码,用户所在的组      #比如: hadoop:hadoop123,root 一个用户密码一行,要配置多个,就多行
 

5、重启namenode,使认证生效

重启namenode
这里建议先重启standby nn,然后主从切换,重启切下来的standby nn,不要直接重启active的namenode

 

 

此法在yarn中,亦可使用。

### Hadoop HDFS Web UI配置与访问方法 #### 修改HDFS Web UI登录静态用户 为了确保能够以特定用户身份访问HDFS Web UI并解决权限问题,需编辑`core-site.xml`文件来设置网页登录使用的静态用户名。具体操作如下: ```xml <property> <name>hadoop.http.staticuser.user</name> <value>指定的用户名</value> </property> ``` 此段代码用于定义当通过浏览器访问HDFS Web时所采用的身份,默认情况下可能是`dr.who`这样的系统预设账户[^2]。 #### 启动Hadoop服务 完成上述配置之后,需要重启Hadoop集群使新的配置生效。通常这一步骤涉及停止现有进程再重新启动它们,命令可能类似于下这样(实际路径取决于安装环境): ```bash sbin/stop-dfs.sh sbin/start-dfs.sh ``` 这些指令会分别终止和初始化分布式文件系统的各个节点和服务组件[^1]。 #### 访问HDFS Web UI 一旦成功启用了Hadoop集群及其相关服务,就可以尝试连接到HDFS管理控制台了。默认情况下有两个主要端点可供选择: - **NameNode状态监控页面**: `http://<namenode-host>:9870` - **YARN资源调度器仪表板**: `http://<resourcemanager-host>:8088` 如果遇到网络连通性障碍,则应检查防火墙规则以及确认主机名解析无误。对于后者,在某些操作系统上可通过调整本地hosts文件实现更精确的名字映射关系[^3]。 #### 解决常见问题 针对无法定位至目标URL的情况,除了验证服务器运行状况外,还需留意是否有其他安全机制阻止外部请求到达目的地址。例如SELinux策略可能会干扰正常通信流程;另外就是确保客户端机器上的DNS查询功能完好以便顺利转换域名成IP地址。
评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值