Apache Knox是一个REST API网关,旨在为Hadoop生态系统提供统一且安全的访问点。它通过对Hadoop集群中的各种服务(如HDFS、YARN、Hive、HBase等)进行代理和保护,实现认证、授权、审计和HTTP安全的功能。
下载Apache Knox
从Apache Knox官网或Apache镜像下载Knox安装包:
wget https://downloads.apache.org/knox/1.6.0/knox-1.6.0.zip
解压安装包
解压下载的Knox安装包:
unzip knox-1.6.0.zip
cd knox-1.6.0
配置环境变量
配置Knox的环境变量:
export KNOX_HOME=$(pwd)
export PATH=$KNOX_HOME/bin:$PATH
初始化Knox
初始化Knox的配置和密钥库:
knox setup
编辑topologies
文件
在$KNOX_HOME/conf/topologies
目录下,创建或编辑一个顶级域名文件(例如:sandbox.xml
):
<topology>
<gateway>
<provider>
<role>authentication</role>
<name>ShiroProvider</name>
<enabled>true</enabled>
<param>
<name>main.ldapRealm</name>
<value>org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm</value>
</param>
<param>
<name>main.ldapRealm.userDnTemplate</name>
<value>uid={0},ou=users,dc=hadoop,dc=apache,dc=org</value>
</param>
<param>
<name>main.ldapContextFactory</name>
<value>org.apache.hadoop.gateway.shirorealm.KnoxLdapContextFactory</value>
</param>
<param>
<name>main.ldapContextFactory.url</name>
<value>ldap://localhost:33389</value>
</param>
<param>
<name>main.ldapContextFactory.systemUsername</name>
<value>uid=admin,ou=system</value>
</param>
<param>
<name>main.ldapContextFactory.systemPassword</name>
<value>secret</value>
</param>
</provider>
</gateway>
<service>
<role>WEBHDFS</role>
<url>https://namenode:50070/webhdfs/v1</url>
</service>
</topology>
配置安全性
编辑knox.home/conf/ldap-log4j.properties
,配置LDAP连接和认证信息。
启动Knox
启动Knox Gateway:
knox start
验证启动
通过浏览器访问https://<gateway-host>:8443/gateway/sandbox
,验证Knox Gateway是否正常运行。
WebHDFS访问
使用Knox Gateway访问WebHDFS:
curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/webhdfs/v1/?op=LISTSTATUS"
YARN
使用Knox Gateway访问YARN:
curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/ws/v1/cluster"
Hive
使用Knox Gateway访问Hive:
beeline -u "jdbc:hive2://<gateway-host>:8443/knoxsso;ssl=true;sslTrustStore=/path/to/truststore;trustStorePassword=password" -n admin -p admin-password
配置Shiro
编辑knox.home/conf/shiro.ini
,配置LDAP认证:
[main]
ldapRealm = org.apache.hadoop.gateway.shirorealm.KnoxLdapRealm
ldapRealm.contextFactory.url = ldap://localhost:389
ldapRealm.userDnTemplate = uid={0},ou=people,dc=hadoop,dc=apache,dc=org
ldapRealm.contextFactory.systemUsername = uid=admin,ou=system
ldapRealm.contextFactory.systemPassword = secret
启用SSO
在topologies
文件中,配置SSO支持:
<provider>
<role>sso</role>
<name>SSOProvider</name>
<enabled>true</enabled>
<param>
<name>sso.token.ttl</name>
<value>30000</value>
</param>
</provider>
通过掌握Apache Knox的基本安装与配置方法,以及如何使用Knox进行安全的Hadoop集群访问,你可以为Hadoop生态系统提供一个统一的安全访问入口。Knox的认证、授权和审计功能,使其成为大数据环境中实现安全管理的理想选择。