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

Jason Lowe commented on MAPREDUCE-3668:
---------------------------------------

The quick fix doesn't exactly meet their needs, since in the past everyone 
could at least see jobs were running.  The quick fix would prevent a user from 
seeing anything but their own jobs (barring ACL exceptions), and some of the 
tests submit jobs as various users then later monitors their status with this 
command.

For now QE can make progress setting the view-job ACL to *, but it would be 
nice to have a real fix.
                
> AccessControlException when running mapred job -list command
> ------------------------------------------------------------
>
>                 Key: MAPREDUCE-3668
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-3668
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: client, mrv2, security
>    Affects Versions: 0.23.1
>            Reporter: Jason Lowe
>            Assignee: Jason Lowe
>            Priority: Blocker
>
> If a user tries to examine the status of all jobs running on a secure cluster 
> the mapred client can fail with an AccessControlException.  For example, 
> submitting two jobs each from a different user then trying to query the 
> status as the second user can fail like this:
> $ mapred job -list all
> 12/01/12 20:01:12 WARN conf.Configuration: mapred.used.genericoptionsparser 
> is deprecated. Instead, use
> mapreduce.client.genericoptionsparser.used
> Total jobs:2
> JobId   State   StartTime       UserName        Queue   Priority        Maps  
>   Reduces UsedContainers  RsvdContainers UsedMem RsvdMem NeededMem       AM 
> info
> 12/01/12 20:01:14 INFO mapred.ClientServiceDelegate: Application state is 
> completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server
> job_1326396427223_0002  SUCCEEDED       1326398424244   user2        default 
> NORMAL  2       2       0       0      0M      0M      0M     
> hostremoved:8088/proxy/application_1326396427223_0002/jobhistory/job/job_1326396427223_2_2
> 12/01/12 20:01:14 INFO mapred.ClientServiceDelegate: Application state is 
> completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server
> 12/01/12 20:01:14 WARN mapred.ClientServiceDelegate: Error from remote end: 
> User user2 cannot perform operation VIEW_JOB on job_1326396427223_0001
> Exception in thread "main" RemoteTrace: 
> java.security.AccessControlException: User user2 cannot perform operation 
> VIEW_JOB on job_1326396427223_0001
>         at 
> org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$MRClientProtocolHandler.checkAccess(HistoryClientService.java:293)
>         at 
> org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$MRClientProtocolHandler.verifyAndGetJob(HistoryClientService.java:184)
>         at 
> org.apache.hadoop.mapreduce.v2.hs.HistoryClientService$MRClientProtocolHandler.getJobReport(HistoryClientService.java:200)
>         at 
> org.apache.hadoop.mapreduce.v2.api.impl.pb.service.MRClientProtocolPBServiceImpl.getJobReport(MRClientProtocolPBServiceImpl.java:106)
>         at 
> org.apache.hadoop.yarn.proto.MRClientProtocol$MRClientProtocolService$2.callBlockingMethod(MRClientProtocol.java:187)
>         at 
> org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine$Server.call(ProtoOverHadoopRpcEngine.java:344)
>         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1490)
>         at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1486)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at javax.security.auth.Subject.doAs(Subject.java:396)
>         at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157)
>         at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1484)
>  at Local Trace: 
>         org.apache.hadoop.yarn.exceptions.impl.pb.YarnRemoteExceptionPBImpl: 
> User user2 cannot perform operation VIEW_JOB on job_1326396427223_0001
>         at 
> org.apache.hadoop.yarn.ipc.ProtoOverHadoopRpcEngine$Invoker.invoke(ProtoOverHadoopRpcEngine.java:151)
>         at $Proxy10.getJobReport(Unknown Source)
>         at 
> org.apache.hadoop.mapreduce.v2.api.impl.pb.client.MRClientProtocolPBClientImpl.getJobReport(MRClientProtocolPBClientImpl.java:104)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at 
> org.apache.hadoop.mapred.ClientServiceDelegate.invoke(ClientServiceDelegate.java:328)
>         at 
> org.apache.hadoop.mapred.ClientServiceDelegate.getJobStatus(ClientServiceDelegate.java:405)
>         at 
> org.apache.hadoop.mapred.YARNRunner.getJobStatus(YARNRunner.java:431)
>         at org.apache.hadoop.mapreduce.Cluster.getJob(Cluster.java:186)
>         at org.apache.hadoop.mapreduce.tools.CLI.displayJobList(CLI.java:571)
>         at org.apache.hadoop.mapreduce.tools.CLI.listAllJobs(CLI.java:500)
>         at org.apache.hadoop.mapreduce.tools.CLI.run(CLI.java:298)
>         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>         at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:83)
>         at org.apache.hadoop.mapred.JobClient.main(JobClient.java:1209)
> The information provided by the command is similar to what is presented on 
> the ResourceManager web UI, and that page has no security.
> Marking this as a blocker since many of our automated acceptance tests use 
> this command to obtain the status of jobs running in the cluster.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to