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 df0a778cb RANGER-4070: Provide mechanism to manage potentially
multiple enrichment of an access request
df0a778cb is described below
commit df0a778cb7d14e896c7cc88a4b720645d89668c5
Author: Abhay Kulkarni <[email protected]>
AuthorDate: Sat Feb 4 22:09:42 2023 -0800
RANGER-4070: Provide mechanism to manage potentially multiple enrichment of
an access request
---
.../plugin/service/RangerDefaultRequestProcessor.java | 5 +++++
.../ranger/plugin/util/RangerAccessRequestUtil.java | 19 ++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
index 636d09038..80d27e8e8 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/service/RangerDefaultRequestProcessor.java
@@ -48,6 +48,11 @@ public class RangerDefaultRequestProcessor implements
RangerAccessRequestProcess
@Override
public void preProcess(RangerAccessRequest request) {
+ if
(RangerAccessRequestUtil.getIsRequestPreprocessed(request.getContext())) {
+ return;
+ }
+ RangerAccessRequestUtil.setIsRequestPreprocessed(request.getContext(),
Boolean.TRUE);
+
setResourceServiceDef(request);
RangerAccessRequestImpl reqImpl = null;
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
index 05d9a6007..0ebb9cba5 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerAccessRequestUtil.java
@@ -47,6 +47,7 @@ public class RangerAccessRequestUtil {
public static final String KEY_CONTEXT_ACCESSTYPES = "ACCESSTYPES";
public static final String KEY_CONTEXT_IS_ANY_ACCESS = "ISANYACCESS";
public static final String KEY_CONTEXT_REQUEST = "_REQUEST";
+ public static final String KEY_CONTEXT_IS_REQUEST_PREPROCESSED =
"ISREQUESTPREPROCESSED";
public static void setRequestTagsInContext(Map<String, Object> context,
Set<RangerTagForEval> tags) {
if(CollectionUtils.isEmpty(tags)) {
@@ -131,6 +132,9 @@ public class RangerAccessRequestUtil {
ret.remove(KEY_CONTEXT_TAG_OBJECT);
ret.remove(KEY_CONTEXT_RESOURCE);
ret.remove(KEY_CONTEXT_REQUEST);
+ ret.remove(KEY_CONTEXT_ACCESSTYPES);
+ ret.remove(KEY_CONTEXT_IS_ANY_ACCESS);
+ ret.remove(KEY_CONTEXT_IS_REQUEST_PREPROCESSED);
// don't remove REQUESTED_RESOURCES
}
@@ -198,9 +202,18 @@ public class RangerAccessRequestUtil {
context.put(KEY_CONTEXT_IS_ANY_ACCESS, value);
}
- public static Boolean getIsAnyAccessInContext(Map<String, Object>
context) {
- Boolean ret = (Boolean)context.get(KEY_CONTEXT_IS_ANY_ACCESS);
- return ret == null ? Boolean.FALSE : ret;
+ public static boolean getIsAnyAccessInContext(Map<String, Object>
context) {
+ Boolean value = (Boolean)context.get(KEY_CONTEXT_IS_ANY_ACCESS);
+ return value != null && value;
+ }
+
+ public static void setIsRequestPreprocessed(Map<String, Object>
context, Boolean value) {
+ context.put(KEY_CONTEXT_IS_REQUEST_PREPROCESSED, value);
+ }
+
+ public static boolean getIsRequestPreprocessed(Map<String, Object>
context) {
+ Boolean value =
(Boolean)context.get(KEY_CONTEXT_IS_REQUEST_PREPROCESSED);
+ return value != null && value;
}
public static void setAllRequestedAccessTypes(Map<String, Object>
context, Set<String> accessTypes) {