From e97f95cf11572405d7b276c347ea29d37c94f229 Mon Sep 17 00:00:00 2001 From: Rakesh Gupta Date: Tue, 23 Jul 2024 17:22:49 +0530 Subject: [PATCH] RANGER-4864: Upon performing Policy Import some of Audit Admin logs are improper Signed-off-by: Dhaval.Rajpara --- .../java/org/apache/ranger/biz/ServiceDBStore.java | 3 ++- .../ranger/service/RangerAuditedModelService.java | 14 +++++++++++++- .../ranger/service/RangerTrxLogV2Service.java | 1 + .../src/views/AuditEvent/AdminLogs.jsx | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java index ede6d1dbb9..c934fdd7ca 100644 --- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java +++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java @@ -4522,10 +4522,11 @@ public Map getMetaDataInfo() { Map metaDataInfo = new LinkedHashMap<>(); UserSessionBase usb = ContextUtil.getCurrentUserSession(); String userId = usb!=null ? usb.getLoginId() : null; + DateFormat formatter = new SimpleDateFormat("MMM dd, yyyy h:mm:ss a"); metaDataInfo.put(HOSTNAME, LOCAL_HOSTNAME); metaDataInfo.put(USER_NAME, userId); - metaDataInfo.put(TIMESTAMP, MiscUtil.getUTCDateForLocalDate(new Date())); + metaDataInfo.put(TIMESTAMP, formatter.format(MiscUtil.getUTCDateForLocalDate(new Date()))); metaDataInfo.put(RANGER_VERSION, RangerVersionInfo.getVersion()); return metaDataInfo; 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 ee1eb371e9..dfecf720fd 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 @@ -139,7 +139,9 @@ private List getTransactionLogs(V obj, V oldObj, int action) { processFieldToCreateTrxLog(trxLog, obj, oldObj, action, objChangeInfo); } - ret.add(new XXTrxLogV2(classType, obj.getId(), getObjectName(obj), getParentObjectType(obj, oldObj), getParentObjectId(obj, oldObj), getParentObjectName(obj, oldObj), toActionString(action), JsonUtilsV2.objToJson(objChangeInfo))); + if(objChangeInfo.getAttributes() != null && objChangeInfo.getAttributes().size() > 0) { + ret.add(new XXTrxLogV2(classType, obj.getId(), getObjectName(obj), getParentObjectType(obj, oldObj), getParentObjectId(obj, oldObj), getParentObjectName(obj, oldObj), toActionString(action), JsonUtilsV2.objToJson(objChangeInfo))); + } } catch (Exception excp) { LOG.warn("failed to get transaction log for object: type=" + obj.getClass().getName() + ", id=" + obj.getId(), excp); } @@ -204,6 +206,12 @@ private void processFieldToCreateTrxLog(VTrxLogAttr trxLogAttr, V obj, V oldObj, } else if (action == OPERATION_UPDATE_CONTEXT) { prevValue = getTrxLogAttrValue(oldObj, trxLogAttr); newValue = value; + } else if (action == OPERATION_IMPORT_CREATE_CONTEXT) { + prevValue = null; + newValue = value; + } else if (action == OPERATION_IMPORT_DELETE_CONTEXT) { + prevValue = value; + newValue = null; } else { prevValue = null; newValue = null; @@ -224,6 +232,10 @@ private String toActionString(int action) { return "update"; case OPERATION_DELETE_CONTEXT: return "delete"; + case OPERATION_IMPORT_CREATE_CONTEXT: + return "Import Create"; + case OPERATION_IMPORT_DELETE_CONTEXT: + return "Import Delete"; } return "unknown"; diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTrxLogV2Service.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTrxLogV2Service.java index 3b9a83a95d..3eb2a707ea 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTrxLogV2Service.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTrxLogV2Service.java @@ -68,6 +68,7 @@ public RangerTrxLogV2Service() { searchFields.add(new SearchField("objectClassType", "obj.objectClassType", SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL)); searchFields.add(new SearchField("objectId", "obj.objectId", SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL)); + sortFields.add(new SortField("id", "obj.id", true, SortField.SORT_ORDER.DESC)); sortFields.add(new SortField("createDate", "obj.createTime", true, SortField.SORT_ORDER.DESC)); } diff --git a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs.jsx b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs.jsx index 913c01792c..7ca06e7eb6 100644 --- a/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs.jsx +++ b/security-admin/src/main/webapp/react-webapp/src/views/AuditEvent/AdminLogs.jsx @@ -403,7 +403,7 @@ function Admin() { const getDefaultSort = React.useMemo( () => [ { - id: "createDate", + id: "id", desc: true } ],