hive权限管理

  • 1开启hive权限管理配置

<property> 
<name>hive.metastore.authorization.storage.checks</name> 
<value>true</value> 
</property> 
<property>
<name>hive.metastore.execute.setugi</name>
<value>false</value>
</property>
<property> 
<name>hive.security.authorization.enabled</name> 
<value>true</value> 
</property> 
<property> 
<name>hive.security.authorization.createtable.owner.grants</name> 
<value>ALL</value> 
</property> 
<property> 
<name>hive.security.authorization.createtable.user.grants</name> 
<value>etl:ALL;hive:ALL</value> 
</property> 
<property> 
<name>hive.security.authorization.createtable.group.grants </name> 
<value>etl:ALL;hive:ALL</value> 
</property> 
<property> 
<name>hive.security.authorization.task.factory</name> 
<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value> 
</property>

  • 2授权语法
  1. --创建和删除角色
  2. create role role_name;
  3. drop role role_name;
  4. --展示所有roles
  5. show roles
  6. --赋予角色权限
  7. grant select on database db_name to role role_name;
  8. grant select on [table] t_name to role role_name;
  9. --查看角色权限
  10. show grant role role_name on database db_name;
  11. show grant role role_name on [table] t_name;
  12. --角色赋予用户
  13. grant role role_name to user user_name
  14. --回收角色权限
  15. revoke select on database db_name from role role_name;
  16. revoke select on [table] t_name from role role_name;
  17. --查看某个用户所有角色
  18. show role grant user user_name;
  1. 操作(opera)           解释
  2. ALL             所有权限
  3. ALTER           允许修改元数据(modify metadata data of  object)---表信息数据
  4. UPDATE          允许修改物理数据(modify physical data of  object)---实际数据
  5. CREATE          允许进行Create操作
  6. DROP            允许进行DROP操作
  7. INDEX           允许建索引(目前还没有实现)
  8. LOCK            当出现并发的使用允许用户进行LOCK和UNLOCK操作
  9. SELECT          允许用户进行SELECT操作
  10. SHOW_DATABASE   允许用户查看可用的数据库
  • 3.hive开启权限后可能会有异常
Could not create a hive database cloudera_manager_metastore_canary_test_db_hive_HIVEMETASTORE_6da700a6bd79816eb36878227cd598b9
MetaException

cloudera manager 有一个对Hive的健康检查叫 hive Metastore Canary Health Test

引用资料:

There is a known bug with the hive canary that may cause it to fail constantly - the client-configs we are using to connect to the hive metastore are partial. This may be the root cause of this failure. Do you have security enabled on the cluster? Did you change the Hadoop.rpc.protection configuration option? A fix is going to be available very soon with the next release of cloudera manager (5.1,5.2,5.3) and hopefully it will solve the problem. In the meantime you can disable the hive metastore canary.

禁用 hive metastore canary.

CM GUI --> Hive --> Configuration --> search for"metastore_canary_health_enabled" and uncheck(disabled). Save the setting and restart Hue,Oozie and Hive.

4.hive超级管理员权限管理

Hive中没有超级管理员,任何用户都可以进行Grant/Revoke操作,为了完善“超级管理员”,必须添加hive.semantic.analyzer.hook配置,并实现自己的权限控制类。

<property>
<name>hive.semantic.analyzer.hook</name>
<value>com.hive.HiveAdmin</value></property>

实现自定义类com.hive.HiveAdmin

package com.hive;

import java.io.Serializable;
import java.util.List;

import org.apache.hadoop.hive.ql.parse.ASTNode;
import org.apache.hadoop.hive.ql.parse.AbstractSemanticAnalyzerHook;
import org.apache.hadoop.hive.ql.parse.HiveParser;
import org.apache.hadoop.hive.ql.parse.HiveSemanticAnalyzerHookContext;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.session.SessionState;

