IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop Web 控制台安全认证——使用用户名 + 密码登陆设置方法 (Hadoop HTTP web-控制台认证 ) -> 正文阅读

[大数据]Hadoop Web 控制台安全认证——使用用户名 + 密码登陆设置方法 (Hadoop HTTP web-控制台认证 )

Hadoop HTTP WEB-控制台认证

我们安装完hadoop后,默认情况下我们访问UI界面是没有任何安全验证的。现在我想要的是对Hadoop的Web控制台界面加入一些安全机制,最好是能设置用户名和密码,通过用户名密码的方式来访问我们的Hadoop Web控制台。在做之前,我首先想看看官方有没有类似的这样的功能。下面的文档是官方的 《Hadoop HTTP web-控制台认证》 的说明文档:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/HttpAuthentication.html
从下面的截图可以看到,有一种方法可以进行设置,那我们就先用这种方式来设置一下,看看效果如何。
在这里插入图片描述
通过上面的文档介绍,以及参考其他博客的方法,我们做下面的配置

Hadoop web页面的授权设定

创建并配置秘钥文件

创建 secret 目录,用于存放密钥文件

mkdir /opt/hadoop/secret
vim /opt/hadoop/secret/hadoop-http-auth-signature-secret
在这里插入图片描述
hadoop-http-auth-signature-secret 文件当中我写入了 qazwsx$123

配置 core-site.xml

编辑 core-site.xml 文件 vim /opt/hadoop/hadoop-3.3.1/etc/hadoop/core-site.xml,加入下面的配置

    <property>
        <name>hadoop.http.filter.initializers</name>
        <value>org.apache.hadoop.security.AuthenticationFilterInitializer</value>
    </property>
    
    <!-- 定义用于HTTP web控制台的身份验证。支持的值是:simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# -->
    <property>
        <name>hadoop.http.authentication.type</name>
        <value>simple</value>
    </property>
    
    <!-- 
    签名秘密文件,用于对身份验证令牌进行签名。
    对于集群中的每个服务,ResourceManager, NameNode, DataNode和NodeManager,应该使用不同的secret。
    这个文件应该只有运行守护进程的Unix用户可以读。 
    -->
    <property>
        <name>hadoop.http.authentication.signature.secret.file</name>
        <value>/opt/hadoop/secret/hadoop-http-auth-signature-secret</value>
    </property>
     
    <!-- 指示在使用“简单”身份验证时是否允许匿名请求。 -->
    <property>
        <name>hadoop.http.authentication.simple.anonymous.allowed</name>
        <value>false</value>
    </property>

验证效果

我们重启 hadoop,这里我使用的是单机伪集群,直接运行 stop-dfs.sh 脚本先停止服务,再运行 start-dfs.sh 脚本启动 hadoop 服务,访问我们的web界面看看~。
当我访问web界面,http://127.0.0.1:9870,出现了如下所示的页面:
在这里插入图片描述
看起来有效果,按照官方的描述,我们在访问路径后面加user.name参数,值为我们之前设置的值,如:http://127.0.0.1:9870?user.name=qazwsx$123
在这里插入图片描述
可以看到页面访问成功了~,感觉好像配置好了,可以看到浏览器生成了一个cookie,进一步验证一下是否可行,当我把cookie清除,再次访问。
在这里插入图片描述
又没访问成功,哪我们再输入其他的user.name值验证一下是否也行呢?
这一次我访问了 http://127.0.0.1:9870?user.name=aaaa,这里的值和我之前设置的 hadoop-http-auth-signature-secret 里面的值不一样,按其他博客说的和我的理解,这时候应该页面访问不了才对,但是这次也居然访问成功了!
在这里插入图片描述
可以看到,这里我输入的是aaa,但是也通过了验证,哪这和我想要的需求不一样啊,这样的话不是每个人直接随便写几个字符都可以查看该页面了!我之后又反复检测多次,更换浏览器尝试,发现根本不行,索性我就放弃了这种配置方法。按照官方所说还有 Kerberos 方法进行安全设置,这里大家可以参考阅读这篇博客:https://www.cnblogs.com/yinzhengjie2020/p/13506913.html
我是觉得 Kerberos 方式太繁琐了索性也没有尝试,当然我也不想修改 Hadoop 的代码来完成这项需求,没办法只能寻找别的替代方案了。这里我就想能不能先把9870端口给先关了,通过反向代理来映射到对该端口地址的访问,通过Nginx来设置Basic Authentication 方式设置用户名密码来进行安全的校验。

通过Nginx 设置对 Hadoop 的 HTTP Basic Authentication 安全访问机制

安装 httpd 或 安装 httpd-tools

要使用 Nginx 服务首先当然要在我们的服务器上安装 Nginx 了,在此之前我们首先要安装 httpd,因为需要htpasswd命令来生成 用户名/密码

可以直接单独安装 htpasswd 安装命令:
yum install httpd-tools -y

安装 httpd 我这里直接通过yum方式进行安装的:yum -y install httpd

这里简单提一下:
启动 httpd 命令:service httpd restart
httpd 的默认安装目录在:/etc/httpd/
关于其配置可以自行查看 /etc/httpd/httpd.conf 文件
如果启动成功后,访问服务器的80端口会出现apache的welcome界面。

安装 Nginx

这里不在赘述Nginx的安装步骤,大家可以直接参考博客:CentOS 安装 Nginx 服务

通过htpasswd命令生成用户名及对应密码数据库文件

运行下面的命令创建密钥文件

# 设置用户名,密码 生成 db文件
htpasswd -c /usr/local/nginx/passwd.db username password
# 查看生成的db文件内容
cat /usr/nginx/conf/htpasswd.users

配置Nginx代理并设置访问身份验证

编辑 nginx.conf 文件,命令如下:

vim /usr/local/nginx/conf/nginx.conf

增加下面的配置信息:

    server {
            listen 50070;
            server_name localhost;

            location / {
                    auth_basic "hadoop001"; # 虚拟主机认证命名
                    auth_basic_user_file /usr/local/nginx/passwd.db; # 虚拟主机用户名密码认证数据库
                    proxy_pass http://127.0.0.1:9870; # hadoop 访问
            }
    }

由于Hadoop3.0.0以上版本访问WebUI默认端口从50070 改为了 9870,所以这里直接通过 50070 来代理到本机的 9870 端口,这时候我们访问一下服务器的50070端口页面
在这里插入图片描述
可以看到此时页面提示我们输入用户名和密码,我们把之前设置的用户名密码写上,点击登陆。
在这里插入图片描述
成功进入了我们的UI页面,大功告成,最开始的哪些配置就可以去掉了!


参考文档:

Nginx设置身份验证 https://www.bbsmax.com/A/n2d9bZvVzD/

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:24:53  更:2021-08-08 11:27:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:32:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码