Hive 如何进行权限控制

Hive 如何进行权限控制,第1张

Hive 如何进行权限控制

目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理。
为了使用Hive的授权机制,有两个参数必须在hive-site.xml中设置:

        hive.security.authorization.enabled
        true
        enable or disable the hive client authorization


        hive.security.authorization.createtable.owner.grants
        ALL
        the privileges automatically granted to the owner whenever a table gets created. Anexample like "select,drop" will grant select and drop privilege to the owner of the table

Hive支持以下权限:


Hive授权的核心就是用户(user)、组(group)、角色(role)。
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_eb1赋给G_db1(或者该组的所有用户),将role_eb2赋给G_db2,就可以是实现指定用户访问指定数据库。最后创建role_bothdb指向role_db1、role_db2(role_bothdb不需要指定访问那个数据库),然后role_bothdb授予G_bothdb,则G_bothdb中的用户可以访问两个数据库。
Hive的用户和组使用的是Linux机器上的用户和组,而角色必须自己创建。


角色管理:
--创建和删除角色
create role role_name;
drop role role_name;
--展示所有roles
show roles
--赋予角色权限
grant select on database db_name to role role_name;
grant select on [table] t_name to role role_name;
--查看角色权限
show grant role role_name on database db_name;
show grant role role_name on [table] t_name;
--角色赋予用户
grant role role_name to user user_name
--回收角色权限
revoke select on database db_name from role role_name;
revoke select on [table] t_name from role role_name;
--查看某个用户所有角色
show role grant user user_name;

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5701661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存