Hive 的权限管理

目录

​编辑

一、Hive权限简介

1.1 hive中的用户与组

1.1.1 用户

1.1.2 组

1.1.3 角色

1.2 使用场景

1.2.1 hive cli

1.2.2 hiveserver2

1.2.3 hcatalog api

1.3 权限模型

1.3.1 Storage Based Authorization in the Metastore Server

1.3.2 SQL Standards Based Authorization in HiveServer2

1.3.3 Default Hive Authorization (Legacy Mode)

1.4 hive的超级用户

二、授权管理

2.1 管理命令

2.1.1 角色

2.1.1.1 创建角色

2.1.1.2 删除角色

2.1.1.3 设置角色

2.1.1.4 查看当前具有的角色

2.1.1.5 查看所有存在的角色

2.1.2 用户

2.1.2.1 用户进入admin角色权限

2.1.2.2 查看某用户的所有角色

2.1.2.3 给角色添加用户

2.1.3 用户授权

2.1.3.1 基于数据库

2.1.3.2 基于某张表

2.1.4 组授权

2.1.4.1 基于数据库

2.1.4.2 基于某张表

2.1.5 角色授权

2.1.5.1 基于数据库

2.1.5.2 基于某个表

2.1.6 用户移出权限

2.1.6.1 基于数据库

2.1.6.2 基于某个表

2.1.7 查看用户权限

2.1.7.1 查看某用户在某数据库的权限

2.1.7.2 查看某用户在某表的权限

2.2 权限表

2.2.1 HIVE支持的权限

2.2.2 权限和操作对应关系

2.3 权限分配图

2.4 hive开启权限管理

2.4.1 设置开启hiveserver2权限管理

2.4.2 开启hive权限管理

2.4.3 验证权限


一、Hive权限简介

1.1 hive中的用户与组

hive权限中有用户、组、角色的概念。

1.1.1 用户

即操作系统中的用户,或者在hiveserver2中定义的用户。

1.1.2 组

即操作系统中的组。(组是相对默认授权方式来说的)

1.1.3 角色

是一组权限的集合,参考关系型数据库。
hive内置public角色。public,所有用户都拥有的角色。

1.2 使用场景

目前主要通过以下三种方式使用hive:

hive cli、hiveserver2、hcatalog api

1.2.1 hive cli

hive cli中的用户是操作系统中存在的用户。使用hive cli,只会验证用户的hdfs目录权限。

1.2.2 hiveserver2

hiveserver2中的用户即可以是操作系统中的用户,也可以是hiveserver2中定义的用户。
hiveserver2默认开启用户代理,即用启动hiveserver2的用户来模拟实际用户来提交任务,这时的权限是实际提交的用户的。如果关闭代理,则以启动hiveserver2的用户的权限来执行。

1.2.3 hcatalog api

通过hcatalog api访问hive的用户只会检查用户hdfs上的目录权限。

1.3 权限模型

1.3.1 Storage Based Authorization in the Metastore Server

基于存储权限验证metastore服务:默认情况下hive像dbms一样管理权限,但是有时候为用户授权后用户却没有hdfs权限。因此,当前hive元数据授权的方式是结合dbms权限管理和底层的存储权限管理。当用hive给用户授权时,会先检查用户是hdfs的对应目录是否有相应权限,如果有再执行授权,如果没有则反错。可以对Metastore中的元数据进行保护,但是该种权限模式没有提供更加细粒度的访问控制(例如:列级别、行级别)。

比如给用户授权查询test.t1表时,如果用户在hdfs上没有访问hdfs://user/hive/warehouse/test/t1目录权限则会直接报错。默认是不开启的。

1.3.2 SQL Standards Based Authorization in HiveServer2

基于sql的hiveserver2的权限验证。基于存储的权限验证方式只能验证用户是否有访问目录或文件的权限,但无法执行如列访问之类更精细的控制,因此要用基于sql的权限控制方式。hiveserver2提供了一套完全类似sql的权限验证,可以设置role、用户,可以执行表级、行级、列级授权。

注意:hive cli是不支持sql验证方式的。因为用户可以在cli中改变验证规则甚至禁用该规则。

