diff --git common/src/java/org/apache/hadoop/hive/conf/HiveConf.java common/src/java/org/apache/hadoop/hive/conf/HiveConf.java index 14a538b..5b03f3b 100644 --- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java +++ common/src/java/org/apache/hadoop/hive/conf/HiveConf.java @@ -3861,8 +3861,8 @@ private void initialize(Class cls) { // setup list of conf vars that are not allowed to change runtime setupRestrictList(); - setupHiddenSet(); - + hiddenSet.clear(); + hiddenSet.addAll(HiveConfUtil.getHiddenSet(this)); } /** @@ -4215,25 +4215,11 @@ private void setupRestrictList() { restrictList.add(ConfVars.HIVE_CONF_INTERNAL_VARIABLE_LIST.varname); } - private void setupHiddenSet() { - String hiddenListStr = this.getVar(ConfVars.HIVE_CONF_HIDDEN_LIST); - hiddenSet.clear(); - if (hiddenListStr != null) { - for (String entry : hiddenListStr.split(",")) { - hiddenSet.add(entry.trim()); - } - } - } - /** * Strips hidden config entries from configuration */ public void stripHiddenConfigurations(Configuration conf) { - for (String name : hiddenSet) { - if (conf.get(name) != null) { - conf.set(name, ""); - } - } + HiveConfUtil.stripConfigurations(conf, hiddenSet); } /** diff --git common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java index 073a978..2f18c03 100644 --- common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java +++ common/src/java/org/apache/hadoop/hive/conf/HiveConfUtil.java @@ -25,9 +25,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.StringTokenizer; /** @@ -59,7 +61,43 @@ public static StringBuilder dumpConfig(HiveConf conf) { dumpConfig(conf, sb); return sb.append("END========\"new HiveConf()\"========\n"); } - public static void dumpConfig(Configuration conf, StringBuilder sb) { + + /** + * Getting the set of the hidden configurations + * @param configuration The original configuration + * @return The list of the configuration values to hide + */ + public static Set getHiddenSet(Configuration configuration) { + Set hiddenSet = new HashSet(); + String hiddenListStr = HiveConf.getVar(configuration, HiveConf.ConfVars.HIVE_CONF_HIDDEN_LIST); + if (hiddenListStr != null) { + for (String entry : hiddenListStr.split(",")) { + hiddenSet.add(entry.trim()); + } + } + return hiddenSet; + } + + /** + * Strips hidden config entries from configuration + * @param conf The configuration to strip from + * @param hiddenSet The values to strip + */ + public static void stripConfigurations(Configuration conf, Set hiddenSet) { + for (String name : hiddenSet) { + if (conf.get(name) != null) { + conf.set(name, ""); + } + } + } + + public static void dumpConfig(Configuration originalConf, StringBuilder sb) { + sb.append("Values omitted for security reason if present: "); + sb.append(HiveConf.getVar(originalConf, HiveConf.ConfVars.HIVE_CONF_HIDDEN_LIST)); + sb.append("\n"); + Configuration conf = new Configuration(originalConf); + stripConfigurations(conf, getHiddenSet(originalConf)); + Iterator> configIter = conf.iterator(); List> configVals = new ArrayList<>(); while(configIter.hasNext()) { diff --git hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java index 201e647..ffcd714 100644 --- hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java +++ hcatalog/webhcat/svr/src/main/java/org/apache/hive/hcatalog/templeton/tool/TempletonUtils.java @@ -42,6 +42,7 @@ import javax.ws.rs.core.UriBuilder; +import org.apache.hadoop.hive.ql.exec.Utilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.conf.Configuration; @@ -484,7 +485,8 @@ public static StringBuilder dumpPropMap(String header, Map map) } } else { - sb.append(propKey).append('=').append(map.get(propKey)).append('\n'); + sb.append(propKey).append('=').append(Utilities.maskIfPassword(propKey, map.get(propKey))); + sb.append('\n'); } } return sb.append("END").append(header).append('\n');