Hi all,

I met a problem with Hive Default Authorization - Legacy 
Mode<https://cwiki.apache.org/confluence/display/Hive/Hive+Default+Authorization+-+Legacy+Mode>,
I tried to enable the authorization on hiveserver2, and this is my 
hive-site.xml in hiveserver2 conf:
<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.semantic.analyzer.hook</name>
     <value>com.hive.auth.AuthHook</value>
     <description>just for super administrator</description>
</property>
<property>
     <name>hive.security.authorization.task.factory</name>
     
<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>
</property>

The problem I met is that when I create a view of a table,and grant the select 
privilege of the view to somebody,
then hive will check the view privilege first,and after that,hive check the 
table privilege again.Like this:
create view v_dual as select * from dual;
grant select on v_dual to user test;
And when user test tried to execute this sql : select * from v_dual, hive 
throws an Error: "Error: Error while compiling statement: No privilege 'Select' 
found for inputs { database:default, table:dual, columnName:foo} 
(state=42000,code=403)"
But the hive wiki says that The default authorization model in Hive can be used 
to provide fine grained access control by creating views and granting access to 
views instead of the underlying tables.
So I'm confused that why I am not performing this well as the wiki described.

Reply via email to