This is an automated email from the ASF dual-hosted git repository.

pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 552d93c  Ranger-2467-similar to clusterName custom condition, add 
clusterType custom condition
552d93c is described below

commit 552d93c7da27f245847a9557c3b5779e05f78a4d
Author: mateenmansoori <[email protected]>
AuthorDate: Fri Jun 28 15:07:24 2019 +0530

    Ranger-2467-similar to clusterName custom condition, add clusterType custom 
condition
    
    Signed-off-by: Pradeep <[email protected]>
---
 .../RangerAccessedFromClusterTypeCondition.java    | 65 +++++++++++++++++++++
 .../RangerAccessedNotFromClusterTypeCondition.java | 66 ++++++++++++++++++++++
 .../plugin/policyengine/RangerAccessRequest.java   |  2 +
 .../policyengine/RangerAccessRequestImpl.java      | 10 ++++
 .../policyengine/RangerAccessRequestReadOnly.java  |  3 +
 .../plugin/policyengine/RangerPluginContext.java   | 28 +++++++++
 .../policyengine/RangerPolicyEngineImpl.java       |  1 +
 .../ranger/plugin/service/RangerAuthContext.java   |  1 +
 .../ranger/plugin/policyengine/TestPolicyACLs.java |  1 +
 .../ranger/plugin/policyengine/TestPolicyDb.java   |  1 +
 .../plugin/policyengine/TestPolicyEngine.java      |  1 +
 .../authorization/hbase/TestPolicyEngine.java      |  1 +
 .../hive/authorizer/RangerHiveAccessRequest.java   |  1 +
 13 files changed, 181 insertions(+)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedFromClusterTypeCondition.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedFromClusterTypeCondition.java
