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

标签: hiveserver2 安全策略 定义 | 发表时间:2015-03-02 09:08 | 作者:liyonghui160com
出处:http://www.iteye.com

 

 

具体从网上看

 

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的安全策略之自定义用户名密码验证了。

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [hiveserver2 安全策略 定义] 推荐:

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

- - 互联网 - ITeye博客
一共提供了三种安全认证方式,我们通常采用的为第三种自定义的方式. 从这段话看出来我们要实现一个接口:PasswdAuthenticationProvider (org.apache.hive.service.auth.PasswdAuthenticationProvider)我们来看看这个接口. 有一个方法要实现,实现了这个接口就可以自定义验证用户名密码了.

MySQL安全策略

- - OurMySQL
   MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,如何保证MySQL的数据安全.    MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,如何保证MySQL的数据安全.    数据安全如果只靠MySQL应用层面显然是不够的,是需要在多个层面来保护的,包括网络、系统、逻辑应用层、数据库层等.

个人密码安全策略

- owen - 月光博客
  我们现在处于网络时代,时常要登录各种网站、论坛、邮箱、网上银行等等,这些访问常需要帐户+密码的身份认证,因此我们不断地注册用户,就有了数不清的网络帐户和密码. 大多数人为了便于记忆,习惯只用一个常用的网络用户名、邮箱和密码,这是非常危险的. 那么,网上的密码我们应该怎么设置,才能相对安全一些呢.

java.security.Security 支持的安全策略和算法

- - ITeye博客
java.security.Security 支持的安全策略和算法. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

W3C完成HTML5.0定义

- - Solidot
W3C宣布公布HTML5和Canvas2D规格的完整定义. 虽然它们还没有成为W3C标准,但特性已经完成,这意味着企业和开发者可以根据目前的规格去实现和开发HTML5 Web应用. W3C称HTML5是开放Web平台的基石,为跨平台应用提供一个完整的编程环境. 根据W3C的发布计划,2012年底发布HTML5.0候选推荐规格,然后着手开发HTML5.1规格草案;2014年发布HTML5.0推荐规格和HTML5.1候选推荐规格.

JSP自定义方法库

- - CSDN博客编程语言推荐文章
如果JSTL的方法库没有满足需要,可以使用自定义方法进行扩展. public static int length(Object obj){ //返回对象的长度. 自定义方法的声明写在 标记里面,格式为.       返回值 方法名(参数1类型,参数2类型……).

Lucene(3.5)自定义QueryParser

- - zzm
//  content: 全国软件专业人才设计与开发大赛  . //  Lucene实战(第二版) Lucene in action  .     private static final Analyzer analyzer = new StandardAnalyzer(version);//和索引时用的分词器一致  .

Android自定义Lint实践

- - 美团点评技术团队
Android Lint是Google提供给Android开发者的静态代码检查工具. 使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正. 为保证代码质量,美团在开发流程中加入了代码检查,如果代码检测到问题,则无法合并到正式分支中,这些检查中就包括Lint.

map-reduce自定义分组自定义排序

- - 行业应用 - ITeye博客
1 * @author zm * * 当第一列相同时,求出第二列的最小值---> 由要求分析如下: * 1 必然以 row1来进行分组. * 2 必然也是以 row1,row2作为一个整体来进行比较才能有 当第一列相同时,在比较第二列的状态发生 * 3 mr中,执行流程是 -->-->--> *.

CSS自定义滚动条样式

- 恋上女人香 - 前端观察
相信很多人都遇到过在设计中自定义滚动条样式的情景,之前我都是努力说服设计师接受浏览器自带的滚动条样式,但是这样只能规避还是解决不了问题,最近在项目中遇到了,正好来总结一下. 当然,兼容所有浏览器的滚动条样式目前是不存在的. IE是最早提供滚动条的样式支持,嗯,好多年了,但是其它浏览器一直没有支持,IE独孤求败了.