特点

1)dfs add delete compile reset会被禁止
2)set 命令被限制,只能用来设置少量安全的参数。hive.security.authorization.sqlstd.confwhitelist 参数可设置set可以设置哪些参数。
3)add/drop function以及宏只能被admin角色使用的
4)只能有admin角色来创建永久性函数,其它用户都可以使用
5)admin角色必须使用set role=admin来启动角色

用户和角色

非常类似关系型数据库,用户可以被授予角色。角色是一组权限的集合。
内置了public和admin两个角色,每个用户都有public角色,可以执行基本操作。admin为管理角色。用户登录hiveserver2时执行 show current roles;来查看当前角色。使用set role切换角色。
admin角色用户可以创建其它角色。做admin角色前,做set role切换到admin角色。
role name不分大小写,但是用户名分大小写。

1.3.3 Default Hive Authorization (Legacy Mode)

类似于dbms的授权方式,但是人人都可以执行Grant,当然也可以实现超级用户类来管理hive.开启权限验证后,不配置上面的两个默认就是用这个。

设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。

1.4 hive的超级用户

默认hive是不启用权限验证的,只要使用hive的用户在hdfs上权限即可。默认存在超级用户,用户可以通过自定义类来实现超级用户。使用超级启用必须开始权限验证。

二、授权管理

2.1 管理命令

2.1.1 角色

2.1.1.1 创建角色
CREATE ROLE role_name;
2.1.1.2 删除角色
DROP ROLE role_name;
2.1.1.3 设置角色
SET ROLE (role_name|ALL|NONE);
2.1.1.4 查看当前具有的角色
SHOW CURRENT ROLES;
2.1.1.5 查看所有存在的角色
SHOW ROLES;

2.1.2 用户

2.1.2.1 用户进入admin角色权限
set hive.users.in.admin.role;
set role admin;
2.1.2.2 查看某用户的所有角色
show role grant user user_name
2.1.2.3 给角色添加用户
grant role role_name to user user_name;

2.1.3 用户授权

2.1.3.1 基于数据库
grant select on database default to useradmin;

2.1.3.2 基于某张表
grant select on table test_table to user admin;

2.1.4 组授权

2.1.4.1 基于数据库
grant select on database default to  group  admin;
2.1.4.2 基于某张表
grant select on table ppdata  to  group  admin;

2.1.5 角色授权

2.1.5.1 基于数据库
grant select on database default to  role  admin;
2.1.5.2 基于某个表
grant select on table ppdata to role  admin;

2.1.6 用户移出权限

2.1.6.1 基于数据库
revoke select on database default from useruserB;
2.1.6.2 基于某个表
revoke select on table ppdata from useruserB;

2.1.7 查看用户权限

2.1.7.1 查看某用户在某数据库的权限
show grant role role_name on database database_name;
2.1.7.2 查看某用户在某表的权限
show grant role role_name on [table] table_name;

2.2 权限表

2.2.1 HIVE支持的权限

权限名称含义
ALL所有权限
ALTER允许修改元数据(modify metadata data of object)---表信息数据
UPDATE允许修改物理数据(modify physical data of object)---实际数据
CREATE允许进行Create操作
DROP允许进行DROP操作
INDEX允许建索引(目前还没有实现)
LOCK当出现并发的使用允许用户进行LOCK和UNLOCK操作
SELECT允许用户进行SELECT操作
SHOW_DATABASE允许用户查看可用的数据库

2.2.2 权限和操作对应关系

2.3 权限分配图

2.4 hive开启权限管理

2.4.1 设置开启hiveserver2权限管理

#在hiveserver2-site.xml中加入如下配置
<property><name>hive.security.authorization.enabled</name><value>true</value>
</property>
<property><name>hive.server2.enable.doAs</name><value>false</value>
</property>
<property><name>hive.users.in.admin.role</name><value>root</value>
</property>
<property><name>hive.security.authorization.manager</name>  <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property><name>hive.security.authenticator.manager</name><value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>

2.4.2 开启hive权限管理

