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

abhi pushed a commit to branch ranger-2.7
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.7 by this push:
     new 21a9f9919 RANGER-5225: Override policy should take precedence over 
normal deny policy (#588) (#602)
21a9f9919 is described below

commit 21a9f9919b5c1f248d292373b8a313995c454bf6
Author: Fateh Singh <[email protected]>
AuthorDate: Fri Jul 11 09:51:30 2025 -0700

    RANGER-5225: Override policy should take precedence over normal deny policy 
(#588) (#602)
    
    Co-authored-by: Madhan Neethiraj <[email protected]>
---
 .../RangerDefaultPolicyEvaluator.java              |  8 +++--
 .../policyengine/test_policyengine_tag_hdfs.json   | 42 ++++++++++++++++++++--
 .../policyengine/test_policyengine_tag_hive.json   | 18 +++++++++-
 3 files changed, 63 insertions(+), 5 deletions(-)

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 bb00320ae..c855fb656 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
@@ -864,8 +864,12 @@ protected void evaluatePolicyItems(RangerAccessRequest 
request, RangerPolicyReso
                                                        if (getPolicyPriority() 
>= oldPriority && allowResult != null && (oneRequest.isAccessTypeAny() || 
RangerAccessRequestUtil.getIsAnyAccessInContext(oneRequest.getContext()))) {
                                                                
accessTypeResults.put(accessType, allowResult);
                                                        } else {
-                                                               if 
(getPolicyPriority() > oldPriority && denyResult != null) {
-                                                                       
accessTypeResults.put(accessType, denyResult);
+                                                               if 
(getPolicyPriority() > oldPriority) {
+                                                                       if 
(allowResult != null) {
+                                                                               
accessTypeResults.put(accessType, allowResult);
+                                                                       } else 
if (denyResult != null) {
+                                                                               
accessTypeResults.put(accessType, denyResult);
+                                                                       }
                                                                }
                                                        }
                                                }
diff --git 
a/agents-common/src/test/resources/policyengine/test_policyengine_tag_hdfs.json 
b/agents-common/src/test/resources/policyengine/test_policyengine_tag_hdfs.json
index eb2251c3c..b7cd6e349 100644
--- 
a/agents-common/src/test/resources/policyengine/test_policyengine_tag_hdfs.json
+++ 
b/agents-common/src/test/resources/policyengine/test_policyengine_tag_hdfs.json
@@ -89,6 +89,31 @@
         }
       ],
       "denyExceptions":[ ]
+    },
+    {
+      "id": 3,
+      "name": "/override-resource: allow: users=user-td, user-ra-td, 
user-rd-td",
+      "isEnabled": true,
+      "isAuditEnabled": false,
+      "policyPriority":1,
+      "resources": {
+        "path": { "values": [ "/override-resource" ], "isRecursive": true }
+      },
+      "policyItems": [
+        {
+          "accesses":[
+            {"type":"read" },
+            {"type":"write" }
+          ],
+          "users":["user-td", "user-ra-td", "user-rd-td"],
+          "groups":[],
+          "delegateAdmin":false,
+          "conditions" : []
+        }
+      ],
+      "allowExceptions":[],
+      "denyPolicyItems": [],
+      "denyExceptions":[]
     }
   ],
 
@@ -688,8 +713,21 @@
       },
       "result": { "isAudited": false, "isAllowed": false, "policyId": -1 }
     }
-
-
+    ,
+    {
+      "name": "ALLOW 'read /override-resource' for u=user-td",
+      "request": {
+        "resource": { "elements": { "path": "/override-resource" } },
+        "accessType": "read",
+        "user": "user-td",
+        "userGroups": [ ],
+        "requestData": "read /override-resource",
+        "context": {
+          "TAGS": "[{\"type\":\"PII\"}]"
+        }
+      },
+      "result": { "isAudited": true, "isAllowed": true, "policyId": 3 }
+    }
   ]
 }
 
diff --git 
a/agents-common/src/test/resources/policyengine/test_policyengine_tag_hive.json 
b/agents-common/src/test/resources/policyengine/test_policyengine_tag_hive.json
index 81feced15..0c8ae5d65 100644
--- 
a/agents-common/src/test/resources/policyengine/test_policyengine_tag_hive.json
+++ 
b/agents-common/src/test/resources/policyengine/test_policyengine_tag_hive.json
@@ -55,6 +55,12 @@
       "denyPolicyItems":[
         
{"accesses":[{"type":"select","isAllowed":true}],"users":["denieduser"],"groups":[],"delegateAdmin":false}
       ]
+    },
+    {"id":104,"name":"db=default, table=table-override: 
audit-all-access","isEnabled":true,"isAuditEnabled":true,"policyPriority":1,
+      
"resources":{"database":{"values":["default"]},"table":{"values":["table-override"]},"column":{"values":["*"]}},
+      "policyItems":[
+        
{"accesses":[{"type":"read","isAllowed":true}],"users":["user-override"],"groups":[],"delegateAdmin":false}
+      ]
     }
   ],
   "tagPolicyInfo": {
@@ -185,6 +191,9 @@
         "resources":{"tag":{"values":["PII"],"isRecursive":false}},
         "policyItems":[
           
{"accesses":[{"type":"hive:select","isAllowed":true}],"users":["hive"],"groups":[],"delegateAdmin":false}
+        ],
+        "denyPolicyItems":[
+          
{"accesses":[{"type":"hive:select","isAllowed":true}],"users":["user-override"],"groups":[],"delegateAdmin":false}
         ]
       },
       
{"id":3,"name":"PII_TAG_POLICY-FINAL","isEnabled":true,"isAuditEnabled":true,
@@ -367,8 +376,15 @@
         "context": {"TAGS":"[{\"type\":\"PII\", 
\"attributes\":{\"expiry\":\"2026/06/15\"}}]"}
       },
       "result":{"isAudited":true,"isAllowed":true,"policyId":2}
+    },
+    {"name":"ALLOW 'select * from default.table-override;' for user-override",
+      "request":{
+        "resource":{"elements":{"database":"default", 
"table":"table-override", "column":"name"}},
+        
"accessType":"read","user":"user-override","userGroups":[],"requestData":"select
 * from default.table-override",
+        "context": {"TAGS":"[{\"type\":\"PII\"}]"}
+      },
+      "result":{"isAudited":true,"isAllowed":true,"policyId":104}
     }
-
   ]
 }
 

Reply via email to