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

kishor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 8b933eaaf435341c1c038e1235ffb788ce6dd0a0
Author: Rakesh Gupta <[email protected]>
AuthorDate: Thu Jun 26 18:09:28 2025 +0530

    RANGER-4721: Ranger Admin server is not sending DataMasklabel for masking 
policy audit logs
    
    Signed-off-by: Kishor Gollapalliwar <[email protected]>
---
 .../ranger/service/RangerAuditedModelService.java  | 31 ++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git 
a/security-admin/src/main/java/org/apache/ranger/service/RangerAuditedModelService.java
 
b/security-admin/src/main/java/org/apache/ranger/service/RangerAuditedModelService.java
index 79be9419b..ba548e607 100755
--- 
a/security-admin/src/main/java/org/apache/ranger/service/RangerAuditedModelService.java
+++ 
b/security-admin/src/main/java/org/apache/ranger/service/RangerAuditedModelService.java
@@ -22,6 +22,7 @@
 import org.apache.ranger.common.PropertiesUtil;
 import org.apache.ranger.common.view.VTrxLogAttr;
 import org.apache.ranger.entity.XXDBBase;
+import org.apache.ranger.entity.XXDataMaskTypeDef;
 import org.apache.ranger.entity.XXGdsDataset;
 import org.apache.ranger.entity.XXGdsProject;
 import org.apache.ranger.entity.XXTrxLogV2;
@@ -34,6 +35,7 @@
 import org.apache.ranger.plugin.model.RangerGds.RangerProject;
 import org.apache.ranger.plugin.model.RangerGds.RangerSharedResource;
 import org.apache.ranger.plugin.model.RangerPolicy;
+import org.apache.ranger.plugin.model.RangerPolicy.RangerDataMaskPolicyItem;
 import org.apache.ranger.plugin.util.JsonUtilsV2;
 import org.apache.ranger.util.RangerEnumUtil;
 import org.apache.ranger.view.VXTrxLogV2.ObjectChangeInfo;
@@ -218,6 +220,10 @@ private void processFieldToCreateTrxLog(VTrxLogAttr 
trxLogAttr, V obj, V oldObj,
 
         String value = getTrxLogAttrValue(obj, trxLogAttr);
 
+        if ("dataMaskPolicyItems".equals(trxLogAttr.getAttribName())) {
+            value = addLabelToDataMaskTxnPolicy(obj, value);
+        }
+
         if ((action == OPERATION_CREATE_CONTEXT || action == 
OPERATION_DELETE_CONTEXT) && StringUtils.isBlank(value)) {
             return;
         }
@@ -252,6 +258,31 @@ private void processFieldToCreateTrxLog(VTrxLogAttr 
trxLogAttr, V obj, V oldObj,
         objChangeInfo.addAttribute(trxLogAttr.getAttribUserFriendlyName(), 
prevValue, newValue);
     }
 
+    public String addLabelToDataMaskTxnPolicy(V obj, String value) {
+        if (obj instanceof RangerPolicy && ((RangerPolicy) 
obj).getDataMaskPolicyItems() != null) {
+            for (RangerDataMaskPolicyItem policyItem : ((RangerPolicy) 
obj).getDataMaskPolicyItems()) {
+                if (policyItem.getDataMaskInfo() != null && 
policyItem.getDataMaskInfo().getDataMaskType() != null) {
+                    String dataMaskType = 
policyItem.getDataMaskInfo().getDataMaskType();
+                    List<XXDataMaskTypeDef> dataMaskDefs = 
daoMgr.getXXDataMaskTypeDef().getAll();
+                    if (CollectionUtils.isNotEmpty(dataMaskDefs)) {
+                        for (XXDataMaskTypeDef dataMaskTypeDef : dataMaskDefs) 
{
+                            if 
(dataMaskTypeDef.getName().equalsIgnoreCase(dataMaskType)) {
+                                String label = dataMaskTypeDef.getLabel();
+                                StringBuilder sbValue = new 
StringBuilder(value);
+                                label = ",\"DataMasklabel\":\"" + label + "\"";
+                                int sbValueIndex = sbValue.lastIndexOf("}]");
+                                sbValue.insert(sbValueIndex, label);
+                                value = sbValue.toString();
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        return value;
+    }
+
     private String toActionString(int action) {
         switch (action) {
             case OPERATION_CREATE_CONTEXT:

Reply via email to