在hue当中设置hive当中数据库的控制权限。
这段时间在搞大数据的集群搭建工作,并且安装了hive的服务,但是没有对其中的数据库的操作权限做限制,每个人都可以对数据库进行增删改查。今天有空做了一下了对hive数据库当中的数据库做一些限制。
我们都是在hue的客户端进行操作hive当中的数据库。操作如下:
(1)在hue界面创建登录用户:
(2) 配置hive权限控制
<property>
<name>hive.security.authorization.enabled</name>
<value>true</value>
</property>
<property>
<name>hive.security.authorization.createtable.owner.grants</name>
<value>ALL</value>
</property>
<property>
<name>hive.security.authorization.task.factory</name>
<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
</property> 如上图所示在hive的配置文件当中加入这些配置,控制hive的执行权限。
(3)给集群服务器添加用户(集群节点都要添加)
useradd bigdata 这里是创建bigdata用户
passwd bigdata 这里是给bigdata用户进行密码的设置。
重启hive服务
然后打开hive的客户端,在客户端上面执行如下命令:
CREATE ROLE bigdata;(创建数据库角色)
GRANT ROLE bigdata TO USER bigdata;(将数据库角色赋予用户)
GRANT CREATE ON DATABASE test TO role bigdata;(给角色test库的建表权限) 这里执行是给数据库test赋予创建表的权限。这里的数据库test自己提前创建好。
GRANT SELECT ON DATABASE test TO role bigdata;(给查询权限) 这里赋予数据库test查询的执行的权限。
grant ALL ON DATABASE test TO USER bigdata; 这里是将所有的权限给数据库test,他的用户的bigdata。
当然了这里既然可以进行赋予权限当然也可以进行撤回权限。
REVOKE ALL on database test from user bigdata;(收回权限) 但是这里的权限一旦你只赋予一部分的权限给数据库test是撤回不了的。具体的报错如下;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo
从上面的截图中可以看出只有赋予全部权限的时候才能将权限撤回来,要不然报错。
我们也可以查看给bigdata角色赋予的权限:
这里我们能看到我们赋予角色创建和查询的权限。然后登陆hue的客户端进行试验。确实是可以进行查询和创建的。为了试一下能不能正真的控制权限我将全部的权限撤回来。然后只给这个角色查询的权限。但是报错。
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo
还是报这个错,最后的解决办法是将创建的的角色bigdata删除掉,然后重新创建。然后再执行命令就可以了。就是这么简单。
这次只给bigdata用户操作hive数据库test的查询权限。创建权限是没有给,然后测试效果如下:
这里显示是没有创建数据的权限的,至此给一个用户操作数据的权限的赋予完成。
详细可以参考:
https://blog.csdn.net/lituao_lt/article/details/78590677