EMR上Hive ACL配置

  • hive-site.xml配置(配置中设置了hadoop为admin用户):
<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>hadoop</value>
</property>
<property>
	<name>hive.security.metastore.authorization.manager</name>
	<value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider,org.apache.hadoop.hive.ql.security.authorization.MetaStoreAuthzAPIAuthorizerEmbedOnly</value>
</property>
<property>
	<name>hive.security.metastore.authenticator.manager</name>
	<value>org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator</value>
</property>
<property>
	<name>hive.security.authorization.manager</name>
	<value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdConfOnlyAuthorizerFactory</value>
</property>
  • hiveserver2-site.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
		<name>hive.security.authorization.manager</name>
		<value>org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory</value>
	</property>

	<property>
		<name>hive.security.authorization.enabled</name>
		<value>true</value>
	</property>

	<property>
		<name>hive.security.authenticator.manager</name>
		<value>org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator</value>
	</property>
</configuration>
  • 重启hiveserver2

到目前为止,hive就已经支持acl功能了。现在来看看如果使用acl功能(常用命令)。

  • beeline登录hive(使用admin账号:hadoop):

beeline -u "jdbc:hive2://localhost:7001/" -n hadoop

  • 切换当前用户为admin权限:set role admin;
  • 角色命令: 创建角色:create role role_name; 查看角色:drop role role_name; 删除角色:drop role role_name;
  • 角色权限命令: 给角色设置权限:grant select on table table_name to role role_name; 解除:revoke select on table table_name from role role_name; 查看角色的权限:show grant role role_name on table table_name;
  • 权限包含: 1.SELECT:赋予读取某个对象的权限 2.INSERT:赋予添加数据至某个对象(表)的权限 3.UPDATE:赋予在某个对象(表)上执行更新操作的权限; 4.DELETE:赋予在某个对象(表)上删除数据的权限; 5.ALL:赋予在某个对象上的所有权限(被转换成拥有上面四个权限)
  • 角色用户命令: 给用户分配角色:grant role_name to USER user_name; 解除使用:revoke role_name from USER user_name; 查询用户有什么角色:show role grant user user_name; 查看角色下有哪些用户:show principals role_name;

目前为止,大概知道了如果使用hive的acl了,接下来实际给个例子,使用acl:

=====创建表及数据 create table if not exists table1 (name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; create table if not exists table2 (name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; create table if not exists table3 (name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

insert into table1 values ('t1-1'),('t1-2'); insert into table2 values ('t2-1'),('t2-2'); insert into table3 values ('t3-1'),('t3-2'); ========权限设计 1. 数据组(dev可读可写tabel1和table2),运营组(om可读table1和table2),boss组(可读table1、table2和table3,同时可写table3) 2. 给dev_1用户分配dev的role,给om_1分配om的role,给boss_1分配boss的role

=======实操 利用hadoop登录:beeline -u "jdbc:hive2://localhost:7001/" -n hadoop 切换admin角色:set role admin; 创建角色: create role dev; create role om; create role boss; show roles;

角色分配权限: grant ALL on table table1 to role dev; grant ALL on table table2 to role dev; grant select on table table1 to role om; grant select on table table2 to role om; grant select on table table1 to role boss; grant select on table table2 to role boss; grant ALL on table table3 to role boss; show grant role dev on table table1; show grant role om on table table1; show grant role boss on table table1; show grant role dev on table table2; show grant role om on table table2; show grant role boss on table table2; show grant role dev on table table3; show grant role om on table table3; show grant role boss on table table3;

让用户绑定角色: grant dev to USER dev_1; grant om to USER om_1; grant boss to USER boss_1; show role grant user dev_1; show role grant user om_1; show role grant user boss_1;

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

MySQL MHA配置常见问题

    MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动...

9410
来自专栏爱撒谎的男孩

搭建工程

23140
来自专栏软件

Xtrabackup实现数据的备份与恢复

Xtrabackup介绍 Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(...

30170
来自专栏好好学java的技术栈

从零开发一个JavaWeb项目要点「建议收藏」

本文章详细的列出了开发一个传统JavaWeb项目需要注意的要点,从环境准备开始到三层架构搭建,需要注意的地方全部罗列出来。本文作者「张丰哲」欢迎点击阅读原文,关...

15740
来自专栏我的博客

TP字段缓存

TP字段缓存DB_FIELDS_CACHE,默认开启 1、影响(减少数据库查询) 2、但是也会有一个问题,保存规则是按照数据库+model名字(小写)来的,这样...

37850
来自专栏Android知识点总结

SpringBoot-04-之模板引擎--thymeleaf

19830
来自专栏编程

Hue中使用Oozie创建Shell工作流在脚本中切换不同用户

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

28190
来自专栏xcywt

《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本

25.1 MySQL数据库 /* 但是我在虚拟机上安装的时候居然不提示输入密码。 这个可以参考http://blog.csdn.net/sinat_213025...

22470
来自专栏小夜博客

使用LNMP常见问题解答

422130
来自专栏性能与架构

体验 MySQL InnoDB Cluster

Mysql高可用环境的搭建比较麻烦,这使很多人都不去搭建高可用环境,等到有问题时再说 最近Mysql的动作很快,新版本的发布频繁,推出很多新的好用功能及插件,其...

89280

扫码关注云+社区

领取腾讯云代金券