public class HiveAdmin extends AbstractSemanticAnalyzerHook {
private static String admin = "admin";

@Override
public ASTNode preAnalyze(HiveSemanticAnalyzerHookContext context, ASTNode ast) throws SemanticException {
switch (ast.getToken().getType()) {
case HiveParser.TOK_CREATEDATABASE:
case HiveParser.TOK_DROPDATABASE:
case HiveParser.TOK_CREATEROLE:
case HiveParser.TOK_DROPROLE:
case HiveParser.TOK_GRANT:
case HiveParser.TOK_REVOKE:
case HiveParser.TOK_GRANT_ROLE:
case HiveParser.TOK_REVOKE_ROLE:
String userName = null;
if (SessionState.get() != null && SessionState.get().getAuthenticator() != null) {
userName = SessionState.get().getAuthenticator().getUserName();
}
if (!admin.equalsIgnoreCase(userName)) {
throw new SemanticException(userName + " can‘t use ADMIN options, except " + admin + ".");
}
break;
default:
break;
}
return ast;
}
}

时间: 2024-12-25 11:40:19

hive权限管理的相关文章

HADOOP docker(七):hive权限管理

1. hive权限简介1.1 hive中的用户与组1.2 使用场景1.3 权限模型1.3 hive的超级用户2. 授权管理2.1 开启权限管理2.2 实现超级用户2.3 实现hiveserver2用户名密码2.4 授权2.4.1 角色管理2.4.2 权限管理2.4.3 操作与权限对应关系 文档链接: hive权限管理 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Authorization#LanguageManu

Hive权限之改进

不足 即使开启hive权限认证的情况下,不论什么用户仍然是超级用户.能够通过grant给不论什么人赋予不论什么权限,这样权限认证基本没有意义.因此必须在开启权限认证的同一时候.对运行grant/revoke的实体进行限制,比方仅仅有admin才干 grant privilege on database,仅仅有table owner才干grant privilege on table.BIP中hive眼下是没有开启权限认证的. 改进 针对hive权限的不足以及bip对hive的使用场景.改进后的h

LINUX用户、用户组及权限管理

LINUX用户.用户组及权限管理 一.LINUX权限管理 LINUX权限分为:r,w,x,读,写,可执行 对文件来说: r 可读,即可以使用类似cat等命令查看文件的内容 w 可写,可以编辑或删除此文件: x 可执行,exacutable,可以在命令提示符下当做命令提交给内核运行. 对于目录来说(默认有x权限): r 可以对此目录执行ls以列出内部的所有文件 w 可以在此目录中创建文件 x 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息. 文件 目录 r 可读,即可以使用类

4.2权限管理

权限管理: r: w: x: 三类用户 u g o chown 改变文件属主的(只有管理员可以使用此命令) # chown USENAME FILE,... (属主) #chown -ld /tmp/hi  (查看目录要加d选项) -R 修改目录及其内部文件的属主 --reference=/path/to/somefile file,... 把file的属主和属组改为参考 文件一样 chown USERNAME:GRPNAME file,... chown :GRPNAME file,... c

Hive权限介绍

一.开启权限 目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的.Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理,此次以介绍MetaData权限管理为主.通过以下配置开启Hive身份认证功能进行权限检查: <property> <name>hive.security.authorization.enabled</name

Linux命令(八)权限管理chown、chgrp、chmod、umask

权限管理:r: w:x: 三类用户:u: 属主g: 属组o: 其它用户 chown:改变文件属主(只有管理员可以使用此命令) -R: 修改目录及其内部文件的属主 --reference=/path/to/somefile file,...参考某个文件,设置相关文件权限为参考文件权限,同时改属主,属组chown USERNAME:GROUP file chgrp: chmod:修改文件的权限 修改三类用户的权限: -R --reference=/path/to/somefile file,...

Oracle 表空间和用户权限管理

一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻辑结构的一个重要组件. 表空间可以存放各种应用对象,如表.索引等. 而每一个表空间由一个或多个数据文件组成. 1. 表空间的分类 表空间可分为3类: 永久性表空间:一般保存表.上天.过程和索引等数据.system.sysaux.users.example表空间是默认安装的. 临时性表空间:只用于保存

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere

mysql的权限管理

mysql的权限管理1.授权的基本原则   只授予满足要求的最小权限,但要注意使用户能够授权给别的用户(with grant option)   对用户设置登录的主机限制   删除没有密码的用户   满足密码的复杂度,设置较为复杂的密码   定期检查用户的权限,适当收回不需要的权限   2.给用户授权  mysql> grant all on *.* to 'root'@'10.0.5.150' identified by 'aixocm';  mysql> flush privileges;