[ 
https://issues.apache.org/jira/browse/RANGER-2754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17104891#comment-17104891
 ] 

t oo commented on RANGER-2754:
------------------------------

332 prestosql release's 
[https://github.com/prestosql/presto/commit/0039dd8b2922df2c2ce57ccd337c357e5136bc3f]
 seems to have broken column masking (tried MASK_SHOW_LAST_4):

io.prestosql.spi.PrestoException: line 1:16: Invalid column mask for 
'hive.meta.presto_queries.username': Access Denied: Cannot execute function 
regexp_replace
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.analyzeColumnMask(StatementAnalyzer.java:2537)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.lambda$analyzeFiltersAndMasks$13(StatementAnalyzer.java:1073)
 at com.google.common.collect.ImmutableList.forEach(ImmutableList.java:405)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.analyzeFiltersAndMasks(StatementAnalyzer.java:1073)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:1057)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitTable(StatementAnalyzer.java:300)
 at io.prestosql.sql.tree.Table.accept(Table.java:53)
 at io.prestosql.sql.tree.AstVisitor.process(AstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:315)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.analyzeFrom(StatementAnalyzer.java:2307)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:1257)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitQuerySpecification(StatementAnalyzer.java:300)
 at io.prestosql.sql.tree.QuerySpecification.accept(QuerySpecification.java:144)
 at io.prestosql.sql.tree.AstVisitor.process(AstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:315)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:325)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:910)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.visitQuery(StatementAnalyzer.java:300)
 at io.prestosql.sql.tree.Query.accept(Query.java:107)
 at io.prestosql.sql.tree.AstVisitor.process(AstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.process(StatementAnalyzer.java:315)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer.analyze(StatementAnalyzer.java:292)
 at io.prestosql.sql.analyzer.Analyzer.analyze(Analyzer.java:83)
 at io.prestosql.sql.analyzer.Analyzer.analyze(Analyzer.java:75)
 at io.prestosql.execution.SqlQueryExecution.analyze(SqlQueryExecution.java:217)
 at io.prestosql.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:176)
 at io.prestosql.execution.SqlQueryExecution.<init>(SqlQueryExecution.java:93)
 at 
io.prestosql.execution.SqlQueryExecution$SqlQueryExecutionFactory.createQueryExecution(SqlQueryExecution.java:705)
 at 
io.prestosql.dispatcher.LocalDispatchQueryFactory.lambda$createDispatchQuery$0(LocalDispatchQueryFactory.java:121)
 at 
io.prestosql.$gen.Presto_014fffb_dirty__333____20200511_183941_2.call(Unknown 
Source)
 at 
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
 at 
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
 at 
com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
 at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.base/java.lang.Thread.run(Unknown Source)
Caused by: io.prestosql.spi.PrestoException: line 1:6: Access Denied: Cannot 
execute function regexp_replace
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:930)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:327)
 at io.prestosql.sql.tree.FunctionCall.accept(FunctionCall.java:110)
 at 
io.prestosql.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:350)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitCast(ExpressionAnalyzer.java:1147)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitCast(ExpressionAnalyzer.java:327)
 at io.prestosql.sql.tree.Cast.accept(Cast.java:91)
 at 
io.prestosql.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:350)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer.analyze(ExpressionAnalyzer.java:288)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer.analyzeExpression(ExpressionAnalyzer.java:1601)
 at 
io.prestosql.sql.analyzer.StatementAnalyzer$Visitor.analyzeColumnMask(StatementAnalyzer.java:2525)
 ... 35 more
Caused by: io.prestosql.spi.security.AccessDeniedException: Access Denied: 
Cannot execute function regexp_replace
 at 
io.prestosql.spi.security.AccessDeniedException.denyExecuteFunction(AccessDeniedException.java:436)
 at 
io.prestosql.spi.security.SystemAccessControl.checkCanExecuteFunction(SystemAccessControl.java:491)
 at 
io.prestosql.security.AccessControlManager.lambda$checkCanExecuteFunction$68(AccessControlManager.java:802)
 at 
io.prestosql.security.AccessControlManager.systemAuthorizationCheck(AccessControlManager.java:889)
 at 
io.prestosql.security.AccessControlManager.checkCanExecuteFunction(AccessControlManager.java:802)
 at 
io.prestosql.security.ForwardingAccessControl.checkCanExecuteFunction(ForwardingAccessControl.java:339)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:970)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:327)
 at io.prestosql.sql.tree.FunctionCall.accept(FunctionCall.java:110)
 at 
io.prestosql.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:350)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.getCallArgumentTypes(ExpressionAnalyzer.java:1012)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:914)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:327)
 at io.prestosql.sql.tree.FunctionCall.accept(FunctionCall.java:110)
 at 
io.prestosql.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:350)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitLambdaExpression(ExpressionAnalyzer.java:1317)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitLambdaExpression(ExpressionAnalyzer.java:327)
 at io.prestosql.sql.tree.LambdaExpression.accept(LambdaExpression.java:60)
 at 
io.prestosql.sql.tree.StackableAstVisitor.process(StackableAstVisitor.java:27)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.process(ExpressionAnalyzer.java:350)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer.analyze(ExpressionAnalyzer.java:294)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer.access$2200(ExpressionAnalyzer.java:174)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.lambda$getCallArgumentTypes$2(ExpressionAnalyzer.java:1008)
 at 
io.prestosql.sql.analyzer.TypeSignatureProvider.getTypeSignature(TypeSignatureProvider.java:60)
 at 
io.prestosql.metadata.SignatureBinder$FunctionSolver.update(SignatureBinder.java:791)
 at 
io.prestosql.metadata.SignatureBinder.iterativeSolve(SignatureBinder.java:417)
 at 
io.prestosql.metadata.SignatureBinder.bindVariables(SignatureBinder.java:124)
 at io.prestosql.metadata.SignatureBinder.bind(SignatureBinder.java:101)
 at 
io.prestosql.metadata.FunctionResolver.identifyApplicableFunctions(FunctionResolver.java:181)
 at 
io.prestosql.metadata.FunctionResolver.matchFunction(FunctionResolver.java:151)
 at 
io.prestosql.metadata.FunctionResolver.matchFunctionExact(FunctionResolver.java:141)
 at 
io.prestosql.metadata.FunctionResolver.resolveFunction(FunctionResolver.java:103)
 at 
io.prestosql.metadata.MetadataManager.lambda$resolveFunction$24(MetadataManager.java:1411)
 at java.base/java.util.Optional.orElseGet(Unknown Source)
 at 
io.prestosql.metadata.MetadataManager.resolveFunction(MetadataManager.java:1411)
 at 
io.prestosql.sql.analyzer.ExpressionAnalyzer$Visitor.visitFunctionCall(ExpressionAnalyzer.java:918)
 ... 47 more

> Update presto dependency and implement row/column level security
> ----------------------------------------------------------------
>
>                 Key: RANGER-2754
>                 URL: https://issues.apache.org/jira/browse/RANGER-2754
>             Project: Ranger
>          Issue Type: Improvement
>          Components: plugins
>    Affects Versions: master
>            Reporter: Bolke de Bruin
>            Assignee: Bolke de Bruin
>            Priority: Major
>             Fix For: 2.1.0
>
>         Attachments: 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> 0001-RANGER-2754-Upgrade-presto-dependency-and-improve-lo.patch, 
> RANGER-2754-v2.patch, RANGER-2754.patch
>
>
> 1. PrestoSql has changed its Security API hence the Ranger plugin has stopped 
> working for versions > ~321. 
> 2. Presto master now has row/column level security support



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to