[ https://issues.apache.org/jira/browse/HIVE-26799?focusedWorklogId=831272&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-831272 ]
ASF GitHub Bot logged work on HIVE-26799: ----------------------------------------- Author: ASF GitHub Bot Created on: 06/Dec/22 06:49 Start Date: 06/Dec/22 06:49 Worklog Time Spent: 10m Work Description: dengzhhu653 commented on code in PR #3821: URL: https://github.com/apache/hive/pull/3821#discussion_r1040564092 ########## ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java: ########## @@ -12550,6 +12550,20 @@ private ParseResult rewriteASTWithMaskAndFilter(TableMask tableMask, ASTNode ast } } + void gatherUserSuppliedFunctions(ASTNode ast) { + int tokenType = ast.getToken().getType(); + if (tokenType == HiveParser.TOK_FUNCTION || + tokenType == HiveParser.TOK_FUNCTIONDI || + tokenType == HiveParser.TOK_FUNCTIONSTAR) { + if (ast.getChild(0).getType() == HiveParser.Identifier) { + this.userSuppliedFunctions.add(unescapeIdentifier(ast.getChild(0).getText())); Review Comment: Could we add the lower-cased function names into `userSuppliedFunctions`? I wonder there are some queries like: `select MIN(a) from table_example`. Does it handle cast properly? for example: `select cast(a as int) from `table_example`. Issue Time Tracking ------------------- Worklog Id: (was: 831272) Time Spent: 1h 40m (was: 1.5h) > Make authorizations on custom UDFs involved in tables/view configurable. > ------------------------------------------------------------------------ > > Key: HIVE-26799 > URL: https://issues.apache.org/jira/browse/HIVE-26799 > Project: Hive > Issue Type: New Feature > Components: HiveServer2, Security > Affects Versions: 4.0.0-alpha-2 > Reporter: Sai Hemanth Gantasala > Assignee: Sai Hemanth Gantasala > Priority: Major > Labels: pull-request-available > Time Spent: 1h 40m > Remaining Estimate: 0h > > When Hive is using Ranger/Sentry as an authorization service, consider the > following scenario. > {code:java} > > create table test_udf(st string); // privileged user operation > > create function Udf_UPPER as 'openkb.hive.udf.MyUpper' using jar > > 'hdfs:///tmp/MyUpperUDF-1.0.0.jar'; // privileged user operation > > create view v1_udf as select udf_upper(st) from test_udf; // privileged > > user operation > //unprivileged user test_user is given select permissions on view v1_udf > > select * from v1_udf; {code} > It is expected that test_user needs to have select privilege on v1_udf and > select permissions on udf_upper custom UDF in order to do a select query on > view. > This patch introduces a configuration > "hive.security.authorization.functions.in.view"=false which disables > authorization on views associated with views/tables during the select query. > In this mode, only UDFs explicitly stated in the query would still be > authorized as it is currently. > The reason for making these custom UDFs associated with view/tables > authorizable is that currently, test_user will need to be granted select > permissions on the custom udf. and the test_user can use this UDF and query > against any other table, which is a security concern. -- This message was sent by Atlassian Jira (v8.20.10#820010)