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

madhan 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 84ef6e5b1 RANGER-4723: updated zone matcher to handle descendent match
84ef6e5b1 is described below

commit 84ef6e5b1c8d14291d6cf245467ae8166288434d
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Tue Feb 20 21:23:26 2024 -0800

    RANGER-4723: updated zone matcher to handle descendent match
---
 .../ranger/plugin/policyengine/RangerSecurityZoneMatcher.java  | 10 +++++++++-
 .../plugin/policyengine/TestRangerSecurityZoneMatcher.java     |  2 +-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerSecurityZoneMatcher.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerSecurityZoneMatcher.java
index a36eda0b8..822bb3902 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerSecurityZoneMatcher.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerSecurityZoneMatcher.java
@@ -26,6 +26,7 @@ import org.apache.ranger.plugin.model.RangerServiceDef;
 import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
 import org.apache.ranger.plugin.model.validation.RangerZoneResourceMatcher;
 import 
org.apache.ranger.plugin.policyresourcematcher.RangerPolicyResourceMatcher;
+import 
org.apache.ranger.plugin.policyresourcematcher.RangerPolicyResourceMatcher.MatchType;
 import org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil;
 import org.apache.ranger.plugin.util.RangerResourceEvaluatorsRetriever;
 import org.apache.ranger.plugin.util.ServicePolicies.SecurityZoneInfo;
@@ -103,7 +104,14 @@ public class RangerSecurityZoneMatcher {
                         LOG.debug("Trying to match resource:[{}] using 
matcher:[{}]", accessResource, matcher);
                     }
 
-                    if 
(matcher.getPolicyResourceMatcher().isMatch(accessResource, 
RangerPolicyResourceMatcher.MatchScope.ANY, null)) {
+                    RangerPolicyResourceMatcher policyResourceMatcher = 
matcher.getPolicyResourceMatcher();
+                    MatchType                   matchType             = 
policyResourceMatcher.getMatchType(accessResource, null);
+
+                    if (matchType == MatchType.DESCENDANT) { // add unzoned 
name
+                        ret.add("");
+                    }
+
+                    if (matchType != MatchType.NONE) {
                         if (LOG.isDebugEnabled()) {
                             LOG.debug("Matched resource:[{}] using 
matcher:[{}]", accessResource, matcher);
                         }
diff --git 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestRangerSecurityZoneMatcher.java
 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestRangerSecurityZoneMatcher.java
index 254184403..1506df3b5 100644
--- 
a/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestRangerSecurityZoneMatcher.java
+++ 
b/agents-common/src/test/java/org/apache/ranger/plugin/policyengine/TestRangerSecurityZoneMatcher.java
@@ -72,7 +72,7 @@ public class TestRangerSecurityZoneMatcher {
 
         res   = createResource("database", "db3");
         zones = zoneMatcher.getZonesForResourceAndChildren(res);
-        assertEquals(createSet("z3", "z4"), zones);
+        assertEquals(createSet("", "z3", "z4"), zones);
     }
 
     private Map<String, SecurityZoneInfo> createSecurityZones() {

Reply via email to