[ 
https://issues.apache.org/jira/browse/SENTRY-2534?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Quanlong Huang updated SENTRY-2534:
-----------------------------------
    Attachment: cdh5.16.2-40k-tables-calltree-profile.png

> Provide API to for checking ANY privileges
> ------------------------------------------
>
>                 Key: SENTRY-2534
>                 URL: https://issues.apache.org/jira/browse/SENTRY-2534
>             Project: Sentry
>          Issue Type: New Feature
>            Reporter: Quanlong Huang
>            Priority: Major
>         Attachments: cdh5.16.2-40k-tables-calltree-profile.png
>
>
> In Impala when dealing with SHOW TABLES statements or GET_TABLES HiveServer2 
> requests, we need to check whether the user has any privileges on the table 
> before showing it. However, Sentry does not support checking ANY privilege 
> (while Ranger does) so we have to loop over all possible privileges if the 
> user don't have any of them:
> {code:java}
> for (ImpalaAction action: actions) {
>   if (provider_.hasAccess(new Subject(user.getShortName()), authorizables,
>       EnumSet.of(action), request.hasGrantOption(), ActiveRoleSet.ALL)) {
>     return true;
>   }
> }
> return false;{code}
> Code link: 
> [https://github.com/apache/impala/blob/3.3.0/fe/src/main/java/org/apache/impala/authorization/sentry/SentryAuthorizationChecker.java#L120-L129]
>  
> This is time-consuming if there are lots of tables to check. As a CPU 
> profiling for IMPALA-9002, we see that most of the time is spending in Sentry:
> !cdh5.16.2-patch3543-db40k-calltree-profile.png|width=1295,height=1105!
> It'd be better if we can get rid of the loop and get result from Sentry 
> directly.
>  
>  



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

Reply via email to