官网地址
用户指南-点我
注意!!! 太坑了, 可以先不看这个,等Knox全部配置好启动再回来看这个坑
按照官网说的 NameNode UI 地址模板: https://knox:8443/gateway/bdha/hdfs/explorer.html# 这个地址对于hadoop3.x不行的,会报错,日志如下
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
应该是 : https://knox:8443/gateway/bdha/hdfs/explorer.html/?host=http://master:9870#
目前官网文档关于Hadoop3.x 版本 NameNode UI访问地址的说明 是过时了
浏览了很多的issues(官方文档也看了很多遍,以为是自己配置问题,最后怀疑是bug ) ,找到了官方的解释,也给出了上面的方案: 点我去看
最后官方说将在2.1.0版本进行修改和发布(用是可以用,只是影响了体验)
安装LDAP客户端
apache官方下载地址 : 官方地址下载
对jdk版本有要求,我的电脑是jdk8,下载2021版本 亲测是需要jdk11支持
官网下载慢的话,点我直接下载
安装Knox2.0.0
备注: knox2.0.0安装包内置一个LDAP服务端用来做测试用的
解压到相关目录
我是在/opt/bigdata/knox/ 下解压的,解压后的完整目录是/opt/bigdata/knox/knox-2.0.0
unzip knox-2.0.0.zip
配置和启动
环境变量设置
export GATEWAY_HOME=/opt/bigdata/knox/knox-2.0.0
export PATH=$PATH:$GATEWAY_HOME/bin:$PATH
启动 knox内置的 LDAP服务端
ldap.sh start
先使用前面安装的ldap客户端连接knox内置的ldap客户端
客户端连接使用如下,目前使用knox内置的admin账户
DN : uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
password: admin-password
备注: 如何查看Knox内置的LDAP账户和密码呢? 使用如下命令
cat /opt/bigdata/knox/knox-2.0.0/conf/users.ldif
创建master key
创建master key以保护knox实例里保存的key和credential
knoxcli.sh create-master
新建bdha.xml
在/opt/bigdata/knox/knox-2.0.0/conf/topologies 目录下,新建bdha.xml文件,bdha是我Hadoop集群的名字,bdha是网关url的一部分,注意下面关于bdha、knox(这个是我knox服务主机的hostname)、其他端口改成自己的
<?xml version="1.0" encoding="UTF-8"?>
<topology>
<uri>https://knox:8443/gateway/bdha</uri>
<name>bdha</name>
<timestamp>1679161274000</timestamp>
<generated>false</generated>
<redeployTime>0</redeployTime>
<gateway>
<provider>
<role>authentication</role>
<name>ShiroProvider</name>
<enabled>true</enabled>
<!-- 这个是session可以设置长一点, 单位是分钟 -->
<param>
<name>sessionTimeout</name>
<value>10080</value>
</param>
<param>
<name>main.ldapRealm</name>
<value>org.apache.knox.gateway.shirorealm.KnoxLdapRealm</value>
</param>
<param>
<name>main.ldapContextFactory</name>
<value>org.apache.knox.gateway.shirorealm.KnoxLdapContextFactory</value>
</param>
<param>
<name>main.ldapRealm.contextFactory</name>
<value>$ldapContextFactory</value>
</param>
<param>
<name>main.ldapRealm.userDnTemplate</name>
<value>uid={0},ou=people,dc=hadoop,dc=apache,dc=org</value>
</param>
<param>
<name>main.ldapRealm.contextFactory.url</name>
<value>ldap://knox:33389</value>
</param>
<param>
<name>main.ldapRealm.contextFactory.authenticationMechanism</name>
<value>simple</value>
</param>
<param>
<name>urls./**</name>
<value>authcBasic</value>
</param>
</provider>
<provider>
<role>identity-assertion</role>
<name>Default</name>
<enabled>true</enabled>
</provider>
<provider>
<role>hostmap</role>
<name>static</name>
<enabled>true</enabled>
<param>
<name>localhost</name>
<value>sandbox,sandbox.hortonworks.com</value>
</param>
</provider>
</gateway>
<service>
<role>HDFSUI</role>
<url>http://master:9870</url>
<url>http://slave1:9870</url>
</service>
<service>
<role>NAMENODE</role>
<url>hdfs://master:9000</url>
<url>hdfs://slave1:9000</url>
</service>
<service>
<role>WEBHDFS</role>
<url>http://master:9870/webhdfs</url>
<url>http://slave1:9870/webhdfs</url>
</service>
<service>
<role>RESOURCEMANAGER</role>
<url>http://master:8088/ws</url>
<url>http://slave1:8088/ws</url>
</service>
<service>
<role>YARNUI</role>
<url>http://master:8088</url>
<url>http://slave1:8088</url>
</service>
</topology>
配置knox的白名单
修改/opt/bigdata/knox/knox-2.0.0/conf/gateway-site.xml
在上面我把knox主机加入了白名单(自己电脑的host配置的knox指向192.168.237.140)
<value>^https?:\/\/(localhost|knox|master|slave1|slave2|127\.0\.0\.1|0:0:0:0:0:0:0:1|::1):[0-9].*$</value>
启动Knox网关,
不能以root账号启动,这里还是以bigdata为例
chown -R bigdata:bigdata /opt/bigdata/knox
sudo chmod -R 775 /opt/bigdata/knox
执行下面命令启动(注意:我这里配置了环境变量,可以直接启动,不用到具体目录下)
gateway.sh start
访问验证
HDFSUI 访问
下面这个地址访问NameNode UI 是不行的, 可以回到本文最开始的地方去了解一下
https://knox:8443/gateway/bdha/hdfs
应该使用下面的地址,用户名和密码可以使用Knox内置的LDAP :admin账户
https://knox:8443/gateway/bdha/hdfs/dfshealth.html?host=http://master:9870#tab-overview
这是默认的密码,使用如下命令查看
cat /opt/bigdata/knox/knox-2.0.0/conf/users.ldif
访问Yarn UI
https://knox:8443/gateway/bdha/yarn
访问Knox的admin界面
https://knox:8443/gateway/manager/admin-ui/
访问Knox Home页面
https://knox:8443/gateway/homepage/home/
自建LDAP服务器(使用FreeIPA)、集成Ranger
目前已经完成,Hadoop大数据安全体系全部实践文章请查看:https://www.tobehacker.com/archives/bigdata-security-practice-article-collection
评论区