Apache Knox的使用,提供安全的Hadoop集群访问

person ~~情~非~    watch_later 2024-07-20 17:46:44
visibility 165    class Knox,大数据    bookmark 专栏

Apache Knox的使用,提供安全的Hadoop集群访问

什么是Apache Knox

Apache Knox是一个REST API网关,旨在为Hadoop生态系统提供统一且安全的访问点。它通过对Hadoop集群中的各种服务(如HDFS、YARN、Hive、HBase等)进行代理和保护,实现认证、授权、审计和HTTP安全的功能。

Apache Knox的安装

环境准备

  • 操作系统:建议使用Linux(如CentOS、Ubuntu等)。
  • Java:需要安装Java JDK 1.8或更高版本。
  • Hadoop集群:已经配置好的Hadoop集群。

安装步骤

  1. 下载Apache Knox

    从Apache Knox官网或Apache镜像下载Knox安装包:

    wget https://downloads.apache.org/knox/1.6.0/knox-1.6.0.zip
    
  2. 解压安装包

    解压下载的Knox安装包:

    unzip knox-1.6.0.zip
    cd knox-1.6.0
    
  3. 配置环境变量

    配置Knox的环境变量:

    export KNOX_HOME=$(pwd)
    export PATH=$KNOX_HOME/bin:$PATH
    
  4. 初始化Knox

    初始化Knox的配置和密钥库:

    knox setup
    

配置Apache Knox

配置顶级域名

  1. 编辑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>
    
  2. 配置安全性

    编辑knox.home/conf/ldap-log4j.properties,配置LDAP连接和认证信息。

启动Knox Gateway

  1. 启动Knox

    启动Knox Gateway:

    knox start
    
  2. 验证启动

    通过浏览器访问https://<gateway-host>:8443/gateway/sandbox,验证Knox Gateway是否正常运行。

使用Knox进行安全访问

访问HDFS

  1. WebHDFS访问

    使用Knox Gateway访问WebHDFS:

    curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/webhdfs/v1/?op=LISTSTATUS"
    

访问其他Hadoop服务

  1. YARN

    使用Knox Gateway访问YARN:

    curl -ku admin:admin-password -X GET "https://<gateway-host>:8443/gateway/sandbox/ws/v1/cluster"
    
  2. 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
    

高级配置

配置LDAP认证

  1. 配置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

  1. 启用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的认证、授权和审计功能,使其成为大数据环境中实现安全管理的理想选择。

评论区
评论列表
menu