#在hive-site.xml中加入如下配置
<property><name>hive.security.authorization.enabled</name><value>true</value>
</property>
<property><name>hive.server2.enable.doAs</name><value>false</value>
</property>
<property><name>hive.users.in.admin.role</name><value>root</value>
</property>
<property><name>hive.security.authorization.manager</name>  <value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
</property>
<property><name>hive.security.authenticator.manager</name><value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
</property>

2.4.3 验证权限

我们不使用账号密码登录hiveserver2,或者使用普通角色用户登录hiveserver2,我们查看下psn4表的数据

执行:select * from psn4;

执行结果:

我们发现,权限管理生效的,不是自己创建的表,没有权限查看。

好了,今天Hive权限管理的相关内容就分享到这里,如果帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/137683.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element树形组件使用之数据授权

<template><div><el-card class"tree-card"><p class"title">数据授权</p><div class"box"><div class"tree"><div class"member">选择授权人员</div><div class…

【python数据分析基础】—pandas中loc()与iloc()的介绍与区别

文章目录 前言一、loc[]函数二、iloc[]函数三、详细用法loc方法iloc方法 总结共同点不同点 前言 我们经常在寻找数据的某行或者某列的时常用到Pandas中的两种方法iloc和loc&#xff0c;两种方法都接收两个参数&#xff0c;第一个参数是行的范围&#xff0c;第二个参数是列的范…

前端编写一个express实现项目部署上线流程

1.先把写好的.vue文件打包成浏览器认识的html、css、js文件 使用npm run bulid命令 2.写一个express服务器 3.创建一个static文件夹&#xff0c;用来存放打包好的html、css、js文件

阿里测开面试大全(一)附答案完整版

万字长文&#xff0c;建议收藏 1 什么是POM&#xff0c;为什么要使用它&#xff1f; POM是Page Object Model的简称&#xff0c;它是一种设计思想&#xff0c;而不是框架。大概的意思是&#xff0c;把一个一个页面&#xff0c;当做一个对象&#xff0c;页面的元素和元素之间操…

day28IO流(字节流字符流)

1. IO概述 1.1 什么是IO 生活中&#xff0c;你肯定经历过这样的场景。当你编辑一个文本文件&#xff0c;忘记了ctrls &#xff0c;可能文件就白白编辑了。当你电脑上插入一个U盘&#xff0c;可以把一个视频&#xff0c;拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢&a…

MSTP+VRRP vlan接口作为网关(2)

SW2 g0/0/2 g0/0/5 g0/0/3 g0/0/4 shutdow 链路失效, vlan 3 的 根桥、master 依然是sw2 PC3的数据包会什么还会到达外部环回口&#xff1f; SW2: dis stp instance 2 brief dis vrrp brief vlan3的主机PC3访问3.3.3.3.数据包发给网关(master)Sw2 pc3 : tracert …

C#中的方法

引言 在C#编程语言中&#xff0c;方法是一种封装了一系列可执行代码的重要构建块。通过方法&#xff0c;我们可以将代码逻辑进行模块化和复用&#xff0c;提高代码的可读性和可维护性。本文将深入探讨C#中的方法的定义、参数传递、返回值、重载、递归等方面的知识&#xff0c;…

Python 自动化运维 100个常见问题.pdf

Python自动化运维能够自动执行重复性任务&#xff0c;包括文件操作、数据处理、系统管理等&#xff0c;从而释放出更多的时间用于更有价值的工作。这有助于降低人工错误的风险&#xff0c;提高团队的工作效率。 以下是我们为大家梳理的Python 自动化运维 的学习路线&#xff0c…

Python爬虫基础(三):使用Selenium动态加载网页

文章目录 系列文章索引一、Selenium简介1、什么是selenium&#xff1f;2、为什么使用selenium3、安装selenium&#xff08;1&#xff09;谷歌浏览器驱动下载安装&#xff08;2&#xff09;安装selenium 二、Selenium使用1、简单使用2、元素定位3、获取元素信息4、交互 三、Phan…

数据包络分析(DEA)——CCR模型

