Spark内置的thrift-server(连接hive)的对权限管理支持得并不是很好,只支持了create/drop权限的控制,但是任意用户都可以读任意库/表,委实是一个问题。为了解决这个问题,可以用HDFS的文件权限控制来对表的读权限进行控制。
1.新建用户
由于Hive,HDFS都是用系统用户来做权限控制的,所以需要新建一个系统用户。
比如新建一个mytest用户,如下图所示:
2.给hive表默认在hdfs中存入的路径733权限(rwxr-wx-wx),即mytest用户可以在它下面新建表
3.利用beeline连接thrift-server,并用mytest用户进行连接。同时创建一张tb_mytest表。
4.可以看到/user/hive/warehouse下的3张表
更改它们的权限,让dua1和tb_first只能被pijing和pijing所属用户组的人读
5.此时,用beeline用mytest连接,读取的结果如下:
可以看到,对于tb_mytest表有读的权限,而对于tb_first表则没有读的权限。