hive数据权限管理

这篇博客介绍了Hive的数据权限管理,包括权限说明、如何开启权限管理、权限配置和超级权限的设定。Hive默认不开启权限管理,但可以通过配置实现用户、组和角色的授权,以控制不同用户对数据的访问。此外,文章提到了Hive中缺乏超级管理员的问题,并提供了实现超级管理员的方案,包括编写自定义权限控制类并将其添加到Hive的classpath中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive数据权限管理

1.权限说明

Hive基于元数据库来管理多用户并控制权限。数据分为元数据和数据文件两部分,元数据存储在mysql,而数据文件则是HDFS,控制元数据即控制可访问的数据文件。从mysql存储的Hive元数据表数据字典(metastore数据库)看,Hive是基于元数据mysql管理多用户权限,用户权限信息都存储在元数据表中。要重点理解是,mysql只是保存Hive的元数据,mysql本身的用户和Hive没有关系,Hive只是把自己的用户信息保存在mysql元数据表中。hive能对数据文件的权限控制,未能控制元数据权限,考虑引入Apache Sentry组件。

眼下hive支持简单的权限管理,默认情况下是不开启。这样全部的用户都具有同样的权限,同一时候也是超级管理员,对hive中的全部表都有查看和修改的权利,这样是不符合一般数据仓库的安全原则的。但是Hive的权限控制并不是完全安全的。基本的授权方案的目的是防止用户不小心做了不合适的事情。

Hive授权的核心就是用户、组、角色。
Hive中的角色和平常我们认知的角色是有区别的。Hive中的角色可以理解为一部分有一些相同“属性”的用户或组或角色的集合。这里有个递归的概念,就是一个角色可以是一些角色的集合。

用户
张三 G_db1
李四 G_db2
王五 G_bothdb

如上有三个用户分别属于G_db1、G_db2、G_alldb。
G_db1、G_db2、G_ bothdb分别表示该组用户可以访问数据库1、数据库2和可以访问1、2两个数据库。现在可以创建role_db1和role_db2,分别并授予访问数据库1和数据库2的权限。
这样只要将role_eb 1赋给G_db1(或者该组的用户),将role_eb2赋给G_db2,就可以是实现指定用户访问指定数据库。最后创建role_bothdb指向role_db1、role_db2(role_bothdb不需要指定访问那个数据库),然后role_bothdb授予G_bothdb,则G_bothdb中的用户可以访问两个数据库。

使用和组使用的是Linux机器上的用户和组,而角色必须自己创建。

2.开启权限管理

1.在hive-site.xml文件中配置参数开启权限认证,开启启身份认证后,任何用户必须被grant privilege才能对实体进行操作:
hive.security.authorization.enabled = true

2.表示创建表时自动赋予一些用户或角色相应的权限:
hive.security.authorization.createtable.owner.grants = ALL
hive.security.authorization.createtable.role.grants = admin_role:ALL
hive.security.authorization
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值