写在前面&#xff1a; 博主本人大学期间参加数学建模竞赛十多余次&#xff0c;获奖等级均在二等奖以上。为了让更多学生在数学建模这条路上少走弯路&#xff0c;故将数学建模常用数学模型算法汇聚于此专栏&#xff0c;希望能够对要参加数学建模比赛的同学们有所帮助。 目录 1. …

四、C#—变量,表达式,运算符(2)

&#x1f33b;&#x1f33b; 目录 一、表达式1.1 什么是表达式1.2 表达式的基本组成 二、运算符2.1 算术运算符2.1.1 使用 / 运算符时的注意事项2.1.2 使用%运算符时的注意事项 2.2 赋值运算符2.2.1 简单赋值运算符2.2.2 复合赋值运算符 2.3 关系运算符2.4 逻辑运算符2.4.1 逻辑…

PIC16F18323电源控制软件

最近使用PIC16F18323设计一个电源的控制软件&#xff0c;主要功能有&#xff1a;检测输入电压&#xff0c;NTC贴片电阻温度监测&#xff0c;电路输出开环检测及输出过压保护锁死等。 PIC16F18323系列单片机有256字节内存&#xff0c;1K字节ROM空间&#xff0c;使用的是高速内部…

微服务生态系统:使用Spring Cloud构建分布式系统

文章目录 什么是微服务&#xff1f;为什么选择Spring Cloud&#xff1f;Spring Cloud的关键组件示例&#xff1a;构建一个简单的微服务步骤1&#xff1a;创建Spring Boot项目步骤2&#xff1a;配置Eureka服务发现步骤3&#xff1a;创建REST控制器步骤4&#xff1a;运行项目步骤…

达梦数据库阻塞与死锁查询

一、数据库阻塞 1.查询被阻塞的信息和引起阻塞的信息 SELECT SYSDATE STATTIME, DATEDIFF(SS, S1.LAST_SEND_TIME, SYSDATE) SS , 被阻塞的信息 WT , S1.SESS_ID WT_SESS_ID, S1.SQL_TEXT WT_SQL_TEXT, S1.STATE WT_STATE, S1.TRX_ID WT_TRX_ID, S1.USER_NAME WT_USER_NAME, …

实用的嵌入式编码技巧:第三部分

每个触发器都有两个我们在风险方面违反的关键规格。“建立时间”是时钟到来之前输入数据必须稳定的最小纳秒数。“保持时间”告诉我们在时钟转换后保持数据存在多长时间。 这些规格因逻辑设备而异。有些可能需要数十纳秒的设置和/或保持时间&#xff1b;其他人则需要少一个数量…

纽禄美卡Neuromeka亮相美国FABTECH,展示用于焊接的3D视觉协作机器人

原创 | 文 BFT机器人 纽禄美卡Neuromeka公司在由美国精密成型协会、美国焊接协会、化工涂料协会等5大协会举办的美国金属加工及焊接展览会FABTECH上精彩亮相。这家总部位于韩国首尔的公司成立于2013年&#xff0c;是机器人解决方案领域的领先供应商&#xff0c;致力于提高各种…

Spark 【分区与并行度】

RDD 并行度和分区 SparkConf setMaster("local[*]") 我们在创建 SparkContext 对象时通常会指定 SparkConf 参数&#xff0c;它包含了我们运行时的配置信息。如果我们的 setMaster 中的参数是 "local[*]" 时&#xff0c;通常代表使用的CPU核数为当前环境…

setState是同步还是异步的?

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 以下内容针对React v18以下版本。 前言 setState到底是同步还是异步&#xff1f;很多人可能面试都被问到过&#xff0c;就好比这道代码输出题&#xff1…

零售超市如何应对消费者需求?非常全面!

随着科技的飞速发展和消费者期望的不断演变&#xff0c;零售行业正经历着一场深刻的革命。传统零售模式逐渐被新零售模式所取代&#xff0c;而其中一个备受关注的元素是自动售货机。 自动售货机不仅在商场、车站和办公楼等高流量地点迅速扩张&#xff0c;还在重新定义我们如何购…

基于SSM的北京集联软件科技有限公司信息管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…