new file mode 100644
index 0000000..50a92bd
--- /dev/null
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedFromClusterTypeCondition.java
@@ -0,0 +1,65 @@
+/*
+ * 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.conditionevaluator;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
+public class RangerAccessedFromClusterTypeCondition extends 
RangerAbstractConditionEvaluator{
+       private static final Log LOG = 
LogFactory.getLog(RangerAccessedFromClusterTypeCondition.class);
+
+       private boolean isAlwaysTrue = false;
+
+       @Override
+       public void init() {
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
RangerAccessedFromClusterTypeCondition.init(" + condition + ")");
+               }
+
+               super.init();
+
+               isAlwaysTrue = CollectionUtils.isEmpty(condition.getValues());
+
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
RangerAccessedFromClusterTypeCondition.init(" + condition + ")");
+               }
+       }
+       @Override
+       public boolean isMatched(RangerAccessRequest request) {
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
RangerAccessedFromClusterTypeCondition.isMatched(" + condition + ")");
+               }
+
+               final boolean ret;
+
+               if (isAlwaysTrue || request.getClusterType() == null) {
+                       ret = isAlwaysTrue;
+               } else {
+                       ret = 
condition.getValues().contains(request.getClusterType());
+               }
+
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
RangerAccessedFromClusterTypeCondition.isMatched(" + condition + "): " + ret);
+               }
+
+               return ret;
+       }
+
+}
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedNotFromClusterTypeCondition.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedNotFromClusterTypeCondition.java
new file mode 100644
index 0000000..eb6c45c
--- /dev/null
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/conditionevaluator/RangerAccessedNotFromClusterTypeCondition.java
@@ -0,0 +1,66 @@
+/*
+ * 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.conditionevaluator;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ranger.plugin.policyengine.RangerAccessRequest;
+
+public class RangerAccessedNotFromClusterTypeCondition extends 
RangerAbstractConditionEvaluator{
+       private static final Log LOG = 
LogFactory.getLog(RangerAccessedNotFromClusterTypeCondition.class);
+
+       private boolean isAlwaysTrue = false;
+
+       @Override
+       public void init() {
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
RangerAccessedNotFromClusterTypeCondition.init(" + condition + ")");
+               }
+
+               super.init();
+
+               isAlwaysTrue = CollectionUtils.isEmpty(condition.getValues());
+
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
RangerAccessedNotFromClusterTypeCondition.init(" + condition + ")");
+               }
+       }
+
+       @Override
+       public boolean isMatched(RangerAccessRequest request) {
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("==> 
RangerAccessedNotFromClusterTypeCondition.isMatched(" + condition + ")");
+               }
+
+               final boolean ret;
+
+               if (isAlwaysTrue || request.getClusterType() == null) {
+                       ret = true;
+               } else {
+                       ret = 
!condition.getValues().contains(request.getClusterType());
+               }
+
+               if (LOG.isDebugEnabled()) {
+                       LOG.debug("<== 
RangerAccessedNotFromClusterTypeCondition.isMatched(" + condition + "): " + 
ret);
+               }
+
+               return ret;
+       }
+}
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java
index cb06d26..89d585a 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java
@@ -55,6 +55,8 @@ public interface RangerAccessRequest {
        
        String getClusterName();
 
+       String getClusterType();
+
        Map<String, Object> getContext();
 
        RangerAccessRequest getReadOnlyCopy();
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java
index 1f2f8ea..0ccca21 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java
@@ -48,6 +48,7 @@ public class RangerAccessRequestImpl implements 
RangerAccessRequest {
        private String               sessionId;
        private Map<String, Object>  context;
        private String                           clusterName;
+       private String                           clusterType;
 
        private boolean isAccessTypeAny;
        private boolean isAccessTypeDelegatedAdmin;
@@ -212,6 +213,14 @@ public class RangerAccessRequestImpl implements 
RangerAccessRequest {
                this.clusterName = clusterName;
        }
 
+       public String getClusterType() {
+               return clusterType;
+       }
+
+       public void setClusterType(String clusterType) {
+               this.clusterType = clusterType;
+       }
+
        public void setResourceMatchingScope(ResourceMatchingScope scope) { 
this.resourceMatchingScope = scope; }
 
        public void setContext(Map<String, Object> context) {
@@ -290,6 +299,7 @@ public class RangerAccessRequestImpl implements 
RangerAccessRequest {
                sb.append("sessionId={").append(sessionId).append("} ");
                
sb.append("resourceMatchingScope={").append(resourceMatchingScope).append("} ");
                sb.append("clusterName={").append(clusterName).append("} ");
+               sb.append("clusterType={").append(clusterType).append("} ");
 
                sb.append("context={");
                if(context != null) {
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestReadOnly.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestReadOnly.java
index d5563bd..ea42c82 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestReadOnly.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestReadOnly.java
@@ -96,4 +96,7 @@ public class RangerAccessRequestReadOnly implements 
RangerAccessRequest {
        @Override
        public String getClusterName() { return source.getClusterName();        
}
 
+       @Override
+       public String getClusterType() {  return source.getClusterType();       
}
+
 }
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 36dcec1..e596b2a 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
@@ -29,9 +29,11 @@ public class RangerPluginContext {
 
        private static final Log LOG = 
LogFactory.getLog(RangerBasePlugin.class);
        private String clusterName;
+       private String clusterType;
 
        public RangerPluginContext(String serviceType){
                this.clusterName = findClusterName(serviceType);
+               this.clusterType = findClusterType(serviceType);
        }
 
        public String getClusterName() {
@@ -42,6 +44,14 @@ public class RangerPluginContext {
                this.clusterName = clusterName;
        }
 
+       public String getClusterType() {
+               return clusterType;
+       }
+
+       public void setClusterType(String clusterType) {
+               this.clusterType = clusterType;
+       }
+
        private String findClusterName(String serviceType) {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> RangerPluginContext.findClusterName , 
serviceType = " + serviceType);
@@ -60,4 +70,22 @@ public class RangerPluginContext {
                return clusterName;
        }
 
+       private String findClusterType(String serviceType) {
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("==> RangerPluginContext.findClusterType , 
serviceType = " + serviceType);
+               }
+
+               String propertyPrefix    = "ranger.plugin." + serviceType;
+               String clusterType = 
RangerConfiguration.getInstance().get(propertyPrefix + ".access.cluster.type", 
"");
+               if(StringUtil.isEmpty(clusterType)){
+                       clusterType = 
RangerConfiguration.getInstance().get(propertyPrefix + ".ambari.cluster.type", 
"");
+               }
+
+               if(LOG.isDebugEnabled()) {
+                       LOG.debug("<== RangerPluginContext.findClusterType ");
+               }
+
+               return clusterType;
+       }
+
 }
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 0edf149..daa62f4 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
@@ -427,6 +427,7 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
 
                        if(rangerPluginContext != null) {
                                
reqImpl.setClusterName(rangerPluginContext.getClusterName());
+                               
reqImpl.setClusterType(rangerPluginContext.getClusterType());
                        }
                }
 
diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
index 67c068b..02f3431 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerAuthContext.java
@@ -175,6 +175,7 @@ public class RangerAuthContext implements 
RangerPolicyEngine {
                    
reqImpl.extractAndSetClientIPAddress(getUseForwardedIPAddress(), 
getTrustedProxyAddresses());
                    if(rangerPluginContext != null) {
                        
reqImpl.setClusterName(rangerPluginContext.getClusterName());
+                       
reqImpl.setClusterType(rangerPluginContext.getClusterType());
                    }
            }
 
diff --git 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyACLs.java
 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyACLs.java
index 33b26e0..6af6948 100644
--- 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyACLs.java
+++ 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyACLs.java
@@ -93,6 +93,7 @@ public class TestPolicyACLs {
                        RangerPolicyEngineOptions policyEngineOptions = new 
RangerPolicyEngineOptions();
                        RangerPluginContext pluginContext = new 
RangerPluginContext("hive");
                        pluginContext.setClusterName("cl1");
+                       pluginContext.setClusterType("on-prem");
                        RangerPolicyEngine policyEngine = new 
RangerPolicyEngineImpl("test-policy-acls", testCase.servicePolicies, 
policyEngineOptions, pluginContext);
 
                        for(PolicyACLsTests.TestCase.OneTest oneTest : 
testCase.tests) {
diff --git 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyDb.java
 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyDb.java
index f373339..456d52c 100644
--- 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyDb.java
+++ 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestPolicyDb.java
@@ -117,6 +117,7 @@ public class TestPolicyDb {
                policyEngineOptions.disableCustomConditions = true;
                RangerPluginContext pluginContext = new 
RangerPluginContext("hive");
                pluginContext.setClusterName("cl1");
+               pluginContext.setClusterType("on-prem");
                RangerPolicyEngine policyEngine = new 
RangerPolicyEngineImpl("test-policydb", testCase.servicePolicies, 
policyEngineOptions, pluginContext);
 
                for(TestData test : testCase.tests) {
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 cce5129..d1e0c23 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
@@ -437,6 +437,7 @@ public class TestPolicyEngine {
                }
                RangerPluginContext pluginContext = new 
RangerPluginContext("hive");
                pluginContext.setClusterName("cl1");
+               pluginContext.setClusterType("on-prem");
                RangerPolicyEngine policyEngine = new 
RangerPolicyEngineImpl(testName, servicePolicies, policyEngineOptions,  
pluginContext);
 
                policyEngine.setUseForwardedIPAddress(useForwardedIPAddress);
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 6dd81fa..919920d 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
@@ -105,6 +105,7 @@ public class TestPolicyEngine {
                        RangerPolicyEngineOptions policyEngineOptions = new 
RangerPolicyEngineOptions();
                        RangerPluginContext pluginContext = new 
RangerPluginContext("hive");
                        pluginContext.setClusterName("cl1");
+                       pluginContext.setClusterType("on-prem");
                        RangerPolicyEngine policyEngine = new 
RangerPolicyEngineImpl(testName, servicePolicies, policyEngineOptions, 
pluginContext);
 
                        RangerAccessResultProcessor auditHandler = new 
RangerDefaultAuditHandler();
diff --git 
a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAccessRequest.java
 
b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAccessRequest.java
index ce5cf64..188f2b1 100644
--- 
a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAccessRequest.java
+++ 
b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAccessRequest.java
@@ -109,6 +109,7 @@ public class RangerHiveAccessRequest extends 
RangerAccessRequestImpl {
                
ret.setContext(RangerAccessRequestUtil.copyContext(getContext()));
                ret.accessType = accessType;
                ret.setClusterName(getClusterName());
+               ret.setClusterType(getClusterType());
 
                return ret;
        }

Reply via email to