Hive--如何控制权限

前言

  • Hive从0.10版本(包含0.10版本)以后可以通过元数据来控制权限,Hive-0.10之前的版本对权限的控制主要是通过Linux的用户和用户组来控制,不能对Hive表的CREATE、SELECT、DROP等操作进行控制,当然Hive基于元数据来控制权限也不是安全的,目的就是为了防止用户不小心做了不该做的操作。
  • 项目中根据不同的项目组,不同的业务线,来划分不同的角色权限,便于管理维护,减少错误概率。

准备

  • 首先需要开启hive-site.xml两个参数,一个是开启权限认证,一个是表的创建者对表拥有所有权限
    • hive.security.authorization.enabled参数是开启权限验证,默认为false
    • hive.security.authorization.createtable.owner.grants参数是指表的创建者对表拥有所有权限,例如创建一个表table1,这个用户对表table1拥有SELECT、DROP等操作。还有个值是NULL,表示表的创建者无法访问该表,这个肯定是不合理的。
hive.security.authorization.enabled   
true   
  
   
hive.security.authorization.createtable.owner.grants   
ALL   
  • Hive中的权限的核心分为User(用户)、Group(组)、Role(角色)
    • 和普通的理解不同,Hive中所谓的角色就是一部分或者有一些相同"属性"的用户或组或角色的集合。这里有个递归的概念,就是一个角色可以是一些角色的集合。
    • 用户和组使用的是Linux机器上的用户和组,而角色必须在Hive创建

创建角色

create role xxx

删除角色

drop role xxx

授权

grant role xxx To

撤销

revoke role xxx from

具体功能权限

  • all
  • alter–修改元数据
  • update–修改物理数据
  • create
  • drop
  • index–建索引(目前还没实现)
  • lock–出现并发时允许用户进行lock和unlock操作
  • select
  • show_database

举个栗子:

用户
张三group_db1
李四group_db2
王五group_bothdb
  • 有三个用户分别属于group_db1、group_db2、group _bothdb。group _db1、group _db2、group _bothdb分别表示该组用户可以访问数据库1、数据库2和可以访问1、2两个数据库。现在可以创建role_db1和role_db2,分别并授予访问数据库1和数据库2的权限。这样只要将role_db1赋给group_db1(或者该组的所有用户),将role_db2赋给group_db2,就可以是实现指定用户访问指定数据库。最后创建role_bothdb指向 role_db1、role_db2(role_bothdb不需要指定访问那个数据库),然后role_bothdb授予group_bothdb,则group_bothdb中的用户可以访问两个数据库。
  • 用户和组使用的是Linux机器上的用户和组,而角色必须在hive创建。
  • 注意:如果有一个属于组group1的用户jayliu,他通过cli连接到远程的HiveServer上执行操作,而远程的Server上有一个用户jayliu属于group2组,则在权限控制中jayliu是对应的group2组的。

创建和删除角色

  • Hive中的角色定义与关系型数据库中角色的定义类似,它是一种机制,给予那些没有适当权限的所有用户分配一定的权限。下面介绍一下Hive中角色的应用。
  • 1)角色的创建。
    • 创建一个role_test1角色,命令如下:
hive> create role role_test1;  

OK  

Time taken: 0.106 seconds  
  • 2)删除角色。
    • 删除role_test1角色,命令如下:
hive> DROP ROLE role_test1;  

OK  

Time taken: 6.483 seconds  

角色的授权和撤销

  • 角色的授权(GRANT)就是给角色授予创建表、查询表等操作,撤销(REVOKE)反之。
  • 1)把role_test1角色授权给jayliu用户,命令如下:
grant role role_test1 to user jayliu;
  • 2)查看jayliu用户被授权的角色,命令如下:
SHOW ROLE GRANT user jayliu;
  • 3)取消jayliu用户的role_test1角色,操作命令如下:取消jayliu用户的role_test1角色,操作命令如下:
revoke role role_test1 from user jayliu;

为角色分配具体的功能权限

  • Hive支持的权限控制如下表所示:
    在这里插入图片描述
  • 1)把select权限授权给role_test1角色,命令如下:
grant select on database default to role role_test1;

--也可以直接分配给用户

grant select on database default to user jayliu;
  • 2)查看role_test1被授予那些操作权限,命令如下:
show grant role role_test1 on database default;

show grant user jayliu on database default;
  • 3)收回role_test1的select权限,操作如下:
revoke select on database default from role role_test1;

revoke select on database default from user jayliu;
  • 4)查看role_test1拥有那些权限:
show grant role role_test1 on database default;

show grant user jayliu on database default; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值