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}
}
-
]
}