> On Jan. 28, 2019, 1:55 a.m., kalyan kumar kalvagadda wrote:
> > Idea here is to make sure that hive client knows the details of the user 
> > who is sending the request. In this specific case, hive should know the 
> > details of the user who running sentry service. Using 
> > sentry.service.server.principal and entry.service.realm doesn’t seem 
> > correct.
> > 
> > 
> > I have a thought.
> > ```
> > public HMSClient connect() throws IOException, InterruptedException, 
> > MetaException 
> > {?
> >   UserGroupInformation clientUGI = null;
> >   if (insecure) {?   
> >   clientUGI = UserGroupInformation.getCurrentUser();?
> >   } else {?  
> >   clientUGI = 
> > UserGroupInformation.getUGIFromSubject(kerberosContext.getSubject());?
> >   }?  
> >   return new HMSClient(clientUGI.doAs(new 
> > PrivilegedExceptionAction<HiveMetaStoreClient>()
> >   {?  
> >      @Override?  
> >      public HiveMetaStoreClient run() throws MetaException {? 
> >        return new HiveMetaStoreClient(hiveConf);?   
> >        }? 
> >   }));
> > }
> > 
> > ```
> > All you have additionally do is change the tests to run sentry server as 
> > user “sentry”. 
> > 
> > Here is the sample code. I have tested it locally.
> 
> Na Li wrote:
>     HiveSimpleConnectionFactory is used by HMSFollower to get notifications 
> from HMS server. It is not used for any other purposes in Sentry.
>     
>     If we following your suggestion, the user will be the login user, it 
> could be "root" for one run, and "jenkins" for another run. How to make sure 
> fetching notification from sentry works in your suggested approach?
>     
>     That is why I have this solution here. Make sure the user is "sentry" in 
> insecured mode, and add "sentry" as services in HMS server.
> 
> kalyan kumar kalvagadda wrote:
>     Lina, Idea is to use the UserGroupInformation.getCurrentUser(). Please 
> look at the patch i sugessted. All you have to do is perform doAs() while 
> starting the service. I have sent you details offline.
>     
>     What you are suggesting will effect the users who are using sentry in non 
> secure mode. Approach that i'm usggesting will address the issues with the 
> tests and not change the behavior.
> 
> Na Li wrote:
>     Kalyan, your suggestion is the current code behavior without my code 
> change.
>     
>     1) Do you agree that when sentry HMS follower gets notification, the user 
> name should be "sentry" instead of your name, or my name?
>     2) If you agree above, then your suggestion of using 
> "UserGroupInformation.getCurrentUser()" won't work because it returns current 
> login name, which is your name when you run the test, and my name if I run 
> the test, or Jenkins name name if it runs on build machine. 
>     3) When we have read authorization, HMS needs to check if the user has 
> read access to the metadata or if user is service users. 
>     3.1) If your approach is used, how do we write a test for read 
> authorization? We don't know what user name to configure as service user, or 
> give read access.
>     3.2) If my approach is used, we can add "sentry" as service user in test 
> to pass read authorization, and sentry can get notifications

Thanks! I have updated according to your suggestion: change caller of the 
HiveSimpleConnectionFactory


- Na


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/69841/#review212365
-----------------------------------------------------------


On Jan. 25, 2019, 9:07 p.m., Na Li wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/69841/
> -----------------------------------------------------------
> 
> (Updated Jan. 25, 2019, 9:07 p.m.)
> 
> 
> Review request for sentry, Arjun Mishra, Haley Reeve, and kalyan kumar 
> kalvagadda.
> 
> 
> Bugs: sentry-2486
>     https://issues.apache.org/jira/browse/sentry-2486
> 
> 
> Repository: sentry
> 
> 
> Description
> -------
> 
> In insecure mode, the current login user name is passed from Sentry to HMS 
> server when sentry HMSFollower gets full snapshot from HMS. 
> 
> The user name should be "sentry" instead of current login user.
> 
> This issue should not happen in production because secure mode is always 
> used. Insecure mode is only used in test.
> 
> 
> Diffs
> -----
> 
>   
> sentry-service/sentry-service-server/src/main/java/org/apache/sentry/service/thrift/HiveSimpleConnectionFactory.java
>  31e58fd 
>   
> sentry-service/sentry-service-server/src/test/java/org/apache/sentry/provider/db/service/persistent/TestHMSFollower.java
>  0d62941 
>   
> sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegrationBase.java
>  47f7466 
> 
> 
> Diff: https://reviews.apache.org/r/69841/diff/1/
> 
> 
> Testing
> -------
> 
> Tested manually and verified the user name now is "sentry" when sentry 
> HMSFollower gets notifications from HMS server
> 
> 
> Thanks,
> 
> Na Li
> 
>

Reply via email to