现象
在有Sentry对Hive做权限访问控制的情况下,发现使用trafodion用户(属于trafodion用户组)仍然有对所有Hive表的访问权限。
分析
首先使用以下两条命令查看trafodion用户以及trafodion用户组对表是否具有权限,
java com.esgyn.security.util.UserPrivTest trafodion hive.hive.t1
java com.esgyn.security.util.AuthTest trafodionhive.hive.t1
以上两条命令中,其中条用于检查trafodion用户是否有权限访问Hive中的t1表,第二条用于检查trafodion用户组是否有权限访问t1表。
以上输出结果发现,trafodion用户和组确实没有相关的权限,因此定位与数据库的DCS服务有关,应该属于数据库本身的问题。
解决
通过cat $TRAF_HOME/etc/ms.env | grep SENTRY找到以下两行,
SENTRY_SECURITY_FOR_HIVE=
SENTRY_SECURITY_GROUP_MODE=SHELL
修改为
SENTRY_SECURITY_FOR_HIVE=TRUE
SENTRY_SECURITY_GROUP_MODE=SHELL