本文要点不在于配置,需要学习怎么配置请看https://blog.51cto.com/smilemask/2043930
1.add jar无法使用,原因是因为sentry认为引用第三方jar包可以绕过权限来获取到你想要的数据,那么真实需要引用如何解决?cdh 提供一个参数hive.reloadable.aux.jars.path,该参数已经替换原来aux jar path,在你上传到hiveserver2后指定lib目录下,如果有包名的重复,可以使用reload命令重新加载。那么如何开发需要测试怎么办呢?通过创建一个不存在的函数绕过,举例,我想引用一个json-serde包,在hql里执行CREATE FUNCTION testfc AS 'test' using jar 'hdfs:///tmp/json-serde_jar_file.jar'; 这句话会报错,但是会把你的jar包引用到hs2中,然后执行sql语句即可,需要注意grant uri授权
2.开启hdfs sentry同步。基本上hive开启sentry后也会开启次选项,这样权限在sql层面和文件系统层面都得到了安全限制。开启后,你指定的同步目录比如/user/hive/warehouse 下的库或者表会变成hive:hive 771 ,然后用hadoop fs getfacl查看可以得到这个库或者表一些特殊用户权限,这个权限和hive或者impala上设置的权限就一样了。当sentry退回后,用户和组权限会变回原来的设置。值得注意的是,如果是在hdfs新增的数据,那么还是开启hdfs同步后的权限,hive:hive 771,这个需要额外处理,因为用户都无法查看这个数据。如果是一些外部表路径比如/tmp/aaa/database/table ,在你设置额外同步目录/tmp/aaa时,aaa目录并不会有771 hive:hive权限,到库层级才会变成那样,原因是hive里面有默认配置的数仓目录