Hive权限介绍

一、开启权限

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

<property>

<name>hive.security.authorization.enabled</name>

<value>true</value>

<description>enable or disable the hive client authorization</description>

</property>

开启身份认证后,任何用户必须被grant privilege才能对实体进行操作。

有一个表创建者对所创建表的权限配置:

<property>

<name>hive.security.authorization.createtable.owner.grants</name>

<value>ALL</value>

<description>the privileges automatically granted to the owner whenever a table gets created.

An example like "select,drop" will grant select and drop privilege to the owner of the table</description>

</property>

默认配置是NULL,设置成ALL,表示创建者对其创建的表拥有所有的权限,这样也是比较合理的,同时也可以通过配置在表创建时给某个role赋予权限:

<property>

<name>hive.security.authorization.createtable.role.grants</name>

<value>admin_role:ALL</value>

</property>

当然也可以在创建时对user,group赋予权限

二、权限操作

在hive命令行下可以通过set system:user.name;查看当前hive用户名,也即OS的登录用户。

开启权限认证,在命令行下创建表:

hive>CREATE TABLE auth_test (key int, value string);

Authorization failed:No privilege ‘Create‘ found for outputs { database:default}.Use show grant to get more details.

此时会创建失败,默认情况下用户是没有创建表权限的,执行

hive>Grant create on database defaut to user test

后重新创建表则会成功,可以通过 desc extended auth_test查看包括表所有者在内的表详细信息

默认情况下其他的用户也是是没有权限读取auth_test中任何列,以另外一个用户登录os在hive下执行:

hive>Select key from auth_test;

出现以下错误:

Authorization failed:No privilege ‘Select‘ found for inputs { database:default, table:auth_test, columnName:key}. Use show grant to get more details.

执行:

grant select(key) on table auth_test to user test1;

后查询则可以成功

Grant/revoke语法:

grant/revoke priv_type[column_list] on object_type object to/from principal_type principal_name

查看grant 定义:

show grant user user_name on table table_name;

三、Role:

此外Hive还支持基于role的授权认证,role是一组权限的集合,一个role可以被grant给多个用户,所有拥有role的用户都具有与此role相匹配的权限,通过对role权限的管理可以间接控制用户的权限,因此在一个多用户的大型系统中,role无疑更方便于权限管理。

创建/删除角色:

Create/drop Role role_name

角色分配/回收:

Grant role role_name to user user_name

Revoke role role_name from user user_name

角色授权:

Grant/revoke priv_type[col_List] on object_type object from/to role role_name

查看role定义:

show role grant role role_name

四、权限MetaData:

登录hive元数据库,可以发现以下表:

Db_privs:记录了User/Role在DB上的权限

Tbl_privs:记录了User/Role在table上的权限

Tbl_col_privs:记录了User/Role在table column上的权限

Roles:记录了所有创建的role

Role_map:记录了User与Role的对应关系

Hive权限介绍

时间: 2024-08-02 01:03:45

Hive权限介绍的相关文章

Hive 接口介绍(Web UI/JDBC)

Hive 接口介绍(Web UI/JDBC) 实验简介 本次实验学习 Hive 的两种接口:Web UI 以及 JDBC. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: XfceTerminal: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令: Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写

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

Hive权限之审计

由于在生产环境中大量使用hive,而hive的权限又较弱,如果可以记录所有hive操作,在增强安全性的同时,还能够统计hive表的使用频率:同时如果能够记录hql的开始和结束时间,则能够找出系统中花费时间较多的job,针对性的进行优化,因此跟踪hive的使用轨迹,增强安全的同时也能方便问题定位.如何记录用户操作了?Hive Hook为我们提供的方便的开放接口. 我们对hive的使用主要有两种使用场景,一是平时直接在命令行下执行的hql操作,此时执行hql的实体就是OS的登录用户:另外一种是从we

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><

Android 6.0及以上版本号的执行时权限介绍

执行时权限(Runtime Permission)是Android 6.0( 代号为 Marshmallow,API版本号为 23)及以上版本号新增的功能.相比于以往版本号,这是一个较大变化. 本文将介绍怎样在代码中加入并配置执行时权限功能. 如需阅读英文原文,请您点击这个链接:<Everything every Android Developer must know about new Android's Runtime Permission>. 如需阅读官方执行时权限的相关介绍,请您点击这

hive 自我介绍

hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. 目录 1Hive定义 2Hive 体系结构 ? 用户接口 ? 元数据存储 ? 解释器.编译器.优化器.执行器 ? Hadoop 3Hive 的数据存储 1Hive定义编辑 Hive[

Hive QL 介绍

小结 本次课程学习了 Hive QL 基本语法和操作. 一.实验环境说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: XfceTerminal: Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令: Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可: GVim:非常好用的编辑器,最简单的用法

hive SymlinkTextInputFormat介绍及用法

1.介绍 先摘一段官方介绍,如下: Symlink file is a text file which contains a list of filename / dirname.This input method reads symlink files from specified job input paths and takes the files / directories specified in those symlink files as actual map-reduce inp