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

abhay 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 8ebf1dc  RANGER-2343: Evaluate tag policies in the same security zone 
as accessed resource
8ebf1dc is described below

commit 8ebf1dc2fd5a8c4f0e7dca7f55cd7c60916de27a
Author: Abhay Kulkarni <>
AuthorDate: Thu Mar 7 09:49:38 2019 -0800

    RANGER-2343: Evaluate tag policies in the same security zone as accessed 
resource
---
 .../policyengine/RangerPolicyEngineImpl.java       | 24 ++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

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 e239c89..d709dcc 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
@@ -1246,7 +1246,7 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                        }
                }
                if (policyRepository != null) {
-                       ret = evaluatePoliciesNoAudit(request, policyType, 
policyRepository, tagPolicyRepository);
+                       ret = evaluatePoliciesNoAudit(request, policyType, 
zoneName, policyRepository, tagPolicyRepository);
                        ret.setZoneName(zoneName);
                }
 
@@ -1257,9 +1257,9 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                return ret;
        }
 
-       private RangerAccessResult evaluatePoliciesNoAudit(RangerAccessRequest 
request, int policyType, RangerPolicyRepository policyRepository, 
RangerPolicyRepository tagPolicyRepository) {
+       private RangerAccessResult evaluatePoliciesNoAudit(RangerAccessRequest 
request, int policyType, String zoneName, RangerPolicyRepository 
policyRepository, RangerPolicyRepository tagPolicyRepository) {
                if (LOG.isDebugEnabled()) {
-                       LOG.debug("==> 
RangerPolicyEngineImpl.evaluatePoliciesNoAudit(" + request + ", policyType =" + 
policyType + ")");
+                       LOG.debug("==> 
RangerPolicyEngineImpl.evaluatePoliciesNoAudit(" + request + ", policyType =" + 
policyType + ", zoneName=" + zoneName + ")");
                }
 
                RangerAccessResult ret = createAccessResult(request, 
policyType);
@@ -1267,7 +1267,7 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
 
         if (ret != null && request != null) {
 
-                       evaluateTagPolicies(request, policyType, 
tagPolicyRepository, ret);
+                       evaluateTagPolicies(request, policyType, zoneName, 
tagPolicyRepository, ret);
 
                        if (LOG.isDebugEnabled()) {
                                if (ret.getIsAccessDetermined() && 
ret.getIsAuditedDetermined()) {
@@ -1340,15 +1340,15 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                }
 
                if (LOG.isDebugEnabled()) {
-                       LOG.debug("<== 
RangerPolicyEngineImpl.evaluatePoliciesNoAudit(" + request + ", policyType =" + 
policyType + "): " + ret);
+                       LOG.debug("<== 
RangerPolicyEngineImpl.evaluatePoliciesNoAudit(" + request + ", policyType =" + 
policyType + ", zoneName=" + zoneName + "): " + ret);
                }
 
                return ret;
        }
 
-       private void evaluateTagPolicies(final RangerAccessRequest request, int 
policyType, RangerPolicyRepository tagPolicyRepository, RangerAccessResult 
result) {
+       private void evaluateTagPolicies(final RangerAccessRequest request, int 
policyType, String zoneName, RangerPolicyRepository tagPolicyRepository, 
RangerAccessResult result) {
                if (LOG.isDebugEnabled()) {
-                       LOG.debug("==> 
RangerPolicyEngineImpl.evaluateTagPolicies(" + request + ", policyType =" + 
policyType + ", " + result + ")");
+                       LOG.debug("==> 
RangerPolicyEngineImpl.evaluateTagPolicies(" + request + ", policyType =" + 
policyType + ", zoneName=" + zoneName + ", " + result + ")");
                }
 
                Date accessTime = request.getAccessTime() != null ? 
request.getAccessTime() : new Date();
@@ -1361,6 +1361,14 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                        for (PolicyEvaluatorForTag policyEvaluator : 
policyEvaluators) {
                                RangerPolicyEvaluator evaluator = 
policyEvaluator.getEvaluator();
 
+                               String policyZoneName = 
evaluator.getPolicy().getZoneName();
+                               if (!StringUtils.equals(zoneName, 
policyZoneName)) {
+                                       if (LOG.isDebugEnabled()) {
+                                               LOG.debug("Tag policy does not 
belong to the zone:[" + zoneName + "] of the accessed resource. Not evaluating 
this policy:[" + evaluator.getPolicy() + "]");
+                                       }
+                                       continue;
+                               }
+
                                RangerTagForEval tag = policyEvaluator.getTag();
 
                                RangerAccessRequest tagEvalRequest = new 
RangerTagAccessRequest(tag, tagPolicyRepository.getServiceDef(), request);
@@ -1407,7 +1415,7 @@ public class RangerPolicyEngineImpl implements 
RangerPolicyEngine {
                }
 
                if (LOG.isDebugEnabled()) {
-                       LOG.debug("<== 
RangerPolicyEngineImpl.evaluateTagPolicies(" + request + ", policyType =" + 
policyType + ", " + result + ")");
+                       LOG.debug("<== 
RangerPolicyEngineImpl.evaluateTagPolicies(" + request + ", policyType =" + 
policyType + ", zoneName=" + zoneName + ", " + result + ")");
                }
        }
 

Reply via email to