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

Fredy Wijaya resolved IMPALA-6846.
----------------------------------
    Resolution: Cannot Reproduce

I'm not able to reproduce this.

> Impala does not retrieve Sentry roles after restart
> ---------------------------------------------------
>
>                 Key: IMPALA-6846
>                 URL: https://issues.apache.org/jira/browse/IMPALA-6846
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Security
>    Affects Versions: Impala 2.11.0
>         Environment: CDH 5.14, CDH 5.13, Centos 7, OpenLDAP
>            Reporter: Oleksandra Klevets
>            Assignee: Fredy Wijaya
>            Priority: Critical
>              Labels: security
>
> *Environment:*
> CDH 5.14.2 (upgraded from CDH 5.13.0 that was also affected), Sentry 
> configured, Hadoop group mapping via Ldap (OpenLDAP). The cluster is NOT 
> Kerberized.
> *Issue description:*
> There are some roles setup on Impala+Sentry:
> {code:java}
> CREATE ROLE dba;
> GRANT ALL ON SERVER server1 TO ROLE dba WITH GRANT OPTION;
> GRANT ROLE dba TO GROUP `gn:ldap:admin`;
> CREATE ROLE etl; 
> GRANT ALL ON SERVER server1 TO ROLE etl; 
> GRANT ROLE etl TO GROUP `gn:users:etl`; 
> CREATE ROLE bi; 
> GRANT ROLE bi TO GROUP `gn:users:bi`; 
> grant select on database reporting to role bi;
> {code}
> Just after permissions grant was made, al works fine and users are assigned 
> correct roles, which is confirmed by SHOW CURRENT ROLES on Impala side. 
> But after Impala restart, any user that is logged to Impala does not have any 
> roles. So, SHOW CURRENT ROLES returns just nothing. And users do not have any 
> permissions, even users who are in *gn:ldap:admin* (it is stated as 
> sentry.service.admin.group in Sentry).
> *hdfs groups <username>* returns correct groups for a user, so group mapping 
> obviously work fine.
> Also, I can see the correct roles for a user, if I log to Hue->Security-> 
> Roles. 
> So that the issue seems to be somewhere between Impala and Sentry.  
> The workaround for this that I am currently using is to create another set of 
> roles as dba1, etl1, bi1 and grant them to appropriate groups. Another 
> workaround is to stop Sentry service, log in to Sentry database, drop all the 
> tables, recreate Sentry schema and then create roles and grant permissions 
> again. 
> At the same time, I see a lot of such logs in Sentry Server logs:
> {code:java}
> Access denied to impala
> org.apache.sentry.provider.db.SentryAccessDeniedException: Access denied to 
> impala
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessor.list_sentry_roles_by_group(SentryPolicyStoreProcessor.java:581)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1077)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1062)
>       at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
>       at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryProcessorWrapper.process(SentryProcessorWrapper.java:36)
>       at 
> org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
>       at 
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
> {code}
> Also, a lot of these logs in Impala Catalog Server logs:
> {code:java}
> 2:10:18.844 PM        ERROR   java:99 
> failed to execute listRoles
> Java exception follows:
> java.lang.reflect.InvocationTargetException
>       at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:606)
>       at 
> sentry.org.apache.sentry.core.common.transport.RetryClientInvocationHandler.invokeImpl(RetryClientInvocationHandler.java:95)
>       at 
> sentry.org.apache.sentry.core.common.transport.SentryClientInvocationHandler.invoke(SentryClientInvocationHandler.java:41)
>       at com.sun.proxy.$Proxy19.listRoles(Unknown Source)
>       at 
> org.apache.impala.util.SentryPolicyService.listAllRoles(SentryPolicyService.java:393)
>       at 
> org.apache.impala.util.SentryProxy$PolicyReader.run(SentryProxy.java:118)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.sentry.provider.db.SentryAccessDeniedException: Access 
> denied to impala. Server Stacktrace: 
> org.apache.sentry.provider.db.SentryAccessDeniedException: Access denied to 
> impala
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessor.list_sentry_roles_by_group(SentryPolicyStoreProcessor.java:581)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1077)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyService$Processor$list_sentry_roles_by_group.getResult(SentryPolicyService.java:1062)
>       at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
>       at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryProcessorWrapper.process(SentryProcessorWrapper.java:36)
>       at 
> org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123)
>       at 
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
>       at org.apache.sentry.service.thrift.Status.throwIfNotOk(Status.java:113)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyServiceClientDefaultImpl.listRolesByGroupName(SentryPolicyServiceClientDefaultImpl.java:161)
>       at 
> org.apache.sentry.provider.db.service.thrift.SentryPolicyServiceClientDefaultImpl.listRoles(SentryPolicyServiceClientDefaultImpl.java:207)
>       ... 15 more
> 2:10:18.844 PM        ERROR   java:176        
> Error refreshing Sentry policy: 
> Java exception follows:
> org.apache.impala.catalog.AuthorizationException: User 'impala' does not have 
> privileges to execute: LIST_ROLES
>       at 
> org.apache.impala.util.SentryPolicyService.listAllRoles(SentryPolicyService.java:395)
>       at 
> org.apache.impala.util.SentryProxy$PolicyReader.run(SentryProxy.java:118)
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>       at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
>       at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:745)
> {code}
> Please let me know what other information is needed. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to