`
liyonghui160com
  • 浏览: 776018 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

配置HiveServer2的安全策略之自定义用户名密码验证

    博客分类:
  • hive
阅读更多

 

 

具体从网上看

 

http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication

 

一共提供了三种安全认证方式,我们通常采用的为第三种自定义的方式。

 

To implement custom authentication for HiveServer2, create a custom Authenticator class derived from the following interface:

从这段话看出来我们要实现一个接口:PasswdAuthenticationProvider (org.apache.hive.service.auth.PasswdAuthenticationProvider)我们来看看这个接口

 

 

 

public interface PasswdAuthenticationProvider {
  /**
   * The Authenticate method is called by the HiveServer2 authentication layer
   * to authenticate users for their requests.
   * If a user is to be granted, return nothing/throw nothing.
   * When a user is to be disallowed, throw an appropriate {@link AuthenticationException}.
   *
   * For an example implementation, see {@link LdapAuthenticationProviderImpl}.
   *
   * @param user - The username received over the connection request
   * @param password - The password received over the connection request
   * @throws AuthenticationException - When a user is found to be
   * invalid by the implementation
   */
  void Authenticate(String user, String password) throws AuthenticationException;
}
 

 

 

有一个方法要实现,实现了这个接口就可以自定义验证用户名密码了。代码不是太多

 

 

package org.apache.hadoop.hive.contrib.auth;

import javax.security.sasl.AuthenticationException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configurable;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hive.contrib.utils.MD5Util;
import org.apache.hive.service.auth.PasswdAuthenticationProvider;


public class XXXXPasswdAuthenticator implements PasswdAuthenticationProvider,Configurable {
	private static final Log LOG=LogFactory.getLog(XXXXPasswdAuthenticator.class);
	private Configuration conf=null;
	
	private static final String HIVE_JDBC_PASSWD_AUTH_PREFIX="hive.jdbc_passwd.auth.%s";
	
	public XXXXPasswdAuthenticator() {
		init();
	}
	
	/**
	 * 
	 */
	public void init(){
		
	}
	
	@Override
	public void Authenticate(String userName, String passwd)
			throws AuthenticationException {
		LOG.info("user: "+userName+" try login.");
		
		String passwdMD5 = getConf().get(String.format(HIVE_JDBC_PASSWD_AUTH_PREFIX, userName));
		
		if(passwdMD5==null){
			String message = "user's ACL configration is not found. user:"+userName;
			LOG.info(message);
			throw new AuthenticationException(message);
		}
		
		String md5 = MD5Util.md5Hex(passwd);
		
		if(!md5.equals(passwdMD5)){
			String message = "user name and password is mismatch. user:"+userName;
			throw new AuthenticationException(message);
		}
		
		LOG.info("user "+userName+" login system successfully.");
		
	}

	@Override
	public Configuration getConf() {
		if(conf==null){
			this.conf=new Configuration();
		}
		
		return conf;
	}

	@Override
	public void setConf(Configuration arg0) {
		this.conf=arg0;
	}

}
 

Add the following properties to the hive-site.xml file, then restart Hiveserver2:

开启自定义验证配置

  

<property>
    <name>hive.server2.authentication</name>
    <value>CUSTOM</value>
  </property>

  <property>
    <name>hive.server2.custom.authentication.class</name>
    <value>org.apache.hadoop.hive.contrib.auth.XXXXPasswdAuthenticator</value>
  </property>

 

相信看懂代码的人应该明白怎么做了,我们要把用户名密码配置到hive-site.xml配置文件中。

 

<property>
    <name>hive.jdbc_passwd.auth.hive_r</name>
    <value>b531c271de4552ca2dec510d318c87f9</value>
    <description/>
</property>

 多个用户可以添加多个property,里面配置的即用户名密码了。

 

以上代码打包jar包,上传到hive/lib下即可实现HiveServer2的安全策略之自定义用户名密码验证了。

 

分享到:
评论
2 楼 liyonghui160com 2015-03-10  
liyonghui160com 写道
一个问题:
验证的用户名必须是hdfs的系统用户吗?还有待验证?不知道看完这篇文章的人有没有验证过。
还是这个用户仅仅就是为了安全验证?
1 楼 liyonghui160com 2015-03-10  
一个问题:
验证的用户名必须是hdfs的系统用户吗?还有待验证?不知道看完这篇文章的人有没有验证过。

相关推荐

    Hiveserver2 Beeline连接设置用户名和密码.docx

    总结,设置 Hiveserver2 Beeline 连接的用户名和密码涉及到自定义认证类的编写、Hive 和 Hadoop 配置文件的修改以及服务的重启。通过这样的方式,你可以为你的大数据环境提供更安全的访问控制,确保只有经过验证的...

    HiveServer2自定义身份验证

    core-site.xml 的群集范围高级配置代码段(安全阀)添加 hadoop.proxyuser.hadoop.hosts * hadoop.proxyuser.hadoop.groups * 如图所示: 2)YARN (MR2 Included)修改core-site.xml配置 java.sql....

    hive systemctl启停hiveserver2和metastore服务.pdf

    然而,手动启动和停止Hive的服务,如HiveServer2和Metastore,可能会变得繁琐和耗时。为了解决这个问题,我们可以创建自定义的Shell脚本以及使用systemd服务来实现一键启停Hive的相关服务。 首先,我们来看一下提供...

    HiveServer2-JDBC及用户权限测试

    本文将详细介绍 HiveServer2 的安全机制,包括配置 Kerberos 认证、启用 Kerberos 认证、远程访问元数据的配置等。 在 CDH4 中,HiveServer2 的安全机制主要通过 Kerberos 认证来实现。Kerberos 是一种广泛使用的...

    HiveServer2 账号密码鉴权类编译 Jar 包

    HiveServer2 账号密码鉴权类编译 Jar 包

    hive2_auth-1.0.jar

    Hiveserver2 Beeline连接设置用户名和密码,通用jar包。放到hive lib路径下即可。用户名密码在配置文件hive-site.xml中配置,具体的配置方式,请参考本站博文。 &lt;name&gt;hive.jdbc_passwd.auth.root&lt;/name&gt;&lt;!--用户...

    cdh6.3.2升级hive至3.x后登陆HiveServer2连接失败.doc

    ### CDH 6.3.2 升级 Hive 至 3.x 后登录 HiveServer2 连接失败问题分析及解决方法 #### 一、问题背景与现象 在将 Cloudera Data Hub (CDH) 6.3.2 版本中的 Hive 升级到 3.x 版本后,用户在尝试通过 JDBC 连接到 ...

    hiveserver2 jdbc

    HiveServer2 JDBC连接还支持配置参数,例如连接超时、重试次数等,可以通过URL中的分号(`;`)隔开的键值对进行设置。此外,对于安全性较高的环境,可能需要使用Kerberos认证,这时需要在URL中指定`principal`参数,并...

    docker-hiveserver2

    docker-hiveserver2

    hiveServer2logparser:HS2 日志的 Perl 解析器

    HiveServer2日志摘要器用法 #download latest scriptwget https://raw.githubusercontent.com/abajwa-hw/hiveServer2logparser/master/hiveServer2logparser.pl#run scriptperl hiveServer2logparser.pl &lt;path&gt;输出...

    Hive的安装与配置是一个相对复杂的过程.pdf

    1. **执行Hive SQL语句**: 通过Hive的命令行界面或客户端工具(如Beeline)连接到HiveServer2,并执行一些基本的查询操作来验证安装与配置是否成功。 #### 八、注意事项 1. **遵循官方文档**: 在安装和配置过程中,...

    php-thrift2-hiveserver2

    php连接hive, 基于thrift2 & hiveserver2 Thrift/transport/TSaslClientTransport.php 这里的username password也得改.... 密码为空的话随便填一个 这个文件务必也要一起修改, 否则涉及mapreduce的计算都无法执行

    hive的安装与配置.zip

    6. **验证安装**:通过Hive CLI或者Beeline客户端连接HiveServer2,执行简单的SQL查询,检查Hive是否正常工作。 配置Hive的过程中,有几个关键点需要注意: 1. **元数据存储**:Hive的元数据包括表名、字段名、...

    UDTF函数不生效问题.doc

    - 确保`hive-site.xml`等配置文件中的设置正确无误,特别是与HiveServer2相关的配置项,如`hive.metastore.uris`等。 4. **清理缓存信息**: - 如果之前的操作仍然没有解决问题,还可以考虑清理HiveServer2的相关...

    apache-hive的安装与配置

    在分布式环境中,可以将 Hive 配置为服务器模式,通过 HiveServer2 提供服务,允许客户端通过 JDBC 或 ODBC 连接进行远程查询。这需要配置 `hive.server2.enable.doAs` 为 true,以及相关安全认证设置。 **8. 性能...

    基于Django和Hadoop集群进行的大数据分析平台

    【作品名称】:基于Django和Hadoop集群进行的大数据分析平台 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目...集群的hiveserver2服务要启动

    hive-server2.jar

    hive自定义安全认证使用

    一种基于数据仓库工具Hive组件的测试方法及系统.pdf

    3. 对集群 HiveServer2 进行第一次集群功能验证,然后执行节点故障模拟动作。 4. 对集群 HiveServer2 进行第二次集群功能验证,以确保系统的稳定运行。 三、系统架构 该系统架构如图所示: HiveServer2 集群 | |--...

Global site tag (gtag.js) - Google Analytics