一,hive 权限授权模型

1、Storage Based Authorization in the Metastore Server
基于存储的授权(也就是HDFS的授权模型) - 可以对Metastore中的元数据进行保护,但是没有提供更加细粒度的访问控制(例如:列级别、行级别)。
2、SQL Standards Based Authorization in HiveServer2
(grant)基于SQL标准的Hive授权 - 完全兼容SQL的授权模型,推荐使用该模式。

①完全兼容SQL的授权模型
②除支持对于用户的授权认证,还支持角色role的授权认证
一个用户可以具有一个或多个角色
默认包含两种角色:public、admin
3、Default Hive Authorization (Legacy Mode)
hive默认授权 - 设计目的仅仅只是为了防止用户产生误操作,而不是防止恶意用户访问未经授权的数据。

二,选择HiveServer2模式

启动的时候也是用这种方式:HiveServer2/beeline 客户端方式启动

使用该权限控制模式会有一些限制,如下:
1、启用当前认证方式之后,dfs, add, delete, compile, and reset等命令被禁用。
2、通过set命令设置hive configuration的方式被限制某些用户使用。
(可通过修改配置文件hive-site.xml中hive.security.authorization.sqlstd.confwhitelist进行配置)
3、添加、删除函数以及宏的操作,仅为具有admin的用户开放。
4、用户自定义函数(开放支持永久的自定义函数),可通过具有admin角色的用户创建,其他用户都可以使用。
5、Transform功能被禁用。
————————————————
原文链接:https://blog.csdn.net/qq_36299025/article/details/94143198

三,修改配置

<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
<description>开启权限配置</description>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
<description>默认情况下,HiveServer2以提交查询的用户执行查询访问(true),如果hive.server2.enable.doAs设置为false,
         查询将以运行hiveserver2进程的用户访问。</description>
</property> <property>
<name>hive.users.in.admin.role</name>
<value>root</value>
<description>指定超级管理员是哪个用户</description>
</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> # 数据库存储
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.22.220:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>数据库账号</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>数据库密码</value>
</property>

四,HiveServer2/beeline 客户端方式启动

后台启动方式:nohup hiveserver2 1>/dev/null 2>/dev/null &
然后启动 beeline 客户端去连接:
beeline -u jdbc:hive2://127.0.0.1:10000 -n hadoop -u : 指定元数据库的链接信息 -n : 指定用户名和密码

五、角色的添加、删除、查看、设置

DROP ROLE role_name; – 删除角色

SHOW CURRENT ROLES; --查看当前具有的角色:

0: jdbc:hive2://node3:10000> show current roles;
+---------+--+
| role |
+---------+--+
| public |
+---------+--+
row selected (2.533 seconds) #SET ROLE命令会把当前用户切换到指定的角色组。
SET ROLE (role_name|ALL|NONE); --设置角色: 0: jdbc:hive2://node3:10000> set role admin;
No rows affected (0.057 seconds)
CREATE ROLE role_name; – 创建角色: 0: jdbc:hive2://node3:10000> create role trole;
No rows affected (0.097 seconds) SHOW ROLES; – 查看所有存在的角色: 0: jdbc:hive2://node3:10000> show roles;
+---------+--+
| role |
+---------+--+
| admin |
| public |
| trole |
+---------+--+
3 rows selected (0.066 seconds)

六、角色的授予角色、删除、查看

将角色授予给某个用户、角色:
GRANT role_name [, role_name] ...
TO principal_specification [, principal_specification] ...
[ WITH ADMIN OPTION ];
principal_specification
: USER user
| ROLE role 2.移除某个用户、角色的角色 REVOKE [ADMIN OPTION FOR] role_name [, role_name] ...
FROM principal_specification [, principal_specification] ... ; principal_specification
: USER user
| ROLE role 3.查看授予某个用户、角色的角色列表: SHOW ROLE GRANT (USER|ROLE) principal_name; 4.查看属于某种角色的用户、角色列表:
SHOW PRINCIPALS role_name;

六、权限的授予、移除、查看

1.将权限授予给某个用户、角色:
GRANT priv_type [, priv_type ] ...
ON table_or_view_name
TO principal_specification [, principal_specification] ...
[WITH GRANT OPTION]; 2.移除某个用户、角色的权限:
REVOKE [GRANT OPTION FOR]
priv_type [, priv_type ] ...
ON table_or_view_name
FROM principal_specification [, principal_specification] ... ; 3.查看某个用户、角色的权限:
SHOW GRANT [principal_name] ON (ALL| ([TABLE] table_or_view_name)
————————————————

最新文章

  1. 高性能 TCP &amp; UDP 通信框架 HP-Socket v3.4.1
  2. .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧
  3. Excel里内嵌在线翻译
  4. WMI执行远程文件(RPC)
  5. 2015年目标一:学习掌握python
  6. 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错
  7. C# 杨辉三角形算法
  8. Majority Element II 解答
  9. asp.net客户端IP跟踪
  10. python基础篇_005_迭代器和生成器
  11. Centos 7 Ntop 流量分析 安装
  12. 在Visual Studio中使用C++创建和使用DLL
  13. 前端 ----jQuery的介绍
  14. 点火开关分为4个档位,分别是off,acc,IG-on,和ST
  15. mysql数据表的字段操作
  16. asp:Repeater控件使用
  17. Django - 学习目录
  18. EditPlus 5.0 中文版已经发布(3月26日更新)
  19. 解决Android4.3版本下,手机短彩接收中文文件名附件,中文名字的附件无法保存(第二步:解决从从数据库中读取附件文件名,并在长按后保存附件时,中文乱码导致的无法保存附件)
  20. POJ 2449 Remmarguts&#39; Date (K短路 A*算法)

热门文章

  1. C++学习笔记-STL
  2. SQL --------JDBC 用用户名查询用户的信息
  3. Go语言中方法和函数的区别
  4. python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
  5. windows下安装Sonar
  6. JVM 分析工具和查看命令,超详细
  7. 【python tkinter】对于窗口存在的认识
  8. X86逆向12:内存补丁的制作
  9. X86逆向11:F12暂停法的妙用
  10. Django模板(Template)系统