Hive authorization with remote metastore does not work ------------------------------------------------------
Key: HIVE-2554 URL: https://issues.apache.org/jira/browse/HIVE-2554 Project: Hive Issue Type: Bug Components: Security Affects Versions: 0.7.1 Environment: CentOS release 5.7 Hadoop 0.20.2 (pseudo-distributed mode) Reporter: Alex Holmes *Install Hadoop 0.20.2* # Explode Hadoop 0.20.2 tarball # Configure for pseudo-distributed mode from [Hadoop site|http://hadoop.apache.org/common/docs/r0.20.2/quickstart.html#PseudoDistributed] # Create user "hadoop" # Start all Hadoop daemons as user hadoop *Install Hive 0.7.1* # Explode Hive 0.7.1 tarball # Create user "hive" # Configure Hive to run with remote metastore, and with authentication. Contents of hive-site.xml are: {code} <configuration> <property> <name>hive.metastore.local</name> <value>false</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://localhost:9083</value> </property> <property> <name>hive.security.authorization.enabled</name> <value>true</value> </property> </configuration> {code} # Create and open-up the Hive-related directories in HDFS hadoop fs -mkdir /user/hive/warehouse hadoop fs -chmod -R 777 /user/hive/warehouse hadoop fs -mkdir /tmp hadoop fs -chmod -R 777 /tmp *Run the metastore* ./hive --service metastore *Run the hive client* The exception below is thrown regardless of which user is running the metastore and client (tried as both the hive and hadoop users, and combinations thereof). {code} ./hive hive> set hive.security.authorization.enabled=false; hive> CREATE TABLE pokes (foo INT, bar STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '-' STORED AS TEXTFILE; OK hive> LOAD DATA LOCAL INPATH '/tmp/foobar.txt' OVERWRITE INTO TABLE pokes; Copying data from file:/tmp/foobar.txt Copying file: file:/tmp/foobar.txt Loading data to table default.pokes Deleted hdfs://localhost:9000/user/hive/warehouse/pokes OK Time taken: 0.443 seconds hive> grant select on table pokes to user hive; OK Time taken: 0.191 seconds hive> set hive.security.authorization.enabled=true; hive> show grant user hive on table pokes; OK database default table pokes principalName hive principalType USER privilege Select grantTime 1320642081 grantor hadoop Time taken: 0.084 seconds hive> select * from pokes; FAILED: Hive Internal Error: org.apache.hadoop.hive.ql.metadata.HiveException(org.apache.thrift.TApplicationException: get_privilege_set failed: unknown result) org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.thrift.TApplicationException: get_privilege_set failed: unknown result at org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1617) at org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserPriv(DefaultHiveAuthorizationProvider.java:201) at org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserAndDBPriv(DefaultHiveAuthorizationProvider.java:226) at org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorizeUserDBAndTable(DefaultHiveAuthorizationProvider.java:259) at org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider.authorize(DefaultHiveAuthorizationProvider.java:159) at org.apache.hadoop.hive.ql.Driver.doAuthorization(Driver.java:531) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:393) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:736) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:164) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:241) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:456) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.util.RunJar.main(RunJar.java:156) Caused by: org.apache.thrift.TApplicationException: get_privilege_set failed: unknown result at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_privilege_set(ThriftHiveMetastore.java:2414) at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_privilege_set(ThriftHiveMetastore.java:2379) at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.get_privilege_set(HiveMetaStoreClient.java:1042) at org.apache.hadoop.hive.ql.metadata.Hive.get_privilege_set(Hive.java:1615) ... 15 more {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira