RANGER-2646: replace static references to static configuration instance, RangerConfiguration.getInstance()
diff --git a/agents-common/src/main/java/org/apache/ranger/admin/client/AbstractRangerAdminClient.java b/agents-common/src/main/java/org/apache/ranger/admin/client/AbstractRangerAdminClient.java
index 2bc7557..87d0190 100644
--- a/agents-common/src/main/java/org/apache/ranger/admin/client/AbstractRangerAdminClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/admin/client/AbstractRangerAdminClient.java
@@ -19,16 +19,32 @@
package org.apache.ranger.admin.client;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.plugin.model.RangerRole;
import org.apache.ranger.plugin.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.List;
public abstract class AbstractRangerAdminClient implements RangerAdminClient {
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractRangerAdminClient.class);
+
+ protected Gson gson;
@Override
- public void init(String serviceName, String appId, String configPropertyPrefix) {
+ public void init(String serviceName, String appId, String configPropertyPrefix, Configuration config) {
+ Gson gson = null;
+ try {
+ gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
+ } catch(Throwable excp) {
+ LOG.error("AbstractRangerAdminClient: failed to create GsonBuilder object", excp);
+ }
+
+ this.gson = gson;
}
@Override
diff --git a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
index 9510888..58eb00a 100644
--- a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminClient.java
@@ -20,6 +20,7 @@
package org.apache.ranger.admin.client;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.plugin.model.RangerRole;
import org.apache.ranger.plugin.util.GrantRevokeRequest;
import org.apache.ranger.plugin.util.GrantRevokeRoleRequest;
@@ -32,7 +33,7 @@
public interface RangerAdminClient {
- void init(String serviceName, String appId, String configPropertyPrefix);
+ void init(String serviceName, String appId, String configPropertyPrefix, Configuration config);
ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception;
diff --git a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
index 86469fd..e5f9747 100644
--- a/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java
@@ -25,11 +25,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.AccessControlException;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.ranger.admin.client.datatype.RESTResponse;
import org.apache.ranger.audit.provider.MiscUtil;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.model.RangerRole;
import org.apache.ranger.plugin.util.*;
@@ -76,21 +76,23 @@
}
@Override
- public void init(String serviceName, String appId, String propertyPrefix) {
+ public void init(String serviceName, String appId, String propertyPrefix, Configuration config) {
+ super.init(serviceName, appId, propertyPrefix, config);
+
this.serviceName = serviceName;
this.pluginId = restUtils.getPluginId(serviceName, appId);
String url = "";
- String tmpUrl = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.url");
- String sslConfigFileName = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.ssl.config.file");
- clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".access.cluster.name", "");
+ String tmpUrl = config.get(propertyPrefix + ".policy.rest.url");
+ String sslConfigFileName = config.get(propertyPrefix + ".policy.rest.ssl.config.file");
+ clusterName = config.get(propertyPrefix + ".access.cluster.name", "");
if(StringUtil.isEmpty(clusterName)){
- clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".ambari.cluster.name", "");
+ clusterName =config.get(propertyPrefix + ".ambari.cluster.name", "");
}
- int restClientConnTimeOutMs = RangerConfiguration.getInstance().getInt(propertyPrefix + ".policy.rest.client.connection.timeoutMs", 120 * 1000);
- int restClientReadTimeOutMs = RangerConfiguration.getInstance().getInt(propertyPrefix + ".policy.rest.client.read.timeoutMs", 30 * 1000);
- supportsPolicyDeltas = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.supports.policy.deltas", "false");
- supportsTagDeltas = RangerConfiguration.getInstance().get(propertyPrefix + ".tag.rest.supports.tag.deltas", "false");
+ int restClientConnTimeOutMs = config.getInt(propertyPrefix + ".policy.rest.client.connection.timeoutMs", 120 * 1000);
+ int restClientReadTimeOutMs = config.getInt(propertyPrefix + ".policy.rest.client.read.timeoutMs", 30 * 1000);
+ supportsPolicyDeltas = config.get(propertyPrefix + ".policy.rest.supports.policy.deltas", "false");
+ supportsTagDeltas = config.get(propertyPrefix + ".tag.rest.supports.tag.deltas", "false");
if (!StringUtil.isEmpty(tmpUrl)) {
url = tmpUrl.trim();
@@ -105,7 +107,7 @@
supportsTagDeltas = "false";
}
- init(url, sslConfigFileName, restClientConnTimeOutMs , restClientReadTimeOutMs);
+ init(url, sslConfigFileName, restClientConnTimeOutMs , restClientReadTimeOutMs, config);
try {
this.serviceNameUrlParam = URLEncoderUtil.encodeURIParam(serviceName);
@@ -762,12 +764,12 @@
}
}
- private void init(String url, String sslConfigFileName, int restClientConnTimeOutMs , int restClientReadTimeOutMs ) {
+ private void init(String url, String sslConfigFileName, int restClientConnTimeOutMs , int restClientReadTimeOutMs, Configuration config) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerAdminRESTClient.init(" + url + ", " + sslConfigFileName + ")");
}
- restClient = new RangerRESTClient(url, sslConfigFileName);
+ restClient = new RangerRESTClient(url, sslConfigFileName, config);
restClient.setRestClientConnTimeOutMs(restClientConnTimeOutMs);
restClient.setRestClientReadTimeOutMs(restClientReadTimeOutMs);
diff --git a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAdminConfig.java b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAdminConfig.java
new file mode 100644
index 0000000..8783142
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAdminConfig.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.authorization.hadoop.config;
+
+import org.apache.log4j.Logger;
+
+public class RangerAdminConfig extends RangerConfiguration {
+ private static final Logger LOG = Logger.getLogger(RangerAdminConfig.class);
+
+ public RangerAdminConfig() {
+ super();
+
+ addAdminResources();
+ }
+
+
+ private boolean addAdminResources() {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> addAdminResources()");
+ }
+
+ String defaultCfg = "ranger-admin-default-site.xml";
+ String addlCfg = "ranger-admin-site.xml";
+ String coreCfg = "core-site.xml";
+
+ boolean ret = true;
+
+ if (!addResourceIfReadable(defaultCfg)) {
+ ret = false;
+ }
+
+ if (!addResourceIfReadable(addlCfg)) {
+ ret = false;
+ }
+
+ if (!addResourceIfReadable(coreCfg)){
+ ret = false;
+ }
+
+ if (! ret) {
+ LOG.error("Could not add ranger-admin resources to RangerAdminConfig.");
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== addAdminResources(), result=" + ret);
+ }
+
+ return ret;
+ }
+}
diff --git a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAuditConfig.java b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAuditConfig.java
new file mode 100644
index 0000000..70928be
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerAuditConfig.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.authorization.hadoop.config;
+
+import org.apache.log4j.Logger;
+
+public class RangerAuditConfig extends RangerConfiguration {
+ private static final Logger LOG = Logger.getLogger(RangerAuditConfig.class);
+
+ private final boolean initSuccess;
+
+ public RangerAuditConfig() {
+ super();
+
+ initSuccess = addAuditResources();
+ }
+
+ public boolean isInitSuccess() { return initSuccess; }
+
+ private boolean addAuditResources() {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> addAuditResources()");
+ }
+
+ String defaultCfg = "ranger-standalone-audit.xml";
+
+ boolean ret = true;
+
+ if (!addResourceIfReadable(defaultCfg)) {
+ LOG.error("Could not add " + defaultCfg + " to RangerAuditConfig.");
+ ret = false;
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== addAuditResources(), result=" + ret);
+ }
+
+ return ret;
+ }
+}
diff --git a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java
index 481fbcc..43ddf0b 100644
--- a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java
+++ b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerConfiguration.java
@@ -20,7 +20,6 @@
package org.apache.ranger.authorization.hadoop.config;
-import java.io.File;
import java.net.URL;
import java.util.Properties;
@@ -30,63 +29,14 @@
public class RangerConfiguration extends Configuration {
private static final Logger LOG = Logger.getLogger(RangerConfiguration.class);
-
- private static volatile RangerConfiguration config;
-
- private RangerConfiguration() {
+
+ protected RangerConfiguration() {
super(false);
}
- public void addResourcesForServiceType(String serviceType) {
- String auditCfg = "ranger-" + serviceType + "-audit.xml";
- String securityCfg = "ranger-" + serviceType + "-security.xml";
- String sslCfg = "ranger-" + serviceType + "-policymgr-ssl.xml";
-
- if ( !addResourceIfReadable(auditCfg)) {
- addAuditResource(serviceType);
- }
-
- if ( !addResourceIfReadable(securityCfg)) {
- addSecurityResource(serviceType);
- }
-
- if ( !addResourceIfReadable(sslCfg)) {
- addSslConfigResource(serviceType);
- }
-
- }
-
- public boolean addAdminResources() {
- String defaultCfg = "ranger-admin-default-site.xml";
- String addlCfg = "ranger-admin-site.xml";
- String coreCfg = "core-site.xml";
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> addAdminResources()");
- }
- boolean ret = true;
-
- if (! addResourceIfReadable(defaultCfg)) {
- ret = false;
- }
-
- if (! addResourceIfReadable(addlCfg)) {
- ret = false;
- }
-
- if(! addResourceIfReadable(coreCfg)){
- ret = false;
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== addAdminResources(), result=" + ret);
- }
- return ret;
- }
-
public boolean addResourceIfReadable(String aResourceName) {
-
boolean ret = false;
+
if(LOG.isDebugEnabled()) {
LOG.debug("==> addResourceIfReadable(" + aResourceName + ")");
}
@@ -116,24 +66,11 @@
return ret;
}
-
- public static RangerConfiguration getInstance() {
- RangerConfiguration result = config;
- if (result == null) {
- synchronized (RangerConfiguration.class) {
- result = config;
- if (result == null) {
- config = result = new RangerConfiguration();
- }
- }
- }
- return result;
- }
-
public Properties getProperties() {
return getProps();
}
+
private URL getFileLocation(String fileName) {
URL lurl = RangerConfiguration.class.getClassLoader().getResource(fileName);
@@ -142,94 +79,4 @@
}
return lurl;
}
-
- private void addSecurityResource(String serviceType) {
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> addSecurityResource(Service Type: " + serviceType );
- }
-
- Configuration rangerConf = RangerLegacyConfigBuilder.getSecurityConfig(serviceType);
-
- if ( rangerConf != null ) {
- addResource(rangerConf);
- } else {
- if(LOG.isDebugEnabled()) {
- LOG.debug("Unable to add the Security Config for " + serviceType + ". Plugin won't be enabled!");
- }
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<= addSecurityResource(Service Type: " + serviceType );
- }
- }
-
- private void addAuditResource(String serviceType) {
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> addAuditResource(Service Type: " + serviceType );
- }
-
- try {
- URL url = RangerLegacyConfigBuilder.getAuditConfig(serviceType);
-
- if( url != null) {
- addResource(url);
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> addAuditResource() URL" + url.getPath());
- }
- }
-
- } catch (Throwable t) {
- LOG.warn(" Unable to find Audit Config for " + serviceType + " Auditing not enabled !" );
- if(LOG.isDebugEnabled()) {
- LOG.debug(" Unable to find Audit Config for " + serviceType + " Auditing not enabled !" + t);
- }
- }
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== addAuditResource(Service Type: " + serviceType + ")");
- }
- }
-
- private void addSslConfigResource(String serviceType) {
- if (LOG.isDebugEnabled()) {
- LOG.debug("==> addSslConfigResource(Service Type: " + serviceType);
- }
- try {
- String sslConfigFile = config.get(RangerLegacyConfigBuilder.getPropertyName(RangerConfigConstants.RANGER_PLUGIN_REST_SSL_CONFIG_FILE, serviceType));
- URL url = getSSLConfigResource(sslConfigFile);
- if (url != null) {
- addResource(url);
- if (LOG.isDebugEnabled()) {
- LOG.debug("SSL config file URL:" + url.getPath());
- }
- }
- } catch (Throwable t) {
- LOG.warn(" Unable to find SSL Configs");
- if (LOG.isDebugEnabled()) {
- LOG.debug(" Unable to find SSL Configs");
- }
- }
- if (LOG.isDebugEnabled()) {
- LOG.debug("<== addSslConfigResource(Service Type: " + serviceType + ")");
- }
- }
-
- private URL getSSLConfigResource(String fileName) throws Throwable {
- URL ret = null;
- try {
- if (fileName != null) {
- File f = new File(fileName);
- if (f.exists() && f.canRead()) {
- ret = f.toURI().toURL();
- }
- }
- } catch (Throwable t) {
- LOG.error("Unable to read SSL configuration file:" + fileName);
- throw t;
- }
- return ret;
- }
-
}
diff --git a/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerPluginConfig.java b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerPluginConfig.java
new file mode 100644
index 0000000..78e8533
--- /dev/null
+++ b/agents-common/src/main/java/org/apache/ranger/authorization/hadoop/config/RangerPluginConfig.java
@@ -0,0 +1,152 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.ranger.authorization.hadoop.config;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.log4j.Logger;
+
+import java.io.File;
+import java.net.URL;
+
+public class RangerPluginConfig extends RangerConfiguration {
+ private static final Logger LOG = Logger.getLogger(RangerPluginConfig.class);
+
+ public RangerPluginConfig(String serviceType) {
+ super();
+
+ addResourcesForServiceType(serviceType);
+ }
+
+
+ private void addResourcesForServiceType(String serviceType) {
+ String auditCfg = "ranger-" + serviceType + "-audit.xml";
+ String securityCfg = "ranger-" + serviceType + "-security.xml";
+ String sslCfg = "ranger-" + serviceType + "-policymgr-ssl.xml";
+
+ if (!addResourceIfReadable(auditCfg)) {
+ addAuditResource(serviceType);
+ }
+
+ if (!addResourceIfReadable(securityCfg)) {
+ addSecurityResource(serviceType);
+ }
+
+ if (!addResourceIfReadable(sslCfg)) {
+ addSslConfigResource(serviceType);
+ }
+ }
+
+ private void addSecurityResource(String serviceType) {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("==> addSecurityResource(Service Type: " + serviceType );
+ }
+
+ Configuration rangerConf = RangerLegacyConfigBuilder.getSecurityConfig(serviceType);
+
+ if (rangerConf != null ) {
+ addResource(rangerConf);
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Unable to add the Security Config for " + serviceType + ". Plugin won't be enabled!");
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<= addSecurityResource(Service Type: " + serviceType );
+ }
+ }
+
+ private void addAuditResource(String serviceType) {
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> addAuditResource(Service Type: " + serviceType );
+ }
+
+ try {
+ URL url = RangerLegacyConfigBuilder.getAuditConfig(serviceType);
+
+ if (url != null) {
+ addResource(url);
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> addAuditResource() URL" + url.getPath());
+ }
+ }
+
+ } catch (Throwable t) {
+ LOG.warn("Unable to find Audit Config for " + serviceType + " Auditing not enabled !" );
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("Unable to find Audit Config for " + serviceType + " Auditing not enabled !" + t);
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== addAuditResource(Service Type: " + serviceType + ")");
+ }
+ }
+
+ private void addSslConfigResource(String serviceType) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> addSslConfigResource(Service Type: " + serviceType);
+ }
+
+ try {
+ String sslConfigFile = this.get(RangerLegacyConfigBuilder.getPropertyName(RangerConfigConstants.RANGER_PLUGIN_REST_SSL_CONFIG_FILE, serviceType));
+
+ URL url = getSSLConfigResource(sslConfigFile);
+ if (url != null) {
+ addResource(url);
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("SSL config file URL:" + url.getPath());
+ }
+ }
+ } catch (Throwable t) {
+ LOG.warn(" Unable to find SSL Configs");
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(" Unable to find SSL Configs");
+ }
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== addSslConfigResource(Service Type: " + serviceType + ")");
+ }
+ }
+
+ private URL getSSLConfigResource(String fileName) throws Throwable {
+ URL ret = null;
+
+ try {
+ if (fileName != null) {
+ File f = new File(fileName);
+ if (f.exists() && f.canRead()) {
+ ret = f.toURI().toURL();
+ }
+ }
+ } catch (Throwable t) {
+ LOG.error("Unable to read SSL configuration file:" + fileName);
+
+ throw t;
+ }
+
+ return ret;
+ }
+}
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java b/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
index 6b6e91d..137fd1f 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
@@ -27,10 +27,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.audit.model.AuthzAuditEvent;
import org.apache.ranger.audit.provider.AuditHandler;
import org.apache.ranger.audit.provider.MiscUtil;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.hadoop.constants.RangerHadoopConstants;
import org.apache.ranger.plugin.contextenricher.RangerTagForEval;
import org.apache.ranger.plugin.policyengine.*;
@@ -41,20 +41,36 @@
public class RangerDefaultAuditHandler implements RangerAccessResultProcessor {
-
- protected static final String RangerModuleName = RangerConfiguration.getInstance().get(RangerHadoopConstants.AUDITLOG_RANGER_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME);
-
private static final Log LOG = LogFactory.getLog(RangerDefaultAuditHandler.class);
+
static long sequenceNumber;
private static String UUID = MiscUtil.generateUniqueId();
private static AtomicInteger counter = new AtomicInteger(0);
+ protected String moduleName = RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME;
+
RangerRESTUtils restUtils = new RangerRESTUtils();
public RangerDefaultAuditHandler() {
}
+ public RangerDefaultAuditHandler(Configuration config) {
+ init(config);
+ }
+
+ public void init(Configuration config) {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("==> RangerDefaultAuditHandler.init()");
+ }
+
+ moduleName = config.get(RangerHadoopConstants.AUDITLOG_RANGER_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME);
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== RangerDefaultAuditHandler.init()");
+ }
+ }
+
@Override
public void processResult(RangerAccessResult result) {
if(LOG.isDebugEnabled()) {
@@ -119,7 +135,7 @@
ret.setClientIP(request.getClientIPAddress());
ret.setClientType(request.getClientType());
ret.setSessionId(request.getSessionId());
- ret.setAclEnforcer(RangerModuleName);
+ ret.setAclEnforcer(moduleName);
Set<String> tags = getTags(request);
if (tags != null) {
ret.setTags(tags);
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerScriptExecutionContext.java b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerScriptExecutionContext.java
index 0c078a8..dc4ede9 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerScriptExecutionContext.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerScriptExecutionContext.java
@@ -23,7 +23,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.contextenricher.RangerTagForEval;
import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
@@ -57,21 +57,7 @@
private static String[] dateFormatStrings = null;
static {
- StringBuilder sb = new StringBuilder(DEFAULT_RANGER_TAG_ATTRIBUTE_DATE_FORMAT);
- sb.append(TAG_ATTR_DATE_FORMAT_SEPARATOR).append(DEFAULT_ATLAS_TAG_ATTRIBUTE_DATE_FORMAT_NAME);
-
- String additionalDateFormatsValue = RangerConfiguration.getInstance().get(TAG_ATTR_DATE_FORMAT_PROP);
- if (StringUtils.isNotBlank(additionalDateFormatsValue)) {
- sb.append(TAG_ATTR_DATE_FORMAT_SEPARATOR).append(additionalDateFormatsValue);
- }
-
- dateFormatStrings = sb.toString().split(TAG_ATTR_DATE_FORMAT_SEPARATOR_REGEX);
- Arrays.sort(dateFormatStrings, new Comparator<String>() {
- @Override
- public int compare(String first, String second) {
- return Integer.compare(second.length(), first.length());
- }
- });
+ init(null);
}
private static final ThreadLocal<List<SimpleDateFormat>> THREADLOCAL_DATE_FORMATS =
@@ -102,6 +88,29 @@
this.accessRequest = accessRequest;
}
+ public static void init(Configuration config) {
+ StringBuilder sb = new StringBuilder(DEFAULT_RANGER_TAG_ATTRIBUTE_DATE_FORMAT);
+
+ sb.append(TAG_ATTR_DATE_FORMAT_SEPARATOR).append(DEFAULT_ATLAS_TAG_ATTRIBUTE_DATE_FORMAT_NAME);
+
+ String additionalDateFormatsValue = config != null ? config.get(TAG_ATTR_DATE_FORMAT_PROP) : null;
+
+ if (StringUtils.isNotBlank(additionalDateFormatsValue)) {
+ sb.append(TAG_ATTR_DATE_FORMAT_SEPARATOR).append(additionalDateFormatsValue);
+ }
+
+ String[] formatStrings = sb.toString().split(TAG_ATTR_DATE_FORMAT_SEPARATOR_REGEX);
+
+ Arrays.sort(formatStrings, new Comparator<String>() {
+ @Override
+ public int compare(String first, String second) {
+ return Integer.compare(second.length(), first.length());
+ }
+ });
+
+ RangerScriptExecutionContext.dateFormatStrings = formatStrings;
+ }
+
public String getResource() {
String ret = null;
Object val = getRequestContext().get(RangerAccessRequestUtil.KEY_CONTEXT_RESOURCE);
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
index 737ce04..6a12d63 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAbstractContextEnricher.java
@@ -31,9 +31,11 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerContextEnricherDef;
import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
+import org.apache.ranger.plugin.policyengine.RangerPluginContext;
import org.apache.ranger.plugin.service.RangerAuthContext;
@@ -44,7 +46,7 @@
protected String serviceName;
protected String appId;
protected RangerServiceDef serviceDef;
- protected RangerAuthContext authContext;
+ private RangerPluginContext pluginContext;
@Override
public void setEnricherDef(RangerContextEnricherDef enricherDef) {
@@ -71,9 +73,13 @@
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerAbstractContextEnricher.init(" + enricherDef + ")");
}
+
+ RangerAuthContext authContext = getAuthContext();
+
if (authContext != null) {
authContext.addOrReplaceRequestContextEnricher(this, null);
}
+
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerAbstractContextEnricher.init(" + enricherDef + ")");
}
@@ -89,9 +95,13 @@
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerAbstractContextEnricher.preCleanup(" + enricherDef + ")");
}
+
+ RangerAuthContext authContext = getAuthContext();
+
if (authContext != null) {
authContext.cleanupRequestContextEnricher(this);
}
+
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerAbstractContextEnricher.preCleanup(" + enricherDef + ")");
}
@@ -147,12 +157,48 @@
return ret;
}
- public void setAuthContext(RangerAuthContext authContext) {
- this.authContext = authContext;
+ public RangerAuthContext getAuthContext() {
+ return pluginContext != null ? pluginContext.getAuthContext() : null;
}
- public RangerAuthContext getAuthContext() {
- return authContext;
+ final public void setPluginContext(RangerPluginContext pluginContext) {
+ this.pluginContext = pluginContext;
+ }
+
+ public String getConfig(String configName, String defaultValue) {
+ String ret = defaultValue;
+
+ Configuration config = pluginContext != null ? pluginContext.getConfig() : null;
+
+ if (config != null) {
+ ret = config.get(configName, defaultValue);
+ }
+
+ return ret;
+ }
+
+ public int getIntConfig(String configName, int defaultValue) {
+ int ret = defaultValue;
+
+ Configuration config = pluginContext != null ? pluginContext.getConfig() : null;
+
+ if (config != null) {
+ ret = config.getInt(configName, defaultValue);
+ }
+
+ return ret;
+ }
+
+ public boolean getBooleanConfig(String configName, boolean defaultValue) {
+ boolean ret = defaultValue;
+
+ Configuration config = pluginContext != null ? pluginContext.getConfig() : null;
+
+ if (config != null) {
+ ret = config.getBoolean(configName, defaultValue);
+ }
+
+ return ret;
}
public String getOption(String name, String defaultValue) {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAdminTagRetriever.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAdminTagRetriever.java
index f766e05..632a573 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAdminTagRetriever.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerAdminTagRetriever.java
@@ -23,6 +23,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.admin.client.RangerAdminClient;
+import org.apache.ranger.authorization.hadoop.config.RangerPluginConfig;
import org.apache.ranger.plugin.service.RangerBasePlugin;
import org.apache.ranger.plugin.util.ServiceTags;
@@ -40,7 +41,9 @@
if (StringUtils.isNotBlank(serviceName) && serviceDef != null && StringUtils.isNotBlank(appId)) {
String propertyPrefix = "ranger.plugin." + serviceDef.getName();
- adminClient = RangerBasePlugin.createAdminClient(serviceName, appId, propertyPrefix);
+ RangerPluginConfig config = new RangerPluginConfig(serviceDef.getName());
+
+ adminClient = RangerBasePlugin.createAdminClient(serviceName, appId, propertyPrefix, config);
} else {
LOG.error("FATAL: Cannot find service/serviceDef to use for retrieving tags. Will NOT be able to retrieve tags.");
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
index 4e56f5c..6963995 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerTagEnricher.java
@@ -26,7 +26,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerServiceResource;
@@ -120,9 +119,10 @@
if (tagRetriever != null) {
String propertyPrefix = "ranger.plugin." + serviceDef.getName();
- disableCacheIfServiceNotFound = RangerConfiguration.getInstance().getBoolean(propertyPrefix + ".disable.cache.if.servicenotfound", true);
- String cacheDir = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.cache.dir");
+ disableCacheIfServiceNotFound = getBooleanConfig(propertyPrefix + ".disable.cache.if.servicenotfound", true);
+ String cacheDir = getConfig(propertyPrefix + ".policy.cache.dir", null);
String cacheFilename = String.format("%s_%s_tag.json", appId, serviceName);
+
cacheFilename = cacheFilename.replace(File.separatorChar, '_');
cacheFilename = cacheFilename.replace(File.pathSeparatorChar, '_');
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPluginContext.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPluginContext.java
index df21c5d..42f57f3 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPluginContext.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPluginContext.java
@@ -21,23 +21,31 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerPluginConfig;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.service.RangerAuthContext;
import org.apache.ranger.plugin.service.RangerBasePlugin;
public class RangerPluginContext {
-
private static final Log LOG = LogFactory.getLog(RangerBasePlugin.class);
+
+ private final RangerPluginConfig config;
private String clusterName;
private String clusterType;
private RangerAuthContext authContext;
- public RangerPluginContext(String serviceType){
+ public RangerPluginContext(String serviceType) {
+ this(serviceType, new RangerPluginConfig(serviceType));
+ }
+
+ public RangerPluginContext(String serviceType, RangerPluginConfig config) {
+ this.config = config;
this.clusterName = findClusterName(serviceType);
this.clusterType = findClusterType(serviceType);
}
+ public RangerPluginConfig getConfig() { return config; }
+
public String getClusterName() {
return clusterName;
}
@@ -64,9 +72,9 @@
}
String propertyPrefix = "ranger.plugin." + serviceType;
- String clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".access.cluster.name", "");
+ String clusterName = config.get(propertyPrefix + ".access.cluster.name", "");
if(StringUtil.isEmpty(clusterName)){
- clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".ambari.cluster.name", "");
+ clusterName = config.get(propertyPrefix + ".ambari.cluster.name", "");
}
if(LOG.isDebugEnabled()) {
@@ -82,9 +90,9 @@
}
String propertyPrefix = "ranger.plugin." + serviceType;
- String clusterType = RangerConfiguration.getInstance().get(propertyPrefix + ".access.cluster.type", "");
+ String clusterType = config.get(propertyPrefix + ".access.cluster.type", "");
if(StringUtil.isEmpty(clusterType)){
- clusterType = RangerConfiguration.getInstance().get(propertyPrefix + ".ambari.cluster.type", "");
+ clusterType = config.get(propertyPrefix + ".ambari.cluster.type", "");
}
if(LOG.isDebugEnabled()) {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
index 45b223d..7c48ef7 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java
@@ -25,7 +25,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.contextenricher.RangerContextEnricher;
import org.apache.ranger.plugin.contextenricher.RangerTagForEval;
import org.apache.ranger.plugin.model.RangerPolicy;
@@ -274,7 +273,7 @@
String serviceType = servicePolicies.getServiceDef().getName();
String propertyName = "ranger.plugin." + serviceType + ".policyengine.evaluator.auto.maximum.policycount.for.cache.type";
- int thresholdForUsingOptimizedEvaluator = RangerConfiguration.getInstance().getInt(propertyName, MAX_POLICIES_FOR_CACHE_TYPE_EVALUATOR);
+ int thresholdForUsingOptimizedEvaluator = pluginContext.getConfig().getInt(propertyName, MAX_POLICIES_FOR_CACHE_TYPE_EVALUATOR);
int servicePoliciesCount = servicePolicies.getPolicies().size() + (servicePolicies.getTagPolicies() != null ? servicePolicies.getTagPolicies().getPolicies().size() : 0);
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyRepository.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyRepository.java
index 065120f..68f7791 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyRepository.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyRepository.java
@@ -23,7 +23,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.contextenricher.RangerAbstractContextEnricher;
import org.apache.ranger.plugin.contextenricher.RangerContextEnricher;
import org.apache.ranger.plugin.contextenricher.RangerTagEnricher;
@@ -33,6 +32,7 @@
import org.apache.ranger.plugin.model.RangerPolicyDelta;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.validation.RangerServiceDefHelper;
+import org.apache.ranger.plugin.policyevaluator.RangerAbstractPolicyEvaluator;
import org.apache.ranger.plugin.policyevaluator.RangerCachedPolicyEvaluator;
import org.apache.ranger.plugin.policyevaluator.RangerOptimizedPolicyEvaluator;
import org.apache.ranger.plugin.policyevaluator.RangerPolicyEvaluator;
@@ -296,7 +296,7 @@
if (options.cacheAuditResults) {
final int RANGER_POLICYENGINE_AUDITRESULT_CACHE_SIZE = 64 * 1024;
- int auditResultCacheSize = RangerConfiguration.getInstance().getInt(propertyName, RANGER_POLICYENGINE_AUDITRESULT_CACHE_SIZE);
+ int auditResultCacheSize = pluginContext.getConfig().getInt(propertyName, RANGER_POLICYENGINE_AUDITRESULT_CACHE_SIZE);
accessAuditCache = Collections.synchronizedMap(new CacheMap<String, AuditInfo>(auditResultCacheSize));
} else {
accessAuditCache = null;
@@ -982,7 +982,7 @@
ret.setAppId(appId);
if (ret instanceof RangerAbstractContextEnricher) {
RangerAbstractContextEnricher abstractContextEnricher = (RangerAbstractContextEnricher) ret;
- abstractContextEnricher.setAuthContext(pluginContext.getAuthContext());
+ abstractContextEnricher.setPluginContext(pluginContext);
}
ret.init();
}
@@ -1001,7 +1001,7 @@
}
scrubPolicy(policy);
- RangerPolicyEvaluator ret;
+ RangerAbstractPolicyEvaluator ret;
if(StringUtils.equalsIgnoreCase(options.evaluatorType, RangerPolicyEvaluator.EVALUATOR_TYPE_CACHED)) {
ret = new RangerCachedPolicyEvaluator();
@@ -1009,6 +1009,7 @@
ret = new RangerOptimizedPolicyEvaluator();
}
+ ret.setPluginContext(pluginContext);
ret.init(policy, serviceDef, options);
if(LOG.isDebugEnabled()) {
@@ -1099,7 +1100,7 @@
ret = new HashMap<>();
for (RangerServiceDef.RangerResourceDef resourceDef : serviceDef.getResources()) {
- ret.put(resourceDef.getName(), new RangerResourceTrie(resourceDef, evaluators, RangerPolicyEvaluator.EVAL_ORDER_COMPARATOR, optimizeTrieForRetrieval));
+ ret.put(resourceDef.getName(), new RangerResourceTrie(resourceDef, evaluators, RangerPolicyEvaluator.EVAL_ORDER_COMPARATOR, optimizeTrieForRetrieval, pluginContext));
}
} else {
ret = null;
@@ -1122,7 +1123,7 @@
if (RangerPolicyDelta.CHANGE_TYPE_POLICY_DELETE == policyDeltaType || RangerPolicyDelta.CHANGE_TYPE_POLICY_UPDATE == policyDeltaType) {
LOG.warn("policyDeltaType is not for POLICY_CREATE and trie for resourceDef:[" + resourceDefName + "] was null! Should not have happened!!");
}
- trie = new RangerResourceTrie<>(resourceDef, new ArrayList<>(), RangerPolicyEvaluator.EVAL_ORDER_COMPARATOR, true);
+ trie = new RangerResourceTrie<>(resourceDef, new ArrayList<>(), RangerPolicyEvaluator.EVAL_ORDER_COMPARATOR, true, pluginContext);
trieMap.put(resourceDefName, trie);
}
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerAbstractPolicyEvaluator.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerAbstractPolicyEvaluator.java
index 689985c..fd20d63 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerAbstractPolicyEvaluator.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerAbstractPolicyEvaluator.java
@@ -27,6 +27,7 @@
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
+import org.apache.ranger.plugin.policyengine.RangerPluginContext;
import org.apache.ranger.plugin.policyengine.RangerPolicyEngineOptions;
import org.apache.ranger.plugin.util.ServiceDefUtil;
@@ -41,8 +42,13 @@
private int evalOrder;
protected long usageCount;
protected boolean usageCountMutable = true;
+ protected RangerPluginContext pluginContext = null;
+ public void setPluginContext(RangerPluginContext pluginContext) { this.pluginContext = pluginContext; }
+
+ public RangerPluginContext getPluginContext() { return pluginContext; }
+
@Override
public void init(RangerPolicy policy, RangerServiceDef serviceDef, RangerPolicyEngineOptions options) {
if(LOG.isDebugEnabled()) {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerDefaultPolicyEvaluator.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerDefaultPolicyEvaluator.java
index 8469605..843fabc 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerDefaultPolicyEvaluator.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerDefaultPolicyEvaluator.java
@@ -1058,7 +1058,7 @@
if(policyItemType == RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_DENY ||
policyItemType == RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_ALLOW_EXCEPTIONS ||
policyItemType == RangerPolicyItemEvaluator.POLICY_ITEM_TYPE_DENY_EXCEPTIONS) {
- ret = ServiceDefUtil.getOption_enableDenyAndExceptionsInPolicies(serviceDef);
+ ret = ServiceDefUtil.getOption_enableDenyAndExceptionsInPolicies(serviceDef, pluginContext);
}
return ret;
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCache.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCache.java
deleted file mode 100644
index 55f3a04..0000000
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCache.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ranger.plugin.policyevaluator;
-
-import org.apache.ranger.plugin.policyengine.RangerAccessResource;
-
-public interface RangerResourceAccessCache {
- public enum LookupResult {
- IN_MATCHED_CACHE,
- IN_NOTMATCHED_CACHE,
- NOT_FOUND,
- ERROR
- }
-
- public enum CacheType {
- MATCHED_CACHE,
- NOTMATCHED_CACHE
- }
-
- LookupResult lookup(RangerAccessResource resource);
-
- void add(RangerAccessResource resource, CacheType cacheType);
-}
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCacheImpl.java b/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCacheImpl.java
deleted file mode 100644
index bde65b8..0000000
--- a/agents-common/src/main/java/org/apache/ranger/plugin/policyevaluator/RangerResourceAccessCacheImpl.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ranger.plugin.policyevaluator;
-
-
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
-import org.apache.ranger.plugin.model.RangerPolicy;
-import org.apache.ranger.plugin.model.RangerServiceDef;
-import org.apache.ranger.plugin.policyengine.CacheMap;
-import org.apache.ranger.plugin.policyengine.RangerAccessResource;
-
-
-public class RangerResourceAccessCacheImpl implements RangerResourceAccessCache {
- private static final Log LOG = LogFactory.getLog(RangerResourceAccessCacheImpl.class);
-
- public synchronized static RangerResourceAccessCache getInstance(RangerServiceDef serviceDef, RangerPolicy policy) {
- return new RangerResourceAccessCacheImpl(policy);
- }
-
- private Map<String, String> matchedResourceCache;
- private Map<String, String> notMatchedResourceCache;
-
- private RangerResourceAccessCacheImpl(RangerPolicy policy) {
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> RangerResourceAccessCacheImpl.constructor(), policyName:" + policy.getName());
- }
-
- int matchedCacheSize = RangerConfiguration.getInstance().getInt("ranger.policyengine.matched.cached.count", 1000);
- int notMatchedCacheSize = RangerConfiguration.getInstance().getInt("ranger.policyengine.not.matched.cached.count", matchedCacheSize * 10);
-
- matchedResourceCache = new CacheMap<String, String>(matchedCacheSize);
- notMatchedResourceCache = new CacheMap<String, String>(notMatchedCacheSize);
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== RangerResourceAccessCacheImpl.constructor(), policyName:" + policy.getName());
- }
- }
-
- @Override
- public LookupResult lookup(RangerAccessResource resource) {
- String strResource = resource.getCacheKey();
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> RangerResourceAccessCacheImpl.lookup(" + strResource + ")");
- }
-
- LookupResult result = LookupResult.NOT_FOUND;
-
- try {
- synchronized(this) {
- if (matchedResourceCache.containsKey(strResource)) {
- result = LookupResult.IN_MATCHED_CACHE;
- } else if(notMatchedResourceCache.containsKey(strResource)) {
- result = LookupResult.IN_NOTMATCHED_CACHE;
- }
- }
- } catch (Exception exception) {
- result = LookupResult.ERROR;
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== RangerResourceAccessCacheImpl.lookup(" + strResource + "): " + result);
- }
-
- return result;
- }
-
- @Override
- public void add(RangerAccessResource resource, CacheType cacheType) {
- String strResource = resource.getCacheKey();
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> RangerResourceAccessCacheImpl.add(" + strResource + ", " + cacheType + ")");
- }
-
- synchronized(this) {
- switch (cacheType) {
- case MATCHED_CACHE:
- matchedResourceCache.put(strResource, strResource);
- break;
-
- case NOTMATCHED_CACHE:
- notMatchedResourceCache.put(strResource, strResource);
- break;
- default:
- break;
- }
- }
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== RangerResourceAccessCacheImpl.add(" + strResource + ", " + cacheType + ")");
- }
- }
-}
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
index df09b15..fbed32c 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBasePlugin.java
@@ -28,13 +28,16 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.admin.client.RangerAdminClient;
import org.apache.ranger.admin.client.RangerAdminRESTClient;
import org.apache.ranger.audit.provider.AuditHandler;
import org.apache.ranger.audit.provider.AuditProviderFactory;
import org.apache.ranger.audit.provider.StandAloneAuditProviderFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAuditConfig;
+import org.apache.ranger.authorization.hadoop.config.RangerPluginConfig;
import org.apache.ranger.authorization.utils.StringUtil;
+import org.apache.ranger.plugin.conditionevaluator.RangerScriptExecutionContext;
import org.apache.ranger.plugin.contextenricher.RangerContextEnricher;
import org.apache.ranger.plugin.contextenricher.RangerTagEnricher;
import org.apache.ranger.plugin.model.RangerPolicy;
@@ -61,8 +64,9 @@
private static Map<String, RangerBasePlugin> servicePluginMap = new ConcurrentHashMap<>();
- private String serviceType;
- private String appId;
+ private final String serviceType;
+ private final String appId;
+ private final RangerPluginConfig config;
private String serviceName;
private String clusterName;
private PolicyRefresher refresher;
@@ -113,16 +117,16 @@
if (useStandaloneAuditProvider) {
StandAloneAuditProviderFactory factory = StandAloneAuditProviderFactory.getInstance();
+
if (factory.isInitDone()) {
ret = factory.getAuditProvider();
} else {
- RangerConfiguration conf = RangerConfiguration.getInstance();
- String auditCfg = "ranger-standalone-audit.xml";
- if (conf.addResourceIfReadable(auditCfg)) {
+ RangerAuditConfig conf = new RangerAuditConfig();
+
+ if (conf.isInitSuccess()) {
factory.init(conf.getProperties(), "StandAlone");
+
ret = factory.getAuditProvider();
- } else {
- LOG.error("StandAlone audit handler configuration not readable:[" + auditCfg + "]");
}
}
}
@@ -133,12 +137,23 @@
public RangerBasePlugin(String serviceType, String appId) {
this.serviceType = serviceType;
this.appId = appId;
+ this.config = new RangerPluginConfig(serviceType);
+
+ RangerScriptExecutionContext.init(config);
}
public String getServiceType() {
return serviceType;
}
+ public String getAppId() {
+ return appId;
+ }
+
+ public RangerPluginConfig getConfig() {
+ return config;
+ }
+
public String getClusterName() {
return clusterName;
}
@@ -173,10 +188,6 @@
return serviceDef != null && serviceDef.getId() != null ? serviceDef.getId().intValue() : -1;
}
- public String getAppId() {
- return appId;
- }
-
public String getServiceName() {
return serviceName;
}
@@ -186,19 +197,16 @@
public void init() {
cleanup();
- RangerConfiguration configuration = RangerConfiguration.getInstance();
- configuration.addResourcesForServiceType(serviceType);
-
String propertyPrefix = "ranger.plugin." + serviceType;
- long pollingIntervalMs = configuration.getLong(propertyPrefix + ".policy.pollIntervalMs", 30 * 1000);
- String cacheDir = configuration.get(propertyPrefix + ".policy.cache.dir");
- serviceName = configuration.get(propertyPrefix + ".service.name");
- clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".access.cluster.name", "");
+ long pollingIntervalMs = config.getLong(propertyPrefix + ".policy.pollIntervalMs", 30 * 1000);
+ String cacheDir = config.get(propertyPrefix + ".policy.cache.dir");
+ serviceName = config.get(propertyPrefix + ".service.name");
+ clusterName = config.get(propertyPrefix + ".access.cluster.name", "");
if(StringUtil.isEmpty(clusterName)){
- clusterName = RangerConfiguration.getInstance().get(propertyPrefix + ".ambari.cluster.name", "");
+ clusterName = config.get(propertyPrefix + ".ambari.cluster.name", "");
}
- useForwardedIPAddress = configuration.getBoolean(propertyPrefix + ".use.x-forwarded-for.ipaddress", false);
- String trustedProxyAddressString = configuration.get(propertyPrefix + ".trusted.proxy.ipaddresses");
+ useForwardedIPAddress = config.getBoolean(propertyPrefix + ".use.x-forwarded-for.ipaddress", false);
+ String trustedProxyAddressString = config.get(propertyPrefix + ".trusted.proxy.ipaddresses");
trustedProxyAddresses = StringUtils.split(trustedProxyAddressString, RANGER_TRUSTED_PROXY_IPADDRESSES_SEPARATOR_CHAR);
if (trustedProxyAddresses != null) {
for (int i = 0; i < trustedProxyAddresses.length; i++) {
@@ -216,26 +224,26 @@
LOG.warn("Ranger plugin will trust RemoteIPAddress and treat first X-Forwarded-Address in the access-request as the clientIPAddress");
}
- if (configuration.getProperties() != null) {
+ if (config.getProperties() != null) {
auditProviderFactory = new AuditProviderFactory();
- auditProviderFactory.init(configuration.getProperties(), appId);
+ auditProviderFactory.init(config.getProperties(), appId);
} else {
LOG.error("Audit subsystem is not initialized correctly. Please check audit configuration. ");
LOG.error("No authorization audits will be generated. ");
auditProviderFactory = null;
}
- rangerPluginContext = new RangerPluginContext(serviceType);
+ rangerPluginContext = new RangerPluginContext(serviceType, config);
- policyEngineOptions.configureForPlugin(configuration, propertyPrefix);
+ policyEngineOptions.configureForPlugin(config, propertyPrefix);
LOG.info(policyEngineOptions);
servicePluginMap.put(serviceName, this);
- RangerAdminClient admin = createAdminClient(serviceName, appId, propertyPrefix);
+ RangerAdminClient admin = createAdminClient(serviceName, appId, propertyPrefix, config);
- rangerRolesProvider = new RangerRolesProvider(serviceType, appId, serviceName, admin, cacheDir);
+ rangerRolesProvider = new RangerRolesProvider(serviceType, appId, serviceName, admin, cacheDir, config);
refresher = new PolicyRefresher(this, serviceType, appId, serviceName, admin, policyDownloadQueue, cacheDir, rangerRolesProvider);
refresher.setDaemon(true);
@@ -254,7 +262,7 @@
policyDownloadTimer = null;
}
- long policyReorderIntervalMs = configuration.getLong(propertyPrefix + ".policy.policyReorderInterval", 60 * 1000);
+ long policyReorderIntervalMs = config.getLong(propertyPrefix + ".policy.policyReorderInterval", 60 * 1000);
if (policyReorderIntervalMs >= 0 && policyReorderIntervalMs < 15 * 1000) {
policyReorderIntervalMs = 15 * 1000;
}
@@ -655,7 +663,7 @@
this.authContextListener = null;
}
- public static RangerAdminClient createAdminClient(String rangerServiceName, String applicationId, String propertyPrefix) {
+ public static RangerAdminClient createAdminClient(String rangerServiceName, String applicationId, String propertyPrefix, Configuration config) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerBasePlugin.createAdminClient(" + rangerServiceName + ", " + applicationId + ", " + propertyPrefix + ")");
}
@@ -663,7 +671,7 @@
RangerAdminClient ret = null;
String propertyName = propertyPrefix + ".policy.source.impl";
- String policySourceImpl = RangerConfiguration.getInstance().get(propertyName);
+ String policySourceImpl = config.get(propertyName);
if(StringUtils.isEmpty(policySourceImpl)) {
if (LOG.isDebugEnabled()) {
@@ -687,7 +695,7 @@
ret = new RangerAdminRESTClient();
}
- ret.init(rangerServiceName, applicationId, propertyPrefix);
+ ret.init(rangerServiceName, applicationId, propertyPrefix, config);
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerBasePlugin.createAdminClient(" + rangerServiceName + ", " + applicationId + ", " + propertyPrefix + "): policySourceImpl=" + policySourceImpl + ", client=" + ret);
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
index 65734f4..1df3824 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerBaseService.java
@@ -36,6 +36,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.security.SecureClientLogin;
import org.apache.hadoop.security.authentication.util.KerberosName;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
@@ -66,6 +67,12 @@
protected String serviceName;
protected String serviceType;
+ private final RangerAdminConfig config;
+
+ public RangerBaseService() {
+ this.config = new RangerAdminConfig();
+ }
+
public void init(RangerServiceDef serviceDef, RangerService service) {
this.serviceDef = serviceDef;
this.service = service;
@@ -112,6 +119,8 @@
this.serviceType = serviceType;
}
+ public RangerAdminConfig getConfig() { return config; }
+
public abstract Map<String, Object> validateConfig() throws Exception;
public abstract List<String> lookupResource(ResourceLookupContext context) throws Exception;
@@ -403,7 +412,7 @@
List<String> ret = new ArrayList<>();
HashSet<String> uniqueUsers = new HashSet<String>();
- String[] users = RangerConfiguration.getInstance().getStrings("ranger.default.policy.users");
+ String[] users = config.getStrings("ranger.default.policy.users");
if (users != null) {
for (String user : users) {
@@ -425,9 +434,9 @@
}
}
}
- String authType = RangerConfiguration.getInstance().get(RANGER_AUTH_TYPE,"simple");
- String lookupPrincipal = RangerConfiguration.getInstance().get(LOOKUP_PRINCIPAL);
- String lookupKeytab = RangerConfiguration.getInstance().get(LOOKUP_KEYTAB);
+ String authType = config.get(RANGER_AUTH_TYPE,"simple");
+ String lookupPrincipal = config.get(LOOKUP_PRINCIPAL);
+ String lookupKeytab = config.get(LOOKUP_KEYTAB);
String lookUpUser = getLookupUser(authType, lookupPrincipal, lookupKeytab);
@@ -441,7 +450,7 @@
List<String> ret = new ArrayList<>();
HashSet<String> uniqueGroups = new HashSet<String>();
- String[] groups = RangerConfiguration.getInstance().getStrings("ranger.default.policy.groups");
+ String[] groups = config.getStrings("ranger.default.policy.groups");
if (groups != null) {
for (String group : groups) {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractServiceStore.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractServiceStore.java
index 82c769f..3b54960 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractServiceStore.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/AbstractServiceStore.java
@@ -23,7 +23,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.plugin.model.RangerBaseModelObject;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
@@ -48,10 +48,16 @@
private static final int MAX_ACCESS_TYPES_IN_SERVICE_DEF = 1000;
+ private final RangerAdminConfig config;
+
// when a service-def is updated, the updated service-def should be made available to plugins
// this is achieved by incrementing policyVersion of all its services
protected abstract void updateServicesForServiceDefUpdate(RangerServiceDef serviceDef) throws Exception;
+ protected AbstractServiceStore() {
+ this.config = new RangerAdminConfig();
+ }
+
@Override
public void updateTagServiceDefForAccessTypes() throws Exception {
if (LOG.isDebugEnabled()) {
@@ -515,7 +521,7 @@
}
boolean ret = false;
- boolean autopropagateRowfilterdefToTag = RangerConfiguration.getInstance().getBoolean(AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
+ boolean autopropagateRowfilterdefToTag = config.getBoolean(AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
if (autopropagateRowfilterdefToTag) {
RangerServiceDef.RangerRowFilterDef svcRowFilterDef = serviceDef.getRowFilterDef();
@@ -600,7 +606,7 @@
RangerServiceDef.RangerRowFilterDef rowFilterDef = tagServiceDef.getRowFilterDef();
if (rowFilterDef != null) {
- boolean autopropagateRowfilterdefToTag = RangerConfiguration.getInstance().getBoolean(AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
+ boolean autopropagateRowfilterdefToTag = config.getBoolean(AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
if (autopropagateRowfilterdefToTag) {
if (CollectionUtils.isNotEmpty(rowFilterDef.getAccessTypes())) {
if (CollectionUtils.isEmpty(rowFilterDef.getResources())) {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
index c7ea948..543d13f 100755
--- a/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/store/EmbeddedServiceDefsUtil.java
@@ -27,7 +27,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.plugin.model.RangerServiceDef;
import com.google.gson.Gson;
@@ -113,11 +113,13 @@
private RangerServiceDef tagServiceDef;
- private Gson gsonBuilder;
+ private final Gson gsonBuilder;
+ private final RangerAdminConfig config;
/** Private constructor to restrict instantiation of this singleton utility class. */
private EmbeddedServiceDefsUtil() {
gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
+ config = new RangerAdminConfig();
}
public static EmbeddedServiceDefsUtil instance() {
@@ -128,7 +130,7 @@
LOG.info("==> EmbeddedServiceDefsUtil.init()");
try {
- createEmbeddedServiceDefs = RangerConfiguration.getInstance().getBoolean(PROPERTY_CREATE_EMBEDDED_SERVICE_DEFS, true);
+ createEmbeddedServiceDefs = config.getBoolean(PROPERTY_CREATE_EMBEDDED_SERVICE_DEFS, true);
supportedServiceDefs =getSupportedServiceDef();
/*
@@ -308,7 +310,7 @@
private Set<String> getSupportedServiceDef(){
Set<String> supportedServiceDef =new HashSet<>();
try{
- String ranger_supportedcomponents=RangerConfiguration.getInstance().get(PROPERTY_SUPPORTED_SERVICE_DEFS, DEFAULT_BOOTSTRAP_SERVICEDEF_LIST);
+ String ranger_supportedcomponents = config.get(PROPERTY_SUPPORTED_SERVICE_DEFS, DEFAULT_BOOTSTRAP_SERVICEDEF_LIST);
if(StringUtils.isBlank(ranger_supportedcomponents) || "all".equalsIgnoreCase(ranger_supportedcomponents)){
ranger_supportedcomponents=DEFAULT_BOOTSTRAP_SERVICEDEF_LIST;
}
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
index 7ec8495..34de568 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java
@@ -30,7 +30,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.admin.client.RangerAdminClient;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.service.RangerBasePlugin;
import com.google.gson.Gson;
@@ -91,7 +90,7 @@
this.gson = gson;
String propertyPrefix = "ranger.plugin." + serviceType;
- disableCacheIfServiceNotFound = RangerConfiguration.getInstance().getBoolean(propertyPrefix + ".disable.cache.if.servicenotfound", true);
+ disableCacheIfServiceNotFound = plugIn.getConfig().getBoolean(propertyPrefix + ".disable.cache.if.servicenotfound", true);
if(LOG.isDebugEnabled()) {
LOG.debug("<== PolicyRefresher(serviceName=" + serviceName + ").PolicyRefresher()");
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java
index fe8712d..0e1808f 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java
@@ -50,7 +50,7 @@
import org.apache.commons.lang.Validate;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.authorization.hadoop.utils.RangerCredentialProvider;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
@@ -111,16 +111,14 @@
private int lastKnownActiveUrlIndex;
private final List<String> configuredURLs;
+ private final Configuration config;
- public RangerRESTClient() {
- this(RangerConfiguration.getInstance().get(RANGER_PROP_POLICYMGR_URL),
- RangerConfiguration.getInstance().get(RANGER_PROP_POLICYMGR_SSLCONFIG_FILENAME));
- }
- public RangerRESTClient(String url, String sslConfigFileName) {
+ public RangerRESTClient(String url, String sslConfigFileName, Configuration config) {
mUrl = url;
mSslConfigFileName = sslConfigFileName;
this.configuredURLs = getURLs(mUrl);
+ this.config = config;
this.setLastKnownActiveUrlIndex((new Random()).nextInt(getConfiguredURLs().size()));
init();
}
@@ -250,23 +248,21 @@
InputStream in = null;
try {
- RangerConfiguration conf = RangerConfiguration.getInstance();
-
in = getFileInputStream(mSslConfigFileName);
if (in != null) {
- conf.addResource(in);
+ config.addResource(in);
}
- mKeyStoreURL = conf.get(RANGER_POLICYMGR_CLIENT_KEY_FILE_CREDENTIAL);
+ mKeyStoreURL = config.get(RANGER_POLICYMGR_CLIENT_KEY_FILE_CREDENTIAL);
mKeyStoreAlias = RANGER_POLICYMGR_CLIENT_KEY_FILE_CREDENTIAL_ALIAS;
- mKeyStoreType = conf.get(RANGER_POLICYMGR_CLIENT_KEY_FILE_TYPE, RANGER_POLICYMGR_CLIENT_KEY_FILE_TYPE_DEFAULT);
- mKeyStoreFile = conf.get(RANGER_POLICYMGR_CLIENT_KEY_FILE);
+ mKeyStoreType = config.get(RANGER_POLICYMGR_CLIENT_KEY_FILE_TYPE, RANGER_POLICYMGR_CLIENT_KEY_FILE_TYPE_DEFAULT);
+ mKeyStoreFile = config.get(RANGER_POLICYMGR_CLIENT_KEY_FILE);
- mTrustStoreURL = conf.get(RANGER_POLICYMGR_TRUSTSTORE_FILE_CREDENTIAL);
+ mTrustStoreURL = config.get(RANGER_POLICYMGR_TRUSTSTORE_FILE_CREDENTIAL);
mTrustStoreAlias = RANGER_POLICYMGR_TRUSTSTORE_FILE_CREDENTIAL_ALIAS;
- mTrustStoreType = conf.get(RANGER_POLICYMGR_TRUSTSTORE_FILE_TYPE, RANGER_POLICYMGR_TRUSTSTORE_FILE_TYPE_DEFAULT);
- mTrustStoreFile = conf.get(RANGER_POLICYMGR_TRUSTSTORE_FILE);
+ mTrustStoreType = config.get(RANGER_POLICYMGR_TRUSTSTORE_FILE_TYPE, RANGER_POLICYMGR_TRUSTSTORE_FILE_TYPE_DEFAULT);
+ mTrustStoreFile = config.get(RANGER_POLICYMGR_TRUSTSTORE_FILE);
} catch (IOException ioe) {
LOG.error("Unable to load SSL Config FileName: [" + mSslConfigFileName + "]", ioe);
} finally {
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
index 52cea4d..0b492ab 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTUtils.java
@@ -26,7 +26,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.hadoop.conf.Configuration;
import com.kstruct.gethostname4j.Hostname;
/**
@@ -99,8 +99,8 @@
}
}
- public String getPolicyRestUrl(String propertyPrefix) {
- String url = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.url");
+ public String getPolicyRestUrl(String propertyPrefix, Configuration config) {
+ String url = config.get(propertyPrefix + ".policy.rest.url");
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerRESTUtils.getPolicyRestUrl(" + url + ")");
@@ -109,8 +109,8 @@
return url;
}
- public String getSsslConfigFileName(String propertyPrefix) {
- String sslConfigFileName = RangerConfiguration.getInstance().get(propertyPrefix + ".policy.rest.ssl.config.file");
+ public String getSsslConfigFileName(String propertyPrefix, Configuration config) {
+ String sslConfigFileName = config.get(propertyPrefix + ".policy.rest.ssl.config.file");
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerRESTUtils.getSsslConfigFileName(" + sslConfigFileName + ")");
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
index 1afd07d..ccd51cb 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerResourceTrie.java
@@ -24,9 +24,10 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.model.RangerServiceDef;
+import org.apache.ranger.plugin.policyengine.RangerPluginContext;
import org.apache.ranger.plugin.policyresourcematcher.RangerPolicyResourceEvaluator;
import org.apache.ranger.plugin.resourcematcher.RangerAbstractResourceMatcher;
import org.apache.ranger.plugin.resourcematcher.RangerResourceMatcher;
@@ -59,10 +60,10 @@
private final boolean isOptimizedForRetrieval;
public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, List<T> evaluators) {
- this(resourceDef, evaluators, null, true);
+ this(resourceDef, evaluators, null, true, null);
}
- public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, List<T> evaluators, Comparator<T> comparator, boolean isOptimizedForRetrieval) {
+ public RangerResourceTrie(RangerServiceDef.RangerResourceDef resourceDef, List<T> evaluators, Comparator<T> comparator, boolean isOptimizedForRetrieval, RangerPluginContext pluginContext) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerResourceTrie(" + resourceDef.getName() + ", evaluatorCount=" + evaluators.size() + ", isOptimizedForRetrieval=" + isOptimizedForRetrieval + ")");
}
@@ -73,7 +74,8 @@
perf = RangerPerfTracer.getPerfTracer(PERF_TRIE_INIT_LOG, "RangerResourceTrie.init(name=" + resourceDef.getName() + ")");
}
- int builderThreadCount = RangerConfiguration.getInstance().getInt(TRIE_BUILDER_THREAD_COUNT, 1);
+ Configuration config = pluginContext != null ? pluginContext.getConfig() : null;
+ int builderThreadCount = config != null ? config.getInt(TRIE_BUILDER_THREAD_COUNT, 1) : 1;
if (builderThreadCount < 1) {
builderThreadCount = 1;
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRolesProvider.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRolesProvider.java
index 38ba6cf..1e2d74d 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRolesProvider.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRolesProvider.java
@@ -24,8 +24,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.admin.client.RangerAdminClient;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.service.RangerBasePlugin;
import java.io.File;
@@ -57,7 +57,7 @@
private boolean rangerUserGroupRolesSetInPlugin;
private boolean serviceDefSetInPlugin;
- public RangerRolesProvider(String serviceType, String appId, String serviceName, RangerAdminClient rangerAdmin, String cacheDir) {
+ public RangerRolesProvider(String serviceType, String appId, String serviceName, RangerAdminClient rangerAdmin, String cacheDir, Configuration config) {
if (LOG.isDebugEnabled()) {
LOG.debug("==> RangerRolesProvider(serviceName=" + serviceName + ").RangerRolesProvider()");
}
@@ -88,7 +88,7 @@
this.gson = gson;
String propertyPrefix = "ranger.plugin." + serviceType;
- disableCacheIfServiceNotFound = RangerConfiguration.getInstance().getBoolean(propertyPrefix + ".disable.cache.if.servicenotfound", true);
+ disableCacheIfServiceNotFound = config.getBoolean(propertyPrefix + ".disable.cache.if.servicenotfound", true);
if (LOG.isDebugEnabled()) {
LOG.debug("<== RangerRolesProvider(serviceName=" + serviceName + ").RangerRolesProvider()");
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceDefUtil.java b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceDefUtil.java
index f82f65f..c6cb22b 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceDefUtil.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceDefUtil.java
@@ -22,12 +22,13 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerDataMaskTypeDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
+import org.apache.ranger.plugin.policyengine.RangerPluginContext;
import org.apache.ranger.plugin.store.AbstractServiceStore;
import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil;
@@ -39,11 +40,12 @@
public class ServiceDefUtil {
- public static boolean getOption_enableDenyAndExceptionsInPolicies(RangerServiceDef serviceDef) {
+ public static boolean getOption_enableDenyAndExceptionsInPolicies(RangerServiceDef serviceDef, RangerPluginContext pluginContext) {
boolean ret = false;
if(serviceDef != null) {
- boolean enableDenyAndExceptionsInPoliciesHiddenOption = RangerConfiguration.getInstance().getBoolean("ranger.servicedef.enableDenyAndExceptionsInPolicies", true);
+ Configuration config = pluginContext != null ? pluginContext.getConfig() : null;
+ boolean enableDenyAndExceptionsInPoliciesHiddenOption = config != null ? config.getBoolean("ranger.servicedef.enableDenyAndExceptionsInPolicies", true) : true;
boolean defaultValue = enableDenyAndExceptionsInPoliciesHiddenOption || StringUtils.equalsIgnoreCase(serviceDef.getName(), EmbeddedServiceDefsUtil.EMBEDDED_SERVICEDEF_TAG_NAME);
ret = ServiceDefUtil.getBooleanValue(serviceDef.getOptions(), RangerServiceDef.OPTION_ENABLE_DENY_AND_EXCEPTIONS_IN_POLICIES, defaultValue);
diff --git a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyEngine.java b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyEngine.java
index 83bbffc..c7c59cec 100644
--- a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyEngine.java
+++ b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyEngine.java
@@ -31,7 +31,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.ranger.audit.provider.AuditHandler;
import org.apache.ranger.audit.provider.AuditProviderFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.audit.RangerDefaultAuditHandler;
import org.apache.ranger.plugin.contextenricher.RangerTagForEval;
import org.apache.ranger.plugin.model.RangerPolicy;
@@ -71,11 +70,14 @@
import static org.junit.Assert.*;
public class TestPolicyEngine {
+ static RangerPluginContext pluginContext;
static Gson gsonBuilder;
long requestCount = 0L;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
+ pluginContext = new RangerPluginContext("hive");
+
gsonBuilder = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSSZ")
.setPrettyPrinting()
.registerTypeAdapter(RangerAccessRequest.class, new RangerAccessRequestDeserializer())
@@ -173,8 +175,7 @@
"</configuration>\n");
writer.close();
- RangerConfiguration config = RangerConfiguration.getInstance();
- config.addResource(new org.apache.hadoop.fs.Path(file.toURI()));
+ pluginContext.getConfig().addResource(new org.apache.hadoop.fs.Path(file.toURI()));
}
@AfterClass
@@ -437,15 +438,14 @@
policyEngineOptions.disableAccessEvaluationWithPolicyACLSummary = false;
policyEngineOptions.optimizeTrieForRetrieval = false;
- boolean useForwardedIPAddress = RangerConfiguration.getInstance().getBoolean("ranger.plugin.hive.use.x-forwarded-for.ipaddress", false);
- String trustedProxyAddressString = RangerConfiguration.getInstance().get("ranger.plugin.hive.trusted.proxy.ipaddresses");
+ boolean useForwardedIPAddress = pluginContext.getConfig().getBoolean("ranger.plugin.hive.use.x-forwarded-for.ipaddress", false);
+ String trustedProxyAddressString = pluginContext.getConfig().get("ranger.plugin.hive.trusted.proxy.ipaddresses");
String[] trustedProxyAddresses = StringUtils.split(trustedProxyAddressString, ';');
if (trustedProxyAddresses != null) {
for (int i = 0; i < trustedProxyAddresses.length; i++) {
trustedProxyAddresses[i] = trustedProxyAddresses[i].trim();
}
}
- RangerPluginContext pluginContext = new RangerPluginContext("hive");
pluginContext.setClusterName("cl1");
pluginContext.setClusterType("on-prem");
diff --git a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
index 311d3eb..a27c43d 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/authorization/hbase/RangerAuthorizationCoprocessor.java
@@ -55,7 +55,6 @@
import org.apache.hadoop.hbase.wal.WALEdit;
import org.apache.hadoop.security.AccessControlException;
import org.apache.ranger.audit.model.AuthzAuditEvent;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.hadoop.constants.RangerHadoopConstants;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.audit.RangerDefaultAuditHandler;
@@ -534,7 +533,7 @@
perf = RangerPerfTracer.getPerfTracer(PERF_HBASEAUTH_REQUEST_LOG, "RangerAuthorizationCoprocessor.authorizeAccess(request=Operation[" + operation + "]");
ColumnFamilyAccessResult accessResult = evaluateAccess(ctx, operation, action, env, familyMap);
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(hbasePlugin.getConfig());
if (accessResult._everythingIsAccessible) {
auditHandler.logAuthzAudits(accessResult._accessAllowedEvents);
auditHandler.logAuthzAudits(accessResult._familyLevelAccessEvents);
@@ -577,7 +576,7 @@
perf = RangerPerfTracer.getPerfTracer(PERF_HBASEAUTH_REQUEST_LOG, "RangerAuthorizationCoprocessor.requirePermission(request=Operation[" + operation + "]");
}
ColumnFamilyAccessResult accessResult = evaluateAccess(ctx, operation, action, regionServerEnv, familyMap);
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(hbasePlugin.getConfig());
if (accessResult._everythingIsAccessible) {
auditHandler.logAuthzAudits(accessResult._accessAllowedEvents);
auditHandler.logAuthzAudits(accessResult._familyLevelAccessEvents);
@@ -1101,7 +1100,7 @@
plugin.init();
- UpdateRangerPoliciesOnGrantRevoke = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.HBASE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_PROP, RangerHadoopConstants.HBASE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_DEFAULT_VALUE);
+ UpdateRangerPoliciesOnGrantRevoke = plugin.getConfig().getBoolean(RangerHadoopConstants.HBASE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_PROP, RangerHadoopConstants.HBASE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_DEFAULT_VALUE);
hbasePlugin = plugin;
}
@@ -1237,7 +1236,7 @@
if(plugin != null) {
- RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler();
+ RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler(hbasePlugin.getConfig());
plugin.grantAccess(grData, auditHandler);
@@ -1277,7 +1276,7 @@
if(plugin != null) {
- RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler();
+ RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler(hbasePlugin.getConfig());
plugin.revokeAccess(grData, auditHandler);
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAdminClientImpl.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAdminClientImpl.java
index 48c0410..b7b0442 100644
--- a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAdminClientImpl.java
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/RangerAdminClientImpl.java
@@ -25,30 +25,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "hbase-policies.json";
private final static String tagFilename = "hbase-policies-tag.json";
- private Gson gson;
-
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
diff --git a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
index 919920d..5eba4a8 100644
--- a/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
+++ b/hbase-agent/src/test/java/org/apache/ranger/authorization/hbase/TestPolicyEngine.java
@@ -108,7 +108,7 @@
pluginContext.setClusterType("on-prem");
RangerPolicyEngine policyEngine = new RangerPolicyEngineImpl(testName, servicePolicies, policyEngineOptions, pluginContext);
- RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler();
+ RangerAccessResultProcessor auditHandler = new RangerDefaultAuditHandler(pluginContext.getConfig());
for(TestData test : testCase.tests) {
RangerAccessResult expected = test.result;
diff --git a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
index 52df2db..5998d46 100644
--- a/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
+++ b/hdfs-agent/src/main/java/org/apache/ranger/authorization/hadoop/RangerHdfsAuthorizer.java
@@ -26,17 +26,14 @@
import java.net.InetAddress;
import java.security.SecureRandom;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
+import java.util.*;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.FsAction;
import org.apache.hadoop.hdfs.DFSUtil;
import org.apache.hadoop.hdfs.server.namenode.INode;
@@ -49,7 +46,7 @@
import org.apache.hadoop.security.AccessControlException;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.ranger.audit.model.AuthzAuditEvent;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerPluginConfig;
import org.apache.ranger.authorization.hadoop.constants.RangerHadoopConstants;
import org.apache.ranger.authorization.hadoop.exceptions.RangerAccessControlException;
import org.apache.ranger.plugin.audit.RangerDefaultAuditHandler;
@@ -80,12 +77,19 @@
private RangerHdfsPlugin rangerPlugin = null;
private Map<FsAction, Set<String>> access2ActionListMapper = new HashMap<FsAction, Set<String>>();
+ private final Path addlConfigFile;
public RangerHdfsAuthorizer() {
+ this(null);
+ }
+
+ public RangerHdfsAuthorizer(Path addlConfigFile) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerHdfsAuthorizer.RangerHdfsAuthorizer()");
}
+ this.addlConfigFile = addlConfigFile;
+
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerHdfsAuthorizer.RangerHdfsAuthorizer()");
}
@@ -96,10 +100,11 @@
LOG.debug("==> RangerHdfsAuthorizer.start()");
}
- RangerHdfsPlugin plugin = new RangerHdfsPlugin();
+ RangerHdfsPlugin plugin = new RangerHdfsPlugin(addlConfigFile);
+
plugin.init();
- if (RangerHdfsPlugin.isOptimizeSubAccessAuthEnabled()) {
+ if (plugin.isOptimizeSubAccessAuthEnabled()) {
LOG.info(RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_PROP + " is enabled");
}
@@ -181,6 +186,10 @@
return rangerAce;
}
+ // for testing
+ public Configuration getConfig() {
+ return rangerPlugin.getConfig();
+ }
private enum AuthzStatus { ALLOW, DENY, NOT_DETERMINED };
@@ -311,7 +320,7 @@
parent = inodes.length > 1 ? inodes[inodes.length - 2] : null;
inode = inodes[inodes.length - 1]; // could be null while creating a new file
- auditHandler = doNotGenerateAuditRecord ? null : new RangerHdfsAuditHandler(resourcePath, isTraverseOnlyCheck);
+ auditHandler = doNotGenerateAuditRecord ? null : new RangerHdfsAuditHandler(resourcePath, isTraverseOnlyCheck, rangerPlugin.getHadoopModuleName(), rangerPlugin.getExcludedUsers());
/* Hadoop versions prior to 2.8.0 didn't ask for authorization of parent/ancestor traversal for
* reading or writing a file. However, Hadoop version 2.8.0 and later ask traversal authorization for
@@ -400,7 +409,7 @@
AuthzStatus subDirAuthStatus = AuthzStatus.NOT_DETERMINED;
- boolean optimizeSubAccessAuthEnabled = RangerHdfsPlugin.isOptimizeSubAccessAuthEnabled();
+ boolean optimizeSubAccessAuthEnabled = rangerPlugin.isOptimizeSubAccessAuthEnabled();
if (optimizeSubAccessAuthEnabled) {
subDirAuthStatus = isAccessAllowedForHierarchy(data.dir, dirAttribs, data.resourcePath, subAccess, user, groups, plugin);
@@ -576,7 +585,7 @@
}
AuthzStatus authzStatus = AuthzStatus.NOT_DETERMINED;
- if(RangerHdfsPlugin.isHadoopAuthEnabled() && defaultEnforcer != null) {
+ if(rangerPlugin.isHadoopAuthEnabled() && defaultEnforcer != null) {
RangerPerfTracer hadoopAuthPerf = null;
@@ -718,7 +727,7 @@
if (subDirPath.charAt(subDirPath.length() - 1) != org.apache.hadoop.fs.Path.SEPARATOR_CHAR) {
subDirPath = subDirPath + Character.toString(org.apache.hadoop.fs.Path.SEPARATOR_CHAR);
}
- subDirPath = subDirPath + RangerHdfsPlugin.getRandomizedWildcardPathName();
+ subDirPath = subDirPath + rangerPlugin.getRandomizedWildcardPathName();
for (String accessType : accessTypes) {
RangerHdfsAccessRequest request = new RangerHdfsAccessRequest(null, subDirPath, pathOwner, access, accessType, user, groups);
@@ -754,24 +763,47 @@
class RangerHdfsPlugin extends RangerBasePlugin {
- private static boolean hadoopAuthEnabled = RangerHadoopConstants.RANGER_ADD_HDFS_PERMISSION_DEFAULT;
- private static String fileNameExtensionSeparator;
- private static boolean optimizeSubAccessAuthEnabled = RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_DEFAULT;
- private static String randomizedWildcardPathName;
+ private static final Log LOG = LogFactory.getLog(RangerHdfsPlugin.class);
- public RangerHdfsPlugin() {
+ private static String fileNameExtensionSeparator = RangerHdfsAuthorizer.DEFAULT_FILENAME_EXTENSION_SEPARATOR;
+
+ private final boolean hadoopAuthEnabled;
+ private final boolean optimizeSubAccessAuthEnabled;
+ private final String randomizedWildcardPathName;
+ private final String hadoopModuleName;
+ private final Set<String> excludeUsers = new HashSet<>();
+
+ public RangerHdfsPlugin(Path addlConfigFile) {
super("hdfs", "hdfs");
- }
- public void init() {
- super.init();
+ RangerPluginConfig config = getConfig();
- RangerHdfsPlugin.hadoopAuthEnabled = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.RANGER_ADD_HDFS_PERMISSION_PROP, RangerHadoopConstants.RANGER_ADD_HDFS_PERMISSION_DEFAULT);
- RangerHdfsPlugin.fileNameExtensionSeparator = RangerConfiguration.getInstance().get(RangerHdfsAuthorizer.RANGER_FILENAME_EXTENSION_SEPARATOR_PROP, RangerHdfsAuthorizer.DEFAULT_FILENAME_EXTENSION_SEPARATOR);
- RangerHdfsPlugin.optimizeSubAccessAuthEnabled = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_PROP, RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_DEFAULT);
+ if (addlConfigFile != null) {
+ config.addResource(addlConfigFile);
+ }
String random = generateString("^&#@!%()-_+=@:;'<>`~abcdefghijklmnopqrstuvwxyz01234567890");
- randomizedWildcardPathName = RangerPathResourceMatcher.WILDCARD_ASTERISK + random + RangerPathResourceMatcher.WILDCARD_ASTERISK;
+
+ RangerHdfsPlugin.fileNameExtensionSeparator = config.get(RangerHdfsAuthorizer.RANGER_FILENAME_EXTENSION_SEPARATOR_PROP, RangerHdfsAuthorizer.DEFAULT_FILENAME_EXTENSION_SEPARATOR);
+
+ this.hadoopAuthEnabled = config.getBoolean(RangerHadoopConstants.RANGER_ADD_HDFS_PERMISSION_PROP, RangerHadoopConstants.RANGER_ADD_HDFS_PERMISSION_DEFAULT);
+ this.optimizeSubAccessAuthEnabled = config.getBoolean(RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_PROP, RangerHadoopConstants.RANGER_OPTIMIZE_SUBACCESS_AUTHORIZATION_DEFAULT);
+ this.randomizedWildcardPathName = RangerPathResourceMatcher.WILDCARD_ASTERISK + random + RangerPathResourceMatcher.WILDCARD_ASTERISK;
+ this.hadoopModuleName = config.get(RangerHadoopConstants.AUDITLOG_HADOOP_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_HADOOP_MODULE_ACL_NAME);
+
+ String excludeUserList = config.get(RangerHadoopConstants.AUDITLOG_HDFS_EXCLUDE_LIST_PROP, RangerHadoopConstants.AUDITLOG_EMPTY_STRING);
+
+ if (excludeUserList != null && excludeUserList.trim().length() > 0) {
+ for(String excludeUser : excludeUserList.trim().split(",")) {
+ excludeUser = excludeUser.trim();
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Adding exclude user [" + excludeUser + "]");
+ }
+
+ excludeUsers.add(excludeUser);
+ }
+ }
}
// Build random string of length between 56 and 112 characters
@@ -794,18 +826,21 @@
return new String(text);
}
- public static boolean isHadoopAuthEnabled() {
- return RangerHdfsPlugin.hadoopAuthEnabled;
- }
public static String getFileNameExtensionSeparator() {
- return RangerHdfsPlugin.fileNameExtensionSeparator;
+ return fileNameExtensionSeparator;
}
- public static boolean isOptimizeSubAccessAuthEnabled() {
- return RangerHdfsPlugin.optimizeSubAccessAuthEnabled;
+
+ public boolean isHadoopAuthEnabled() {
+ return hadoopAuthEnabled;
}
- public static String getRandomizedWildcardPathName() {
- return RangerHdfsPlugin.randomizedWildcardPathName;
+ public boolean isOptimizeSubAccessAuthEnabled() {
+ return optimizeSubAccessAuthEnabled;
}
+ public String getRandomizedWildcardPathName() {
+ return randomizedWildcardPathName;
+ }
+ public String getHadoopModuleName() { return hadoopModuleName; }
+ public Set<String> getExcludedUsers() { return excludeUsers; }
}
class RangerHdfsResource extends RangerAccessResourceImpl {
@@ -863,26 +898,14 @@
private final String pathToBeValidated;
private final boolean auditOnlyIfDenied;
- private static final String HadoopModuleName = RangerConfiguration.getInstance().get(RangerHadoopConstants.AUDITLOG_HADOOP_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_HADOOP_MODULE_ACL_NAME);
- private static final String excludeUserList = RangerConfiguration.getInstance().get(RangerHadoopConstants.AUDITLOG_HDFS_EXCLUDE_LIST_PROP, RangerHadoopConstants.AUDITLOG_EMPTY_STRING);
- private static HashSet<String> excludeUsers = null;
+ private final String hadoopModuleName;
+ private final Set<String> excludeUsers;
- static {
- if (excludeUserList != null && excludeUserList.trim().length() > 0) {
- excludeUsers = new HashSet<String>();
- for(String excludeUser : excludeUserList.trim().split(",")) {
- excludeUser = excludeUser.trim();
- if (LOG.isDebugEnabled()) {
- LOG.debug("Adding exclude user [" + excludeUser + "]");
- }
- excludeUsers.add(excludeUser);
- }
- }
- }
-
- public RangerHdfsAuditHandler(String pathToBeValidated, boolean auditOnlyIfDenied) {
+ public RangerHdfsAuditHandler(String pathToBeValidated, boolean auditOnlyIfDenied, String hadoopModuleName, Set<String> excludedUsers) {
this.pathToBeValidated = pathToBeValidated;
this.auditOnlyIfDenied = auditOnlyIfDenied;
+ this.hadoopModuleName = hadoopModuleName;
+ this.excludeUsers = excludedUsers;
}
@Override
@@ -934,7 +957,7 @@
auditEvent.setResultReason(path);
auditEvent.setAccessResult((short) (accessGranted ? 1 : 0));
auditEvent.setAccessType(action == null ? null : action.toString());
- auditEvent.setAclEnforcer(HadoopModuleName);
+ auditEvent.setAclEnforcer(hadoopModuleName);
auditEvent.setPolicyId(-1);
}
diff --git a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerAdminClientImpl.java b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerAdminClientImpl.java
index 3f8d1c8..c3b8038 100644
--- a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerAdminClientImpl.java
+++ b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerAdminClientImpl.java
@@ -23,33 +23,23 @@
import java.util.List;
import org.apache.commons.lang.StringUtils;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "hdfs-policies.json";
private final static String tagFilename = "hdfs-policies-tag.json";
- private Gson gson;
+ private String hdfsVersion = null;
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
+ public void init(String serviceName, String appId, String configPropertyPrefix, Configuration config) {
+ super.init(serviceName, appId, configPropertyPrefix, config);
+
+ this.hdfsVersion = config.get("hdfs.version", "");
}
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
@@ -58,7 +48,6 @@
if (basedir == null) {
basedir = new File(".").getCanonicalPath();
}
- String hdfsVersion = RangerConfiguration.getInstance().get("hdfs.version", "");
final String relativePath;
if (StringUtils.isNotBlank(hdfsVersion)) {
@@ -78,7 +67,6 @@
if (basedir == null) {
basedir = new File(".").getCanonicalPath();
}
- String hdfsVersion = RangerConfiguration.getInstance().get("hdfs.version", "");
final String relativePath;
if (StringUtils.isNotBlank(hdfsVersion)) {
diff --git a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerHdfsAuthorizerTest.java b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerHdfsAuthorizerTest.java
index ac53dcf..61afa47 100644
--- a/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerHdfsAuthorizerTest.java
+++ b/hdfs-agent/src/test/java/org/apache/ranger/services/hdfs/RangerHdfsAuthorizerTest.java
@@ -144,7 +144,6 @@
@BeforeClass
public static void setup() {
-
try {
File file = File.createTempFile("hdfs-version-site", ".xml");
file.deleteOnExit();
@@ -152,21 +151,19 @@
try(final FileOutputStream outStream = new FileOutputStream(file);
final OutputStreamWriter writer = new OutputStreamWriter(outStream, StandardCharsets.UTF_8)) {
writer.write("<configuration>\n" +
- " <property>\n" +
- " <name>hdfs.version</name>\n" +
- " <value>hdfs_version_3.0</value>\n" +
- " </property>\n" +
- "</configuration>\n");
+ " <property>\n" +
+ " <name>hdfs.version</name>\n" +
+ " <value>hdfs_version_3.0</value>\n" +
+ " </property>\n" +
+ "</configuration>\n");
}
- RangerConfiguration config = RangerConfiguration.getInstance();
- config.addResource(new org.apache.hadoop.fs.Path(file.toURI()));
+ authorizer = new RangerHdfsAuthorizer(new org.apache.hadoop.fs.Path(file.toURI()));
+ authorizer.start();
} catch (Exception exception) {
Assert.fail("Cannot create hdfs-version-site file:[" + exception.getMessage() + "]");
}
- authorizer = new RangerHdfsAuthorizer();
- authorizer.start();
AccessControlEnforcer accessControlEnforcer = Mockito.mock(AccessControlEnforcer.class);
rangerControlEnforcer = authorizer.getExternalAccessControlEnforcer(accessControlEnforcer);
}
diff --git a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuditHandler.java b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuditHandler.java
index 765da59..c6a9c66 100644
--- a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuditHandler.java
+++ b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuditHandler.java
@@ -196,7 +196,7 @@
public void logAuditEventForDfs(String userName, String dfsCommand, boolean accessGranted, int repositoryType, String repositoryName) {
AuthzAuditEvent auditEvent = new AuthzAuditEvent();
- auditEvent.setAclEnforcer(RangerDefaultAuditHandler.RangerModuleName);
+ auditEvent.setAclEnforcer(moduleName);
auditEvent.setResourceType("@dfs"); // to be consistent with earlier release
auditEvent.setAccessType("DFS");
auditEvent.setAction("DFS");
diff --git a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
index f10bde4..c077ce3 100644
--- a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
+++ b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
@@ -62,7 +62,6 @@
import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveResourceACLs;
import org.apache.hadoop.hive.ql.session.SessionState;
import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.hadoop.constants.RangerHadoopConstants;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.model.RangerPolicy;
@@ -2548,11 +2547,11 @@
public void init() {
super.init();
- RangerHivePlugin.UpdateXaPoliciesOnGrantRevoke = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.HIVE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_PROP, RangerHadoopConstants.HIVE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_DEFAULT_VALUE);
- RangerHivePlugin.BlockUpdateIfRowfilterColumnMaskSpecified = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.HIVE_BLOCK_UPDATE_IF_ROWFILTER_COLUMNMASK_SPECIFIED_PROP, RangerHadoopConstants.HIVE_BLOCK_UPDATE_IF_ROWFILTER_COLUMNMASK_SPECIFIED_DEFAULT_VALUE);
- RangerHivePlugin.DescribeShowTableAuth = RangerConfiguration.getInstance().get(RangerHadoopConstants.HIVE_DESCRIBE_TABLE_SHOW_COLUMNS_AUTH_OPTION_PROP, RangerHadoopConstants.HIVE_DESCRIBE_TABLE_SHOW_COLUMNS_AUTH_OPTION_PROP_DEFAULT_VALUE);
+ RangerHivePlugin.UpdateXaPoliciesOnGrantRevoke = getConfig().getBoolean(RangerHadoopConstants.HIVE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_PROP, RangerHadoopConstants.HIVE_UPDATE_RANGER_POLICIES_ON_GRANT_REVOKE_DEFAULT_VALUE);
+ RangerHivePlugin.BlockUpdateIfRowfilterColumnMaskSpecified = getConfig().getBoolean(RangerHadoopConstants.HIVE_BLOCK_UPDATE_IF_ROWFILTER_COLUMNMASK_SPECIFIED_PROP, RangerHadoopConstants.HIVE_BLOCK_UPDATE_IF_ROWFILTER_COLUMNMASK_SPECIFIED_DEFAULT_VALUE);
+ RangerHivePlugin.DescribeShowTableAuth = getConfig().get(RangerHadoopConstants.HIVE_DESCRIBE_TABLE_SHOW_COLUMNS_AUTH_OPTION_PROP, RangerHadoopConstants.HIVE_DESCRIBE_TABLE_SHOW_COLUMNS_AUTH_OPTION_PROP_DEFAULT_VALUE);
- String fsSchemesString = RangerConfiguration.getInstance().get(RANGER_PLUGIN_HIVE_ULRAUTH_FILESYSTEM_SCHEMES, RANGER_PLUGIN_HIVE_ULRAUTH_FILESYSTEM_SCHEMES_DEFAULT);
+ String fsSchemesString = getConfig().get(RANGER_PLUGIN_HIVE_ULRAUTH_FILESYSTEM_SCHEMES, RANGER_PLUGIN_HIVE_ULRAUTH_FILESYSTEM_SCHEMES_DEFAULT);
fsScheme = StringUtils.split(fsSchemesString, FILESYSTEM_SCHEMES_SEPARATOR_CHAR);
if (fsScheme != null) {
diff --git a/hive-agent/src/test/java/org/apache/ranger/services/hive/RangerAdminClientImpl.java b/hive-agent/src/test/java/org/apache/ranger/services/hive/RangerAdminClientImpl.java
index 9440016..ce40e34 100644
--- a/hive-agent/src/test/java/org/apache/ranger/services/hive/RangerAdminClientImpl.java
+++ b/hive-agent/src/test/java/org/apache/ranger/services/hive/RangerAdminClientImpl.java
@@ -25,30 +25,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "hive-policies.json";
private final static String tagFilename = "hive-policies-tag.json";
- private Gson gson;
-
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
diff --git a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
index 0fafa6e..cba2c8f 100644
--- a/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
+++ b/knox-agent/src/main/java/org/apache/ranger/admin/client/RangerAdminJersey2RESTClient.java
@@ -41,6 +41,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.AccessControlException;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.ranger.plugin.util.*;
@@ -81,26 +82,28 @@
private final String pluginCapabilities = Long.toHexString(new RangerPluginCapability().getPluginCapabilities());
@Override
- public void init(String serviceName, String appId, String configPropertyPrefix) {
+ public void init(String serviceName, String appId, String configPropertyPrefix, Configuration config) {
if(LOG.isDebugEnabled()) {
LOG.debug("==> RangerAdminJersey2RESTClient.init(" + configPropertyPrefix + ")");
}
+ super.init(serviceName, appId, configPropertyPrefix, config);
+
_serviceName = serviceName;
_pluginId = _utils.getPluginId(serviceName, appId);
- String tmpUrl = _utils.getPolicyRestUrl(configPropertyPrefix);
- _sslConfigFileName = _utils.getSsslConfigFileName(configPropertyPrefix);
- _restClientConnTimeOutMs = RangerConfiguration.getInstance().getInt(configPropertyPrefix + ".policy.rest.client.connection.timeoutMs", 120 * 1000);
- _restClientReadTimeOutMs = RangerConfiguration.getInstance().getInt(configPropertyPrefix + ".policy.rest.client.read.timeoutMs", 30 * 1000);
- _clusterName = RangerConfiguration.getInstance().get(configPropertyPrefix + ".access.cluster.name", "");
+ String tmpUrl = _utils.getPolicyRestUrl(configPropertyPrefix, config);
+ _sslConfigFileName = _utils.getSsslConfigFileName(configPropertyPrefix, config);
+ _restClientConnTimeOutMs = config.getInt(configPropertyPrefix + ".policy.rest.client.connection.timeoutMs", 120 * 1000);
+ _restClientReadTimeOutMs = config.getInt(configPropertyPrefix + ".policy.rest.client.read.timeoutMs", 30 * 1000);
+ _clusterName = config.get(configPropertyPrefix + ".access.cluster.name", "");
if(StringUtil.isEmpty(_clusterName)){
- _clusterName = RangerConfiguration.getInstance().get(configPropertyPrefix + ".ambari.cluster.name", "");
+ _clusterName =config.get(configPropertyPrefix + ".ambari.cluster.name", "");
}
- _supportsPolicyDeltas = RangerConfiguration.getInstance().get(configPropertyPrefix + ".policy.rest.supports.policy.deltas", "false");
+ _supportsPolicyDeltas = config.get(configPropertyPrefix + ".policy.rest.supports.policy.deltas", "false");
if (!"true".equalsIgnoreCase(_supportsPolicyDeltas)) {
_supportsPolicyDeltas = "false";
}
- _supportsTagDeltas = RangerConfiguration.getInstance().get(configPropertyPrefix + ".tag.rest.supports.tag.deltas", "false");
+ _supportsTagDeltas = config.get(configPropertyPrefix + ".tag.rest.supports.tag.deltas", "false");
if (!"true".equalsIgnoreCase(_supportsTagDeltas)) {
_supportsTagDeltas = "false";
}
diff --git a/knox-agent/src/main/java/org/apache/ranger/authorization/knox/KnoxRangerPlugin.java b/knox-agent/src/main/java/org/apache/ranger/authorization/knox/KnoxRangerPlugin.java
index 94a47b3..5ce5a53 100644
--- a/knox-agent/src/main/java/org/apache/ranger/authorization/knox/KnoxRangerPlugin.java
+++ b/knox-agent/src/main/java/org/apache/ranger/authorization/knox/KnoxRangerPlugin.java
@@ -45,7 +45,7 @@
// mandatory call to base plugin
super.init();
// One time call to register the audit hander with the policy engine.
- super.setResultProcessor(new RangerDefaultAuditHandler());
+ super.setResultProcessor(new RangerDefaultAuditHandler(getConfig()));
initialized = true;
}
}
diff --git a/knox-agent/src/test/java/org/apache/ranger/services/knox/RangerAdminClientImpl.java b/knox-agent/src/test/java/org/apache/ranger/services/knox/RangerAdminClientImpl.java
index 82444d5..4c51e59 100644
--- a/knox-agent/src/test/java/org/apache/ranger/services/knox/RangerAdminClientImpl.java
+++ b/knox-agent/src/test/java/org/apache/ranger/services/knox/RangerAdminClientImpl.java
@@ -25,30 +25,14 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.base.Charsets;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "knox-policies.json";
- private Gson gson;
-
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
diff --git a/plugin-atlas/src/main/java/org/apache/ranger/authorization/atlas/authorizer/RangerAtlasAuthorizer.java b/plugin-atlas/src/main/java/org/apache/ranger/authorization/atlas/authorizer/RangerAtlasAuthorizer.java
index 1c56589..7f841d4 100644
--- a/plugin-atlas/src/main/java/org/apache/ranger/authorization/atlas/authorizer/RangerAtlasAuthorizer.java
+++ b/plugin-atlas/src/main/java/org/apache/ranger/authorization/atlas/authorizer/RangerAtlasAuthorizer.java
@@ -72,7 +72,8 @@
plugin = new RangerAtlasPlugin();
plugin.init();
- plugin.setResultProcessor(new RangerDefaultAuditHandler());
+
+ plugin.setResultProcessor(new RangerDefaultAuditHandler(plugin.getConfig()));
atlasPlugin = plugin;
}
diff --git a/plugin-elasticsearch/src/main/java/org/apache/ranger/authorization/elasticsearch/authorizer/RangerElasticsearchAuthorizer.java b/plugin-elasticsearch/src/main/java/org/apache/ranger/authorization/elasticsearch/authorizer/RangerElasticsearchAuthorizer.java
index 31de631..bd0585c 100644
--- a/plugin-elasticsearch/src/main/java/org/apache/ranger/authorization/elasticsearch/authorizer/RangerElasticsearchAuthorizer.java
+++ b/plugin-elasticsearch/src/main/java/org/apache/ranger/authorization/elasticsearch/authorizer/RangerElasticsearchAuthorizer.java
@@ -115,7 +115,7 @@
public void init() {
super.init();
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(getConfig());
super.setResultProcessor(auditHandler);
}
diff --git a/plugin-kafka/src/main/java/org/apache/ranger/services/kafka/RangerServiceKafka.java b/plugin-kafka/src/main/java/org/apache/ranger/services/kafka/RangerServiceKafka.java
index 37ac3e4..cf5da97 100644
--- a/plugin-kafka/src/main/java/org/apache/ranger/services/kafka/RangerServiceKafka.java
+++ b/plugin-kafka/src/main/java/org/apache/ranger/services/kafka/RangerServiceKafka.java
@@ -24,7 +24,6 @@
import java.util.Map;
import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
@@ -103,7 +102,7 @@
List<RangerPolicy> ret = super.getDefaultRangerPolicies();
- String authType = RangerConfiguration.getInstance().get(RANGER_AUTH_TYPE,"simple");
+ String authType = getConfig().get(RANGER_AUTH_TYPE,"simple");
if (StringUtils.equalsIgnoreCase(authType, KERBEROS_TYPE)) {
if (LOG.isDebugEnabled()) {
diff --git a/plugin-kafka/src/test/java/org/apache/ranger/authorization/kafka/authorizer/RangerAdminClientImpl.java b/plugin-kafka/src/test/java/org/apache/ranger/authorization/kafka/authorizer/RangerAdminClientImpl.java
index ad3ff0d..9117c64 100644
--- a/plugin-kafka/src/test/java/org/apache/ranger/authorization/kafka/authorizer/RangerAdminClientImpl.java
+++ b/plugin-kafka/src/test/java/org/apache/ranger/authorization/kafka/authorizer/RangerAdminClientImpl.java
@@ -25,30 +25,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "kafka-policies.json";
private final static String tagFilename = "kafka-policies-tag.json";
- private Gson gson;
-
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
diff --git a/plugin-kms/src/main/java/org/apache/ranger/authorization/kms/authorizer/RangerKmsAuthorizer.java b/plugin-kms/src/main/java/org/apache/ranger/authorization/kms/authorizer/RangerKmsAuthorizer.java
index aab4639..da4006a 100755
--- a/plugin-kms/src/main/java/org/apache/ranger/authorization/kms/authorizer/RangerKmsAuthorizer.java
+++ b/plugin-kms/src/main/java/org/apache/ranger/authorization/kms/authorizer/RangerKmsAuthorizer.java
@@ -346,7 +346,7 @@
public void init() {
super.init();
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(getConfig());
super.setResultProcessor(auditHandler);
}
diff --git a/plugin-kms/src/main/java/org/apache/ranger/services/kms/RangerServiceKMS.java b/plugin-kms/src/main/java/org/apache/ranger/services/kms/RangerServiceKMS.java
index 579f639..96ab449 100644
--- a/plugin-kms/src/main/java/org/apache/ranger/services/kms/RangerServiceKMS.java
+++ b/plugin-kms/src/main/java/org/apache/ranger/services/kms/RangerServiceKMS.java
@@ -22,7 +22,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
@@ -103,9 +102,9 @@
List<RangerPolicy> ret = super.getDefaultRangerPolicies();
- String adminPrincipal = RangerConfiguration.getInstance().get(ADMIN_USER_PRINCIPAL);
- String adminKeytab = RangerConfiguration.getInstance().get(ADMIN_USER_KEYTAB);
- String authType = RangerConfiguration.getInstance().get(RANGER_AUTH_TYPE,"simple");
+ String adminPrincipal = getConfig().get(ADMIN_USER_PRINCIPAL);
+ String adminKeytab = getConfig().get(ADMIN_USER_KEYTAB);
+ String authType = getConfig().get(RANGER_AUTH_TYPE,"simple");
String adminUser = getLookupUser(authType, adminPrincipal, adminKeytab);
@@ -135,7 +134,7 @@
item.setUsers(users);
}
- String hdfsUser = RangerConfiguration.getInstance().get("ranger.kms.service.user.hdfs", "hdfs");
+ String hdfsUser = getConfig().get("ranger.kms.service.user.hdfs", "hdfs");
if (hdfsUser != null && !hdfsUser.isEmpty()) {
LOG.info("Creating default KMS policy item for " + hdfsUser);
List<String> users = new ArrayList<String>();
@@ -145,7 +144,7 @@
}
- String hiveUser = RangerConfiguration.getInstance().get("ranger.kms.service.user.hive", "hive");
+ String hiveUser = getConfig().get("ranger.kms.service.user.hive", "hive");
if (hiveUser != null && !hiveUser.isEmpty()) {
LOG.info("Creating default KMS policy item for " + hiveUser);
diff --git a/plugin-kms/src/test/java/org/apache/ranger/authorization/kms/authorizer/RangerAdminClientImpl.java b/plugin-kms/src/test/java/org/apache/ranger/authorization/kms/authorizer/RangerAdminClientImpl.java
index 6290f36..b9feb4b 100644
--- a/plugin-kms/src/test/java/org/apache/ranger/authorization/kms/authorizer/RangerAdminClientImpl.java
+++ b/plugin-kms/src/test/java/org/apache/ranger/authorization/kms/authorizer/RangerAdminClientImpl.java
@@ -25,29 +25,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private final static String cacheFilename = "kms-policies.json";
- private Gson gson;
-
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch(Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
diff --git a/plugin-kylin/src/main/java/org/apache/ranger/authorization/kylin/authorizer/RangerKylinAuthorizer.java b/plugin-kylin/src/main/java/org/apache/ranger/authorization/kylin/authorizer/RangerKylinAuthorizer.java
index ed935f8..e084990 100644
--- a/plugin-kylin/src/main/java/org/apache/ranger/authorization/kylin/authorizer/RangerKylinAuthorizer.java
+++ b/plugin-kylin/src/main/java/org/apache/ranger/authorization/kylin/authorizer/RangerKylinAuthorizer.java
@@ -150,7 +150,7 @@
public void init() {
super.init();
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(getConfig());
super.setResultProcessor(auditHandler);
}
diff --git a/plugin-kylin/src/test/java/org/apache/ranger/authorization/kylin/authorizer/RangerAdminClientImpl.java b/plugin-kylin/src/test/java/org/apache/ranger/authorization/kylin/authorizer/RangerAdminClientImpl.java
index 2e361c0..bd80e92 100644
--- a/plugin-kylin/src/test/java/org/apache/ranger/authorization/kylin/authorizer/RangerAdminClientImpl.java
+++ b/plugin-kylin/src/test/java/org/apache/ranger/authorization/kylin/authorizer/RangerAdminClientImpl.java
@@ -24,31 +24,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads
* policies in from a file and returns them.
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private static final String cacheFilename = "kylin-policies.json";
- private Gson gson;
-
- @Override
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch (Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
@Override
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis)
diff --git a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuditHandler.java b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuditHandler.java
index 96f6d49..359211c 100644
--- a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuditHandler.java
+++ b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuditHandler.java
@@ -18,8 +18,8 @@
*/
package org.apache.ranger.authorization.solr.authorizer;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.audit.model.AuthzAuditEvent;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.audit.RangerMultiResourceAuditHandler;
import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
import org.apache.ranger.plugin.policyengine.RangerAccessResourceImpl;
@@ -37,8 +37,8 @@
private AuthzAuditEvent auditEvent = null;
- public RangerSolrAuditHandler(){
- String excludeUserList = RangerConfiguration.getInstance().get(PROP_SOLR_PLUGIN_AUDIT_EXCLUDED_USERS, solrUser);
+ public RangerSolrAuditHandler(Configuration config){
+ String excludeUserList = config.get(PROP_SOLR_PLUGIN_AUDIT_EXCLUDED_USERS, solrUser);
excludeUsers = Arrays.asList(excludeUserList.split(","));
}
diff --git a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
index 46d0f66..9c419df 100644
--- a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
+++ b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
@@ -150,22 +150,22 @@
}
}
solrPlugin.init();
- auditHandler = new RangerSolrAuditHandler();
+ auditHandler = new RangerSolrAuditHandler(solrPlugin.getConfig());
solrPlugin.setResultProcessor(auditHandler);
} catch (Throwable t) {
logger.fatal("Error creating and initializing RangerBasePlugin()");
}
try {
- useProxyIP = RangerConfiguration.getInstance().getBoolean(
+ useProxyIP = solrPlugin.getConfig().getBoolean(
PROP_USE_PROXY_IP, useProxyIP);
- proxyIPHeader = RangerConfiguration.getInstance().get(
+ proxyIPHeader = solrPlugin.getConfig().get(
PROP_PROXY_IP_HEADER, proxyIPHeader);
// First get from the -D property
solrAppName = System.getProperty("solr.kerberos.jaas.appname",
solrAppName);
// Override if required from Ranger properties
- solrAppName = RangerConfiguration.getInstance().get(
+ solrAppName = solrPlugin.getConfig().get(
PROP_SOLR_APP_NAME, solrAppName);
logger.info("init(): useProxyIP=" + useProxyIP);
diff --git a/plugin-sqoop/src/main/java/org/apache/ranger/authorization/sqoop/authorizer/RangerSqoopAuthorizer.java b/plugin-sqoop/src/main/java/org/apache/ranger/authorization/sqoop/authorizer/RangerSqoopAuthorizer.java
index d099f00..05c61fb 100644
--- a/plugin-sqoop/src/main/java/org/apache/ranger/authorization/sqoop/authorizer/RangerSqoopAuthorizer.java
+++ b/plugin-sqoop/src/main/java/org/apache/ranger/authorization/sqoop/authorizer/RangerSqoopAuthorizer.java
@@ -145,7 +145,7 @@
public void init() {
super.init();
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(getConfig());
super.setResultProcessor(auditHandler);
}
diff --git a/plugin-sqoop/src/test/java/org/apache/ranger/authorization/sqoop/authorizer/RangerAdminClientImpl.java b/plugin-sqoop/src/test/java/org/apache/ranger/authorization/sqoop/authorizer/RangerAdminClientImpl.java
index 758d681..cae3973 100644
--- a/plugin-sqoop/src/test/java/org/apache/ranger/authorization/sqoop/authorizer/RangerAdminClientImpl.java
+++ b/plugin-sqoop/src/test/java/org/apache/ranger/authorization/sqoop/authorizer/RangerAdminClientImpl.java
@@ -23,31 +23,13 @@
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* A test implementation of the RangerAdminClient interface that just reads
* policies in from a file and returns them
*/
public class RangerAdminClientImpl extends AbstractRangerAdminClient {
- private static final Logger LOG = LoggerFactory.getLogger(RangerAdminClientImpl.class);
private static final String cacheFilename = "sqoop-policies.json";
- private Gson gson;
-
- @Override
- public void init(String serviceName, String appId, String configPropertyPrefix) {
- Gson gson = null;
- try {
- gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
- } catch (Throwable excp) {
- LOG.error("RangerAdminClientImpl: failed to create GsonBuilder object", excp);
- }
- this.gson = gson;
- }
@Override
public ServicePolicies getServicePoliciesIfUpdated(long lastKnownVersion, long lastActivationTimeInMillis)
diff --git a/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java b/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
index 4f18619..1f96582 100644
--- a/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
+++ b/plugin-yarn/src/main/java/org/apache/ranger/authorization/yarn/authorizer/RangerYarnAuthorizer.java
@@ -36,7 +36,6 @@
import org.apache.hadoop.yarn.security.*;
import org.apache.hadoop.yarn.security.PrivilegedEntity.EntityType;
import org.apache.ranger.audit.model.AuthzAuditEvent;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.hadoop.constants.RangerHadoopConstants;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.plugin.audit.RangerDefaultAuditHandler;
@@ -49,20 +48,20 @@
import org.apache.ranger.plugin.util.RangerPerfTracer;
public class RangerYarnAuthorizer extends YarnAuthorizationProvider {
- public static final String ACCESS_TYPE_ADMIN_QUEUE = "admin-queue";
- public static final String ACCESS_TYPE_SUBMIT_APP = "submit-app";
- public static final String ACCESS_TYPE_ADMIN = "admin";
-
- public static final String KEY_RESOURCE_QUEUE = "queue";
-
- private static boolean yarnAuthEnabled = RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_DEFAULT;
-
private static final Log LOG = LogFactory.getLog(RangerYarnAuthorizer.class);
private static final Log PERF_YARNAUTH_REQUEST_LOG = RangerPerfTracer.getPerfLogger("yarnauth.request");
+ public static final String ACCESS_TYPE_ADMIN_QUEUE = "admin-queue";
+ public static final String ACCESS_TYPE_SUBMIT_APP = "submit-app";
+ public static final String ACCESS_TYPE_ADMIN = "admin";
+ public static final String KEY_RESOURCE_QUEUE = "queue";
+
private static volatile RangerYarnPlugin yarnPlugin = null;
+ private boolean yarnAuthEnabled = RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_DEFAULT;
+ private String yarnModuleName = RangerHadoopConstants.DEFAULT_YARN_MODULE_ACL_NAME;
+
private AccessControlList admins = null;
private Map<PrivilegedEntity, Map<AccessType, AccessControlList>> yarnAcl = new HashMap<PrivilegedEntity, Map<AccessType, AccessControlList>>();
@@ -87,7 +86,9 @@
}
}
- RangerYarnAuthorizer.yarnAuthEnabled = RangerConfiguration.getInstance().getBoolean(RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_PROP, RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_DEFAULT);
+ this.yarnAuthEnabled = yarnPlugin.getConfig().getBoolean(RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_PROP, RangerHadoopConstants.RANGER_ADD_YARN_PERMISSION_DEFAULT);
+ this.yarnModuleName = yarnPlugin.getConfig().get(RangerHadoopConstants.AUDITLOG_YARN_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_YARN_MODULE_ACL_NAME);
+
if(LOG.isDebugEnabled()) {
LOG.debug("<== RangerYarnAuthorizer.init()");
@@ -121,12 +122,12 @@
RangerYarnAccessRequest request = new RangerYarnAccessRequest(entity, getRangerAccessType(accessType), accessType.name(), ugi, forwardedAddresses, remoteIpAddress);
- auditHandler = new RangerYarnAuditHandler();
+ auditHandler = new RangerYarnAuditHandler(yarnModuleName);
result = plugin.isAccessAllowed(request, auditHandler);
}
- if(RangerYarnAuthorizer.yarnAuthEnabled && (result == null || !result.getIsAccessDetermined())) {
+ if(yarnAuthEnabled && (result == null || !result.getIsAccessDetermined())) {
if(RangerPerfTracer.isPerfTraceEnabled(PERF_YARNAUTH_REQUEST_LOG)) {
yarnAclPerf = RangerPerfTracer.getPerfTracer(PERF_YARNAUTH_REQUEST_LOG, "RangerYarnNativeAuthorizer.isAllowedByYarnAcl(entity=" + entity + ")");
@@ -289,7 +290,7 @@
public void init() {
super.init();
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler(getConfig());
super.setResultProcessor(auditHandler);
}
@@ -333,12 +334,12 @@
class RangerYarnAuditHandler extends RangerDefaultAuditHandler {
private static final Log LOG = LogFactory.getLog(RangerYarnAuditHandler.class);
- private static final String YarnModuleName = RangerConfiguration.getInstance().get(RangerHadoopConstants.AUDITLOG_YARN_MODULE_ACL_NAME_PROP , RangerHadoopConstants.DEFAULT_YARN_MODULE_ACL_NAME);
-
+ private final String yarnModuleName;
private boolean isAuditEnabled = false;
private AuthzAuditEvent auditEvent = null;
- public RangerYarnAuditHandler() {
+ public RangerYarnAuditHandler(String yarnModuleName) {
+ this.yarnModuleName = yarnModuleName;
}
@Override
@@ -365,7 +366,7 @@
if(auditEvent != null) {
auditEvent.setAccessResult((short) (accessGranted ? 1 : 0));
- auditEvent.setAclEnforcer(YarnModuleName);
+ auditEvent.setAclEnforcer(yarnModuleName);
auditEvent.setPolicyId(-1);
}
diff --git a/ranger-examples/plugin-sampleapp/src/main/java/org/apache/ranger/examples/sampleapp/RangerAuthorizer.java b/ranger-examples/plugin-sampleapp/src/main/java/org/apache/ranger/examples/sampleapp/RangerAuthorizer.java
index c06894e..6b3d6ea 100644
--- a/ranger-examples/plugin-sampleapp/src/main/java/org/apache/ranger/examples/sampleapp/RangerAuthorizer.java
+++ b/ranger-examples/plugin-sampleapp/src/main/java/org/apache/ranger/examples/sampleapp/RangerAuthorizer.java
@@ -41,7 +41,7 @@
if(plugin == null) {
plugin = new RangerBasePlugin("sampleapp", "sampleapp");
- plugin.setResultProcessor(new RangerDefaultAuditHandler());
+ plugin.setResultProcessor(new RangerDefaultAuditHandler(plugin.getConfig()));
plugin.init();
}
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
index df31a61..8af378d 100644
--- a/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/PerfTestEngine.java
@@ -41,15 +41,17 @@
static private final long POLICY_ENGINE_REORDER_AFTER_PROCESSING_REQUESTS_COUNT = 100;
private final URL servicePoliciesFileURL;
private final RangerPolicyEngineOptions policyEngineOptions;
+ private final URL configFileURL;
private RangerPolicyEngine policyEvaluationEngine;
private RangerPluginContext rangerPluginContext;
private final boolean disableDynamicPolicyEvalReordering;
private AtomicLong requestCount = new AtomicLong();
- public PerfTestEngine(final URL servicePoliciesFileURL, RangerPolicyEngineOptions policyEngineOptions, boolean disableDynamicPolicyEvalReordering) {
+ public PerfTestEngine(final URL servicePoliciesFileURL, RangerPolicyEngineOptions policyEngineOptions, boolean disableDynamicPolicyEvalReordering, URL configFileURL) {
this.servicePoliciesFileURL = servicePoliciesFileURL;
this.policyEngineOptions = policyEngineOptions;
this.disableDynamicPolicyEvalReordering = disableDynamicPolicyEvalReordering;
+ this.configFileURL = configFileURL;
}
public boolean init() {
@@ -76,6 +78,7 @@
RangerServiceDef serviceDef = servicePolicies.getServiceDef();
String serviceType = (serviceDef != null) ? serviceDef.getName() : "";
rangerPluginContext = new RangerPluginContext(serviceType);
+ rangerPluginContext.getConfig().addResource(configFileURL);
policyEvaluationEngine = new RangerPolicyEngineImpl("perf-test", servicePolicies, policyEngineOptions, rangerPluginContext);
requestCount.set(0L);
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java
index 4fc6655..efcc39c 100644
--- a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPluginPerfTester.java
@@ -29,7 +29,6 @@
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.policyevaluator.RangerPolicyEvaluator;
import org.apache.ranger.plugin.service.RangerBasePlugin;
@@ -76,11 +75,10 @@
Path filePath = buildConfigurationFile();
if (filePath != null) {
- RangerConfiguration rangerConfig = RangerConfiguration.getInstance();
- rangerConfig.addResource(filePath);
-
plugin = new RangerBasePlugin(serviceType, appId);
+ plugin.getConfig().addResource(filePath);
+
Runtime runtime = Runtime.getRuntime();
runtime.gc();
diff --git a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
index 53e5cf0..2da4397 100644
--- a/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
+++ b/ranger-tools/src/main/java/org/apache/ranger/policyengine/RangerPolicyenginePerfTester.java
@@ -21,7 +21,6 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.plugin.policyengine.RangerPolicyEngineOptions;
import org.apache.ranger.plugin.policyevaluator.RangerPolicyEvaluator;
import org.apache.ranger.plugin.util.PerfDataRecorder;
@@ -66,12 +65,7 @@
URL configurationFileURL = perfTestOptions.getPerfConfigurationFileURL();
- if (configurationFileURL != null) {
- RangerConfiguration config = RangerConfiguration.getInstance();
- config.addResource(configurationFileURL);
- }
-
- PerfTestEngine perfTestEngine = new PerfTestEngine(servicePoliciesFileURL, policyEngineOptions, perfTestOptions.getIsDynamicReorderingDisabled());
+ PerfTestEngine perfTestEngine = new PerfTestEngine(servicePoliciesFileURL, policyEngineOptions, perfTestOptions.getIsDynamicReorderingDisabled(), configurationFileURL);
if (!perfTestEngine.init()) {
LOG.error("Error initializing test data. Existing...");
System.exit(1);
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
index abb1b10..6cd8634 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/RangerBizUtil.java
@@ -37,7 +37,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.log4j.Logger;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.ContextUtil;
import org.apache.ranger.common.GUIDUtil;
@@ -107,10 +107,15 @@
public static final int batchSize = PropertiesUtil.getIntProperty("ranger.jpa.jdbc.batch-clear.size", 10);
String auditDBType = AUDIT_STORE_RDBMS;
+ private final boolean allowUnauthenticatedAccessInSecureEnvironment;
static String fileSeparator = PropertiesUtil.getProperty("ranger.file.separator", "/");
public RangerBizUtil() {
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ allowUnauthenticatedAccessInSecureEnvironment = config.getBoolean("ranger.admin.allow.unauthenticated.access", false);
+
maxFirstNameLength = Integer.parseInt(PropertiesUtil.getProperty("ranger.user.firstname.maxlength", "16"));
maxDisplayNameLength = PropertiesUtil.getIntProperty("ranger.bookmark.name.maxlen", maxDisplayNameLength);
@@ -441,11 +446,10 @@
return matchFound;
}
- public static void failUnauthenticatedIfNotAllowed() throws Exception {
+ public void failUnauthenticatedIfNotAllowed() throws Exception {
if (UserGroupInformation.isSecurityEnabled()) {
UserSessionBase currentUserSession = ContextUtil.getCurrentUserSession();
if (currentUserSession == null) {
- boolean allowUnauthenticatedAccessInSecureEnvironment = RangerConfiguration.getInstance().getBoolean("ranger.admin.allow.unauthenticated.access", false);
if (!allowUnauthenticatedAccessInSecureEnvironment) {
throw new Exception("Unauthenticated access not allowed");
}
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
index 213639a..99a0d3e 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/RoleDBStore.java
@@ -29,7 +29,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
import org.apache.ranger.common.RangerRoleCache;
@@ -69,6 +69,8 @@
@Autowired
RangerBizUtil bizUtil;
+ RangerAdminConfig config;
+
private Boolean populateExistingBaseFields = true;
AbstractPredicateUtil predicateUtil = null;
@@ -81,6 +83,8 @@
LOG.debug("==> RoleDBStore.initStore()");
}
+ config = new RangerAdminConfig();
+
roleService.setPopulateExistingBaseFields(populateExistingBaseFields);
predicateUtil = new RolePredicateUtil();
@@ -330,7 +334,7 @@
if (LOG.isDebugEnabled()) {
LOG.debug("Service Type for serviceId (" + serviceId + ") = " + serviceTypeName);
}
- String serviceTypesToGetAllRoles = RangerConfiguration.getInstance().get("ranger.admin.service.types.for.returning.all.roles", "solr");
+ String serviceTypesToGetAllRoles = config.get("ranger.admin.service.types.for.returning.all.roles", "solr");
boolean getAllRoles = false;
if (StringUtils.isNotEmpty(serviceTypesToGetAllRoles)) {
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 0ab733c..333672d 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -60,7 +60,7 @@
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.ranger.audit.provider.MiscUtil;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.common.AppConstants;
import org.apache.ranger.common.ContextUtil;
import org.apache.ranger.common.MessageEnums;
@@ -341,6 +341,7 @@
public static final String ACCESS_TYPE_GET_METADATA = "getmetadata";
private ServicePredicateUtil predicateUtil = null;
+ private RangerAdminConfig config = null;
@Override
@@ -360,19 +361,16 @@
LOG.debug("==> ServiceDBStore.initStore()");
}
+ config = new RangerAdminConfig();
+
if(! legacyServiceDefsInitDone) {
synchronized(ServiceDBStore.class) {
if(!legacyServiceDefsInitDone) {
- if (! RangerConfiguration.getInstance().addAdminResources()) {
- LOG.error("Could not add ranger-admin resources to RangerConfiguration.");
- }
-
- SUPPORTS_POLICY_DELTAS = RangerConfiguration.getInstance().getBoolean("ranger.admin.supports.policy.deltas", false);
- RETENTION_PERIOD_IN_DAYS = RangerConfiguration.getInstance().getInt("ranger.admin.delta.retention.time.in.days", 7);
- TAG_RETENTION_PERIOD_IN_DAYS = RangerConfiguration.getInstance().getInt("ranger.admin.tag.delta.retention.time.in.days", 3);
-
- isRolesDownloadedByService = RangerConfiguration.getInstance().getBoolean("ranger.support.for.service.specific.role.download", false);
+ SUPPORTS_POLICY_DELTAS = config.getBoolean("ranger.admin.supports.policy.deltas", false);
+ RETENTION_PERIOD_IN_DAYS = config.getInt("ranger.admin.delta.retention.time.in.days", 7);
+ TAG_RETENTION_PERIOD_IN_DAYS = config.getInt("ranger.admin.tag.delta.retention.time.in.days", 3);
+ isRolesDownloadedByService = config.getBoolean("ranger.support.for.service.specific.role.download", false);
TransactionTemplate txTemplate = new TransactionTemplate(txManager);
@@ -3555,7 +3553,7 @@
}
}
- private static void persistChangeLog(ServiceVersionUpdater serviceVersionUpdater) {
+ private void persistChangeLog(ServiceVersionUpdater serviceVersionUpdater) {
XXServiceVersionInfoDao serviceVersionInfoDao = serviceVersionUpdater.daoManager.getXXServiceVersionInfo();
XXServiceVersionInfo serviceVersionInfoDbObj = serviceVersionInfoDao.findByServiceId(serviceVersionUpdater.serviceId);
@@ -4738,7 +4736,6 @@
}
private String getAuditMode(String serviceTypeName, String serviceName) {
- RangerConfiguration config = RangerConfiguration.getInstance();
String ret = config.get("ranger.audit.global.mode");
if (StringUtils.isNotBlank(ret)) {
return ret;
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
index 0e33298..2d7f407 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/TagDBStore.java
@@ -30,7 +30,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.authorization.utils.JsonUtils;
import org.apache.ranger.common.MessageEnums;
import org.apache.ranger.common.RESTErrorUtil;
@@ -100,8 +100,12 @@
@Autowired
RESTErrorUtil restErrorUtil;
+ RangerAdminConfig config;
+
@PostConstruct
public void initStore() {
+ config = new RangerAdminConfig();
+
RangerAdminTagEnricher.setTagStore(this);
RangerAdminTagEnricher.setDaoManager(daoManager);
}
@@ -1268,7 +1272,9 @@
public static boolean isSupportsTagDeltas() {
if (!IS_SUPPORTS_TAG_DELTAS_INITIALIZED) {
- SUPPORTS_TAG_DELTAS = RangerConfiguration.getInstance().getBoolean("ranger.admin.supports.tag.deltas", false);
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ SUPPORTS_TAG_DELTAS = config.getBoolean("ranger.admin.supports.tag.deltas", false);
IS_SUPPORTS_TAG_DELTAS_INITIALIZED = true;
}
return SUPPORTS_TAG_DELTAS;
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerAdminTagEnricher.java b/security-admin/src/main/java/org/apache/ranger/common/RangerAdminTagEnricher.java
index ad8d43b..c4b134e 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerAdminTagEnricher.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerAdminTagEnricher.java
@@ -19,7 +19,7 @@
package org.apache.ranger.common;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.db.RangerDaoManager;
import org.apache.ranger.entity.XXServiceVersionInfo;
import org.apache.ranger.plugin.contextenricher.RangerTagEnricher;
@@ -38,6 +38,7 @@
private static TagStore tagStore = null;
private static RangerDaoManager daoManager = null;
+ private static boolean ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS_INITIALIZED = false;
private static boolean ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS;
private Long serviceId;
@@ -57,7 +58,13 @@
}
super.init();
- ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS = RangerConfiguration.getInstance().getBoolean("ranger.admin.tag.enricher.supports.tag.deltas", true);
+ if (!ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS_INITIALIZED) {
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS = config.getBoolean("ranger.admin.tag.enricher.supports.tag.deltas", true);
+
+ ADMIN_TAG_ENRICHER_SUPPORTS_TAG_DELTAS_INITIALIZED = true;
+ }
ServiceStore svcStore = tagStore != null ? tagStore.getServiceStore() : null;
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerRoleCache.java b/security-admin/src/main/java/org/apache/ranger/common/RangerRoleCache.java
index b0bd427..4b17ef0 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerRoleCache.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerRoleCache.java
@@ -21,7 +21,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.biz.RoleDBStore;
import org.apache.ranger.plugin.model.RangerRole;
@@ -57,7 +57,9 @@
}
private RangerRoleCache() {
- waitTimeInSeconds = RangerConfiguration.getInstance().getInt("ranger.admin.policy.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ waitTimeInSeconds = config.getInt("ranger.admin.policy.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
}
public RangerRoles getLatestRangerRoleOrCached(String serviceName, RoleDBStore roleDBStore, Long lastKnownRoleVersion, Long rangerRoleVersionInDB) throws Exception {
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerServicePoliciesCache.java b/security-admin/src/main/java/org/apache/ranger/common/RangerServicePoliciesCache.java
index 8942b4e..68740f5 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerServicePoliciesCache.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerServicePoliciesCache.java
@@ -21,7 +21,7 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.store.ServiceStore;
@@ -61,7 +61,9 @@
}
private RangerServicePoliciesCache() {
- waitTimeInSeconds = RangerConfiguration.getInstance().getInt("ranger.admin.policy.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ waitTimeInSeconds = config.getInt("ranger.admin.policy.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
}
public void dump() {
diff --git a/security-admin/src/main/java/org/apache/ranger/common/RangerServiceTagsCache.java b/security-admin/src/main/java/org/apache/ranger/common/RangerServiceTagsCache.java
index 22a92b2..249a3bf 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/RangerServiceTagsCache.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/RangerServiceTagsCache.java
@@ -21,7 +21,7 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.plugin.store.TagStore;
import org.apache.commons.logging.Log;
@@ -59,8 +59,10 @@
}
private RangerServiceTagsCache() {
- useServiceTagsCache = RangerConfiguration.getInstance().getBoolean("ranger.admin.tag.download.usecache", true);
- waitTimeInSeconds = RangerConfiguration.getInstance().getInt("ranger.admin.tag.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
+ RangerAdminConfig config = new RangerAdminConfig();
+
+ useServiceTagsCache = config.getBoolean("ranger.admin.tag.download.usecache", true);
+ waitTimeInSeconds = config.getInt("ranger.admin.tag.download.cache.max.waittime.for.update", MAX_WAIT_TIME_FOR_UPDATE);
}
public void dump() {
diff --git a/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java b/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
index 66f8e7c..6cae5cb 100644
--- a/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
+++ b/security-admin/src/main/java/org/apache/ranger/patch/BaseLoader.java
@@ -25,6 +25,7 @@
import java.text.DecimalFormat;
import org.apache.log4j.Logger;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.common.DateUtil;
import org.apache.ranger.util.CLIUtil;
import org.springframework.transaction.annotation.Propagation;
@@ -45,8 +46,10 @@
boolean firstCall = true;
int batchSize = -1;
DecimalFormat twoDForm = new DecimalFormat("#.00");
+ protected final RangerAdminConfig config;
public BaseLoader() {
+ this.config = new RangerAdminConfig();
}
public void init(int batchSize) throws Exception {
diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchForTagServiceDefUpdate_J10028.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchForTagServiceDefUpdate_J10028.java
index b113bd4..4dbfdf1 100644
--- a/security-admin/src/main/java/org/apache/ranger/patch/PatchForTagServiceDefUpdate_J10028.java
+++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchForTagServiceDefUpdate_J10028.java
@@ -20,7 +20,6 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.biz.RangerBizUtil;
import org.apache.ranger.biz.ServiceDBStore;
import org.apache.ranger.common.JSONUtil;
@@ -247,7 +246,7 @@
RangerServiceDef.RangerRowFilterDef rowFilterDef = tagServiceDef.getRowFilterDef();
if (rowFilterDef != null) {
- boolean autopropagateRowfilterdefToTag = RangerConfiguration.getInstance().getBoolean(AbstractServiceStore.AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AbstractServiceStore.AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
+ boolean autopropagateRowfilterdefToTag = config.getBoolean(AbstractServiceStore.AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP, AbstractServiceStore.AUTOPROPAGATE_ROWFILTERDEF_TO_TAG_PROP_DEFAULT);
if (autopropagateRowfilterdefToTag) {
if (CollectionUtils.isNotEmpty(rowFilterDef.getAccessTypes())) {
addOrUpdateResourceDefForTagResource(rowFilterDef.getResources(), accessPolicyTagResource);
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 3d8a329..fc9f133 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -59,6 +59,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.admin.client.datatype.RESTResponse;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
import org.apache.ranger.authorization.utils.StringUtil;
import org.apache.ranger.biz.AssetMgr;
@@ -243,6 +244,7 @@
private RangerPolicyEngineOptions delegateAdminOptions;
private RangerPolicyEngineOptions policySearchAdminOptions;
private RangerPolicyEngineOptions defaultAdminOptions;
+ private final RangerAdminConfig config = new RangerAdminConfig();
public ServiceREST() {
}
@@ -3674,7 +3676,7 @@
final String propertyPrefix = "ranger.admin";
- opts.configureDelegateAdmin(RangerConfiguration.getInstance(), propertyPrefix);
+ opts.configureDelegateAdmin(config, propertyPrefix);
return opts;
}
@@ -3684,7 +3686,7 @@
final String propertyPrefix = "ranger.admin";
- opts.configureRangerAdminForPolicySearch(RangerConfiguration.getInstance(), propertyPrefix);
+ opts.configureRangerAdminForPolicySearch(config, propertyPrefix);
return opts;
}
@@ -3693,7 +3695,7 @@
final String propertyPrefix = "ranger.admin";
- opts.configureDefaultRangerAdmin(RangerConfiguration.getInstance(), propertyPrefix);
+ opts.configureDefaultRangerAdmin(config, propertyPrefix);
return opts;
}
@@ -4085,11 +4087,11 @@
if (LOG.isDebugEnabled()) {
LOG.debug("==> scheduleCreateOrGetTagService(resourceService=" + resourceService.getName() + ")");
}
- final boolean isAutoCreateTagService = RangerConfiguration.getInstance().getBoolean("ranger.tagservice.auto.create", true);
+ final boolean isAutoCreateTagService = config.getBoolean("ranger.tagservice.auto.create", true);
if (isAutoCreateTagService) {
- String tagServiceName = RangerConfiguration.getInstance().get("ranger.tagservice.auto.name");
+ String tagServiceName = config.get("ranger.tagservice.auto.name");
if (StringUtils.isBlank(tagServiceName)) {
tagServiceName = getGeneratedTagServiceName(resourceService.getName());
@@ -4100,7 +4102,7 @@
LOG.debug("Attempting to get/create and possibly link to tag-service:[" + tagServiceName + "]");
}
- final boolean isAutoLinkTagService = RangerConfiguration.getInstance().getBoolean("ranger.tagservice.auto.link", true);
+ final boolean isAutoLinkTagService = config.getBoolean("ranger.tagservice.auto.link", true);
RangerService tagService = null;
try {
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
index 3f7068c..1ec2f49 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
@@ -22,19 +22,23 @@
import java.util.Map;
import org.apache.commons.lang.StringUtils;
-import org.apache.ranger.authorization.hadoop.config.RangerConfiguration;
+import org.apache.ranger.authorization.hadoop.config.RangerAdminConfig;
import org.apache.ranger.entity.XXServiceDef;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
+
@Service
@Scope("singleton")
public class RangerServiceDefService extends RangerServiceDefServiceBase<XXServiceDef, RangerServiceDef> {
+ private final RangerAdminConfig config;
public RangerServiceDefService() {
super();
+
+ this.config = new RangerAdminConfig();
}
@Override
@@ -59,7 +63,7 @@
Map<String, String> serviceDefOptions = ret.getOptions();
if (serviceDefOptions.get(RangerServiceDef.OPTION_ENABLE_DENY_AND_EXCEPTIONS_IN_POLICIES) == null) {
- boolean enableDenyAndExceptionsInPoliciesHiddenOption = RangerConfiguration.getInstance().getBoolean("ranger.servicedef.enableDenyAndExceptionsInPolicies", true);
+ boolean enableDenyAndExceptionsInPoliciesHiddenOption = config.getBoolean("ranger.servicedef.enableDenyAndExceptionsInPolicies", true);
if (enableDenyAndExceptionsInPoliciesHiddenOption || StringUtils.equalsIgnoreCase(ret.getName(), EmbeddedServiceDefsUtil.EMBEDDED_SERVICEDEF_TAG_NAME)) {
serviceDefOptions.put(RangerServiceDef.OPTION_ENABLE_DENY_AND_EXCEPTIONS_IN_POLICIES, "true");
} else {
diff --git a/storm-agent/src/main/java/org/apache/ranger/authorization/storm/StormRangerPlugin.java b/storm-agent/src/main/java/org/apache/ranger/authorization/storm/StormRangerPlugin.java
index 111083c..bb0f882 100644
--- a/storm-agent/src/main/java/org/apache/ranger/authorization/storm/StormRangerPlugin.java
+++ b/storm-agent/src/main/java/org/apache/ranger/authorization/storm/StormRangerPlugin.java
@@ -71,7 +71,7 @@
// mandatory call to base plugin
super.init();
// One time call to register the audit hander with the policy engine.
- super.setResultProcessor(new RangerDefaultAuditHandler());
+ super.setResultProcessor(new RangerDefaultAuditHandler(getConfig()));
// this needed to set things right in the nimbus process
if (KerberosName.getRules() == null) {
KerberosName.setRules("DEFAULT");
diff --git a/storm-agent/src/test/java/org/apache/ranger/authorization/storm/RangerAdminClientImpl.java b/storm-agent/src/test/java/org/apache/ranger/authorization/storm/RangerAdminClientImpl.java
index 895ad4a..2b40205 100644
--- a/storm-agent/src/test/java/org/apache/ranger/authorization/storm/RangerAdminClientImpl.java
+++ b/storm-agent/src/test/java/org/apache/ranger/authorization/storm/RangerAdminClientImpl.java
@@ -22,6 +22,7 @@
import java.nio.file.Files;
import java.util.List;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.admin.client.AbstractRangerAdminClient;
import org.apache.ranger.plugin.util.ServicePolicies;
import org.apache.ranger.plugin.util.ServiceTags;
@@ -40,7 +41,8 @@
private final static String tagFilename = "storm-policies-tag.json";
private Gson gson;
- public void init(String serviceName, String appId, String configPropertyPrefix) {
+ @Override
+ public void init(String serviceName, String appId, String configPropertyPrefix, Configuration config) {
Gson gson = null;
try {
gson = new GsonBuilder().setDateFormat("yyyyMMdd-HH:mm:ss.SSS-Z").setPrettyPrinting().create();
diff --git a/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java b/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
index 062c5e3..dff7241 100644
--- a/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
+++ b/tagsync/src/main/java/org/apache/ranger/tagsync/sink/tagadmin/TagAdminRESTSink.java
@@ -96,7 +96,7 @@
}
if (StringUtils.isNotBlank(restUrl)) {
- tagRESTClient = new RangerRESTClient(restUrl, sslConfigFile);
+ tagRESTClient = new RangerRESTClient(restUrl, sslConfigFile, TagSyncConfig.getInstance());
if (!isKerberized) {
tagRESTClient.setBasicAuthInfo(userName, password);
}
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
index 27506d1..1d4e37f 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
@@ -26,6 +26,7 @@
import java.util.Set;
import java.util.StringTokenizer;
+import org.apache.hadoop.conf.Configuration;
import org.apache.ranger.credentialapi.CredentialReader;
import org.apache.ranger.plugin.util.XMLUtils;
import org.apache.ranger.usergroupsync.UserGroupSink;
@@ -262,6 +263,16 @@
XMLUtils.loadConfig(CONFIG_FILE, prop);
}
+ public Configuration getConfig() {
+ Configuration ret = new Configuration();
+
+ for (String propName : prop.stringPropertyNames()) {
+ ret.set(propName, prop.getProperty(propName));
+ }
+
+ return ret;
+ }
+
public String getUserSyncFileSource(){
String val = prop.getProperty(UGSYNC_SOURCE_FILE_PROC);
return val;
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/process/RangerUgSyncRESTClient.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/process/RangerUgSyncRESTClient.java
index 52b7f62..e4024a2 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/process/RangerUgSyncRESTClient.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/process/RangerUgSyncRESTClient.java
@@ -34,6 +34,7 @@
import org.apache.hadoop.security.SecureClientLogin;
import org.apache.ranger.plugin.util.RangerRESTClient;
import org.apache.ranger.plugin.util.RangerRESTUtils;
+import org.apache.ranger.unixusersync.config.UserGroupSyncConfig;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import com.sun.jersey.api.client.Client;
@@ -55,7 +56,7 @@
String ugKeyStoreType, String ugTrustStoreFile, String ugTrustStoreFilepwd, String ugTrustStoreType,
String authenticationType, String principal, String keytab, String polMgrUsername, String polMgrPassword) {
- super(policyMgrBaseUrls, "");
+ super(policyMgrBaseUrls, "", UserGroupSyncConfig.getInstance().getConfig());
if (!(authenticationType != null && AUTH_KERBEROS.equalsIgnoreCase(authenticationType)
&& SecureClientLogin.isKerberosCredentialExists(principal, keytab))) {
setBasicAuthInfo(polMgrUsername, polMgrPassword);