irpas技术客

Hive 如何进行权限控制_程序遠_hive权限控制

网络 2231

目前hive支持简单的权限管理,默认情况下是不开启,这样所有的用户都具有相同的权限,同时也是超级管理员,也就对hive中的所有表都有查看和改动的权利,这样是不符合一般数据仓库的安全原则的。Hive可以是基于元数据的权限管理,也可以基于文件存储级别的权限管理。 为了使用Hive的授权机制,有两个参数必须在hive-site.xml中设置: <property> ????????<name>hive.security.authorization.enabled</name> ????????<value>true</value> ????????<description>enable or disable the hive client authorization</description> </property> <property> ????????<name>hive.security.authorization.createtable.owner.grants</name> ????????<value>ALL</value> ????????<description>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</description> </property> 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;


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #hive权限控制