diff --git a/common/src/java/org/apache/hive/http/HttpServer.java b/common/src/java/org/apache/hive/http/HttpServer.java index 0624a7e15c..50f0b7932d 100644 --- a/common/src/java/org/apache/hive/http/HttpServer.java +++ b/common/src/java/org/apache/hive/http/HttpServer.java @@ -297,7 +297,7 @@ static boolean hasAdministratorAccess( * @return true if the user is present in the ACL, false if no ACL is set or * the user is not present */ - static boolean userHasAdministratorAccess(ServletContext servletContext, + public static boolean userHasAdministratorAccess(ServletContext servletContext, String remoteUser) { AccessControlList adminsAcl = (AccessControlList) servletContext .getAttribute(ADMINS_ACL); diff --git a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp index c0ece6da97..fd7162b932 100644 --- a/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp +++ b/service/src/resources/hive-webapps/hiveserver2/hiveserver2.jsp @@ -18,12 +18,15 @@ */ --%> <%@ page contentType="text/html;charset=UTF-8" + import="org.apache.commons.lang.StringUtils" import="org.apache.hadoop.conf.Configuration" import="org.apache.hadoop.hive.conf.HiveConf" import="org.apache.hadoop.hive.conf.HiveConf.ConfVars" import="org.apache.hive.common.util.HiveVersionInfo" + import="org.apache.hive.http.HttpServer" import="org.apache.hive.service.cli.operation.Operation" import="org.apache.hive.service.cli.operation.SQLOperation" + import="org.apache.hadoop.fs.CommonConfigurationKeys" import="org.apache.hadoop.hive.ql.QueryInfo" import="org.apache.hive.service.cli.session.SessionManager" import="org.apache.hive.service.cli.session.HiveSession" @@ -40,6 +43,22 @@ Configuration conf = (Configuration)ctx.getAttribute("hive.conf"); long startcode = conf.getLong("startcode", System.currentTimeMillis()); SessionManager sessionManager = (SessionManager)ctx.getAttribute("hive.sm"); +String remoteUser = request.getRemoteUser(); +%> + +<%! +private boolean hasAdminAccess(Configuration conf, ServletContext ctx, String remoteUser) { + // If there is no authorization, anybody has administrator access. + if (!conf.getBoolean(CommonConfigurationKeys.HADOOP_SECURITY_AUTHORIZATION, false)) { + return true; + } + + if (remoteUser == null) { + return false; + } + + return HttpServer.userHasAdministratorAccess(ctx, remoteUser); +} %>