You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2023/12/19 17:18:29 UTC

(ranger) branch RANGER-3923 updated (678a4c6da -> ebfc4c11f)

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

madhan pushed a change to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git


    from 678a4c6da RANGER-4604: added query param createdBy for security-zone GET API
     new 0364ef1be RANGER-4609:Support in File-based Tag Retriever to provide tag-deltas
     new fbeddbe45 RANGER-4616: modified committer info for doc purpose
     new 1be421d9c RANGER-4467: User Agent info not logged under 'Login sessions' when login fails
     new 4d3803776 RANGER-4502 : Getting Error to load backbone.js latest UI.
     new c4bb32b44 RANGER-4613: updated trx log retrieval API to support objectId query param
     new f54e14ead RANGER-4618: added service displayName field in ZoneServiceSummary Object
     new ebfc4c11f RANGER-4617: updated DatasetSummary to include ACL principal counts

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../RangerFileBasedTagRetriever.java               | 199 ++++++++++++++-------
 .../org/apache/ranger/plugin/model/RangerGds.java  |  10 ++
 .../ranger/plugin/model/RangerSecurityZone.java    |   9 +
 docs/pom.xml                                       |   2 +-
 .../java/org/apache/ranger/biz/GdsDBStore.java     |  28 +++
 .../org/apache/ranger/biz/SecurityZoneDBStore.java |   1 +
 .../java/org/apache/ranger/biz/SessionMgr.java     |   4 +-
 .../java/org/apache/ranger/rest/AssetREST.java     |   1 +
 .../security/listener/SpringEventListener.java     |  17 +-
 .../authentication/RangerAuthSuccessHandler.java   |  19 +-
 .../org/apache/ranger/service/XTrxLogService.java  |   4 +-
 .../views/policymanager/ServiceLayoutSidebar.js    |   1 +
 12 files changed, 213 insertions(+), 82 deletions(-)


(ranger) 06/07: RANGER-4618: added service displayName field in ZoneServiceSummary Object

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit f54e14eada57d854dd2126081e1fd297b4a07a11
Author: prashant <pr...@gmail.com>
AuthorDate: Tue Dec 19 15:51:16 2023 +0530

    RANGER-4618: added service displayName field in ZoneServiceSummary Object
    
    Signed-off-by: Madhan Neethiraj <ma...@apache.org>
---
 .../java/org/apache/ranger/plugin/model/RangerSecurityZone.java  | 9 +++++++++
 .../src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java | 1 +
 2 files changed, 10 insertions(+)

diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerSecurityZone.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerSecurityZone.java
index 4ea6cdee6..22bf0d82c 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerSecurityZone.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerSecurityZone.java
@@ -286,6 +286,7 @@ public class RangerSecurityZone extends RangerBaseModelObject implements java.io
         private Long   id;
         private String name;
         private String type;
+        private String displayName;
         private Long   resourceCount;
 
         public Long getId() {
@@ -319,6 +320,14 @@ public class RangerSecurityZone extends RangerBaseModelObject implements java.io
         public void setResourceCount(Long resourceCount) {
             this.resourceCount = resourceCount;
         }
+
+        public String getDisplayName() {
+            return displayName;
+        }
+
+        public void setDisplayName(String displayName) {
+            this.displayName = displayName;
+        }
     }
 }
 
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
index 422dd0fe5..8d22fb42b 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/SecurityZoneDBStore.java
@@ -395,6 +395,7 @@ public class SecurityZoneDBStore implements SecurityZoneStore {
                 summary.setId(xService.getId());
                 summary.setName(serviceName);
                 summary.setType(serviceDef.getName());
+                summary.setDisplayName(xService.getDisplayName());
                 summary.setResourceCount((long)zoneService.getResources().size());
 
                 ret.add(summary);


(ranger) 07/07: RANGER-4617: updated DatasetSummary to include ACL principal counts

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit ebfc4c11f33f64deab11ecbe3fc6c75733196a59
Author: prashant <pr...@gmail.com>
AuthorDate: Tue Dec 19 15:08:58 2023 +0530

    RANGER-4617: updated DatasetSummary to include ACL principal counts
    
    Signed-off-by: Madhan Neethiraj <ma...@apache.org>
---
 .../org/apache/ranger/plugin/model/RangerGds.java  | 10 ++++++++
 .../java/org/apache/ranger/biz/GdsDBStore.java     | 28 ++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
index d10a70f23..e4943d740 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/model/RangerGds.java
@@ -552,6 +552,7 @@ public class RangerGds {
         private String                          description;
         private GdsPermission                   permissionForCaller;
         private Map<PrincipalType, Integer>     principalsCount;
+        private Map<PrincipalType, Integer>     aclPrincipalsCount;
         private Long                            projectsCount;
         private Long                            totalResourceCount;
         private List<DataShareInDatasetSummary> dataShares;
@@ -610,6 +611,14 @@ public class RangerGds {
             this.dataShares = dataShares;
         }
 
+        public Map<PrincipalType, Integer> getAclPrincipalsCount() {
+            return aclPrincipalsCount;
+        }
+
+        public void setAclPrincipalsCount(Map<PrincipalType, Integer> aclPrincipalsCount) {
+            this.aclPrincipalsCount = aclPrincipalsCount;
+        }
+
         @Override
         public String toString() {
             return toString(new StringBuilder()).toString();
@@ -625,6 +634,7 @@ public class RangerGds {
               .append("permissionForCaller={").append(permissionForCaller).append("} ")
               .append("principalsCount={").append(principalsCount).append("} ")
               .append("projectsCount={").append(projectsCount).append("} ")
+              .append("aclPrincipalsCount={").append(aclPrincipalsCount).append("} ")
               .append("totalResourceCount={").append(totalResourceCount).append("} ")
               .append("dataShares={").append(dataShares).append("} ")
               .append("}");
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
index bf348e4ed..e38d0d15c 100755
--- a/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/GdsDBStore.java
@@ -1282,6 +1282,7 @@ public class GdsDBStore extends AbstractGdsStore {
 
             datasetSummary.setProjectsCount(getDIPCountForDataset(dataset.getId()));
             datasetSummary.setPrincipalsCount(getPrincipalCountForDataset(dataset));
+            datasetSummary.setAclPrincipalsCount(getAclPrincipalCountForDataset(dataset));
 
             SearchFilter                    filter            = new SearchFilter(SearchFilter.DATASET_ID, dataset.getId().toString());
             RangerDataShareList             dataShares        = dataShareService.searchDataShares(filter);
@@ -1376,6 +1377,33 @@ public class GdsDBStore extends AbstractGdsStore {
         return ret;
     }
 
+    private Map<PrincipalType, Integer> getAclPrincipalCountForDataset(RangerDataset dataset) {
+        Map<PrincipalType, Integer> ret = new HashMap<>();
+
+        ret.put(PrincipalType.USER, 0);
+        ret.put(PrincipalType.GROUP, 0);
+        ret.put(PrincipalType.ROLE, 0);
+
+        RangerGdsObjectACL acl = dataset.getAcl();
+
+        if (acl != null) {
+            if (acl.getUsers() != null) {
+                ret.put(PrincipalType.USER, acl.getUsers().size());
+            }
+
+            if (acl.getGroups() != null) {
+                ret.put(PrincipalType.GROUP, acl.getGroups().size());
+            }
+
+            if (acl.getRoles() != null) {
+                ret.put(PrincipalType.ROLE, acl.getRoles().size());
+            }
+        }
+
+        return ret;
+    }
+
+
     private PList<RangerProject> getUnscrubbedProjects(SearchFilter filter) {
         filter.setParam(SearchFilter.RETRIEVE_ALL_PAGES, "true");
 


(ranger) 01/07: RANGER-4609:Support in File-based Tag Retriever to provide tag-deltas

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 0364ef1bee4ac6200132596479ce02829647619d
Author: Abhay Kulkarni <ab...@apache.org>
AuthorDate: Thu Dec 14 12:00:44 2023 -0800

    RANGER-4609:Support in File-based Tag Retriever to provide tag-deltas
---
 .../RangerFileBasedTagRetriever.java               | 199 ++++++++++++++-------
 1 file changed, 133 insertions(+), 66 deletions(-)

diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
index 448c665fc..df2c7ccf1 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerFileBasedTagRetriever.java
@@ -29,7 +29,7 @@ import org.slf4j.LoggerFactory;
 import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 public class RangerFileBasedTagRetriever extends RangerTagRetriever {
@@ -40,7 +40,9 @@ public class RangerFileBasedTagRetriever extends RangerTagRetriever {
 	private String serviceTagsFileName;
 	private Gson gsonBuilder;
 	private boolean deDupTags;
-
+	int            tagFilesCount = 0;
+	int            currentTagFileIndex = 0;
+	boolean        isInitial = true;
 	@Override
 	public void init(Map<String, String> options) {
 
@@ -55,11 +57,9 @@ public class RangerFileBasedTagRetriever extends RangerTagRetriever {
 		String serviceTagsFileNameProperty = "serviceTagsFileName";
 		String serviceTagsDefaultFileName = "/testdata/test_servicetags_hive.json";
 		String deDupTagsProperty          = "deDupTags";
+		String tagFilesCountProperty      = "tagFileCount";
 
 		if (StringUtils.isNotBlank(serviceName) && serviceDef != null && StringUtils.isNotBlank(appId)) {
-			InputStream serviceTagsFileStream = null;
-
-
 			// Open specified file from options- it should contain service-tags
 
 			serviceTagsFileName = options != null? options.get(serviceTagsFileNameProperty) : null;
@@ -67,51 +67,22 @@ public class RangerFileBasedTagRetriever extends RangerTagRetriever {
 			deDupTags           = Boolean.parseBoolean(deDupTagsVal);
 
 			serviceTagsFileName = serviceTagsFileName == null ? serviceTagsDefaultFileName : serviceTagsFileName;
-
-			File f = new File(serviceTagsFileName);
-
-			if (f.exists() && f.isFile() && f.canRead()) {
-				try {
-					serviceTagsFileStream = new FileInputStream(f);
-					serviceTagsFileURL = f.toURI().toURL();
-				} catch (FileNotFoundException exception) {
-					LOG.error("Error processing input file:" + serviceTagsFileName + " or no privilege for reading file " + serviceTagsFileName, exception);
-				} catch (MalformedURLException malformedException) {
-					LOG.error("Error processing input file:" + serviceTagsFileName + " cannot be converted to URL " + serviceTagsFileName, malformedException);
-				}
-			} else {
-				URL fileURL = getClass().getResource(serviceTagsFileName);
-				if (fileURL == null && !serviceTagsFileName.startsWith("/")) {
-					fileURL = getClass().getResource("/" + serviceTagsFileName);
-				}
-
-				if (fileURL == null) {
-					fileURL = ClassLoader.getSystemClassLoader().getResource(serviceTagsFileName);
-					if (fileURL == null && !serviceTagsFileName.startsWith("/")) {
-						fileURL = ClassLoader.getSystemClassLoader().getResource("/" + serviceTagsFileName);
-					}
-				}
-
-				if (fileURL != null) {
+			if (options != null) {
+				String tagFilesCountStr = options.get(tagFilesCountProperty);
+				if (!StringUtils.isNotEmpty(tagFilesCountStr)) {
 					try {
-						serviceTagsFileStream = fileURL.openStream();
-						serviceTagsFileURL = fileURL;
-					} catch (Exception exception) {
-						LOG.error(serviceTagsFileName + " is not a file", exception);
+						tagFilesCount = Integer.parseInt(tagFilesCountStr);
+					} catch (Exception e) {
+						LOG.error("Exception while parsing tagFileCount option value:[" + tagFilesCountStr + "]");
+						LOG.error("Setting tagFilesCount to 0");
 					}
-				} else {
-					LOG.warn("Error processing input file: URL not found for " + serviceTagsFileName + " or no privilege for reading file " + serviceTagsFileName);
 				}
 			}
 
-			if (serviceTagsFileStream != null) {
-				try {
-					serviceTagsFileStream.close();
-				} catch (Exception e) {
-					// Ignore
-				}
+			if (StringUtils.isNotBlank(serviceTagsFileName)) {
+				serviceTagsFileURL = getTagFileURL(serviceTagsFileName);
 			}
-
+			isInitial = true;
 		} else {
 			LOG.error("FATAL: Cannot find service/serviceDef/serviceTagsFile to use for retrieving tags. Will NOT be able to retrieve tags.");
 		}
@@ -123,44 +94,140 @@ public class RangerFileBasedTagRetriever extends RangerTagRetriever {
 
 	@Override
 	public ServiceTags retrieveTags(long lastKnownVersion, long lastActivationTimeInMillis) throws Exception {
-
 		if (LOG.isDebugEnabled()) {
 			LOG.debug("==> retrieveTags(lastKnownVersion=" + lastKnownVersion + ", lastActivationTimeInMillis=" + lastActivationTimeInMillis + ", serviceTagsFilePath=" + serviceTagsFileName);
 		}
 
-		ServiceTags serviceTags = null;
+		ServiceTags serviceTags = readFromFile();
+
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("<== retrieveTags(lastKnownVersion=" + lastKnownVersion + ", lastActivationTimeInMillis=" + lastActivationTimeInMillis);
+		}
+
+		return serviceTags;
+	}
+
+	URL getTagFileURL(String fileName) {
+		URL fileURL = null;
+
+		InputStream tagFileStream = null;
+
+		File f = new File(fileName);
+
+		if (f.exists() && f.isFile() && f.canRead()) {
+			try {
+				tagFileStream = new FileInputStream(f);
+				fileURL = f.toURI().toURL();
+			} catch (FileNotFoundException exception) {
+				LOG.error("Error processing input file:" + fileName + " or no privilege for reading file " + fileName, exception);
+			} catch (MalformedURLException malformedException) {
+				LOG.error("Error processing input file:" + fileName + " cannot be converted to URL " + fileName, malformedException);
+			}
+		} else {
+
+			fileURL = getClass().getResource(fileName);
+			if (fileURL == null) {
+				if (!fileName.startsWith("/")) {
+					fileURL = getClass().getResource("/" + fileName);
+				}
+			}
+
+			if (fileURL == null) {
+				fileURL = ClassLoader.getSystemClassLoader().getResource(fileName);
+				if (fileURL == null) {
+					if (!fileName.startsWith("/")) {
+						fileURL = ClassLoader.getSystemClassLoader().getResource("/" + fileName);
+					}
+				}
+			}
+
+			if (fileURL != null) {
+
+				try {
+					tagFileStream = fileURL.openStream();
+				} catch (Exception exception) {
+					fileURL = null;
+					LOG.error(fileName + " is not a file", exception);
+				}
+			} else {
+				LOG.warn("Error processing input file: URL not found for " + fileName + " or no privilege for reading file " + fileName);
+			}
+		}
+
+		if (tagFileStream != null) {
+			try {
+				tagFileStream.close();
+			} catch (Exception e) {
+				// Ignore
+			}
+		}
+		return fileURL;
+	}
+
+	private ServiceTags readFromFile() {
 
-		if (serviceTagsFileURL != null) {
-			try (
-				InputStream serviceTagsFileStream = serviceTagsFileURL.openStream();
-				Reader reader = new InputStreamReader(serviceTagsFileStream, Charset.forName("UTF-8"))
-			) {
+		if (LOG.isDebugEnabled()) {
+			LOG.debug("==> RangerFileBasedTagRetriever.readFromFile: sourceFileName=" + serviceTagsFileName);
+		}
 
-				serviceTags = gsonBuilder.fromJson(reader, ServiceTags.class);
+		ServiceTags ret = null;
 
-				if (serviceTags.getTagVersion() <= lastKnownVersion) {
-					// No change in serviceTags
-					serviceTags = null;
-				} else {
+		String fileName;
+
+		fileName = serviceTagsFileName;
+
+		if (isInitial) {
+			isInitial = false;
+			if (serviceTagsFileURL != null) {
+				try (
+						InputStream fileStream = serviceTagsFileURL.openStream();
+						Reader reader = new InputStreamReader(fileStream, StandardCharsets.UTF_8)
+				) {
+
+					ret = gsonBuilder.fromJson(reader, ServiceTags.class);
 					if (deDupTags) {
-						final int countOfDuplicateTags = serviceTags.dedupTags();
-						LOG.info("Number of duplicate tags removed from the received serviceTags:[" + countOfDuplicateTags + "]. Number of tags in the de-duplicated serviceTags :[" + serviceTags.getTags().size() + "].");
+						final int countOfDuplicateTags = ret.dedupTags();
+						LOG.info("Number of duplicate tags removed from the received serviceTags:[" + countOfDuplicateTags + "]. Number of tags in the de-duplicated serviceTags :[" + ret.getTags().size() + "].");
 					}
+
+				} catch (IOException e) {
+					LOG.warn("Error processing input file: or no privilege for reading file " + fileName, e);
 				}
-			} catch (IOException e) {
-				LOG.warn("Error processing input file: or no privilege for reading file " + serviceTagsFileName);
-				throw e;
+			} else {
+				LOG.error("Error reading file: " + fileName);
 			}
-		} else {
-			LOG.error("Error reading file: " + serviceTagsFileName);
-			throw new Exception("serviceTagsFileURL is null!");
+
+		} else if (tagFilesCount > 0) {
+
+			currentTagFileIndex = currentTagFileIndex % tagFilesCount;
+			fileName = serviceTagsFileName + "_" + currentTagFileIndex + ".json";
+			URL fileURL = getTagFileURL(fileName);
+			if (fileURL != null) {
+				try (
+						InputStream fileStream = fileURL.openStream();
+						Reader reader = new InputStreamReader(fileStream, StandardCharsets.UTF_8)
+				) {
+
+					ret = gsonBuilder.fromJson(reader, ServiceTags.class);
+					currentTagFileIndex++;
+					if (deDupTags) {
+						final int countOfDuplicateTags = ret.dedupTags();
+						LOG.info("Number of duplicate tags removed from the received serviceTags:[" + countOfDuplicateTags + "]. Number of tags in the de-duplicated serviceTags :[" + ret.getTags().size() + "].");
+					}
+				} catch (IOException e) {
+					LOG.warn("Error processing input file: or no privilege for reading file " + fileName, e);
+				}
+			} else {
+				LOG.error("Error reading file: " + fileName);
+			}
+
 		}
 
 		if (LOG.isDebugEnabled()) {
-			LOG.debug("<== retrieveTags(lastKnownVersion=" + lastKnownVersion + ", lastActivationTimeInMillis=" + lastActivationTimeInMillis);
+			LOG.debug("<== RangerFileBasedTagRetriever.readFromFile: sourceFileName=" + fileName);
 		}
 
-		return serviceTags;
+		return ret;
 	}
 
 }


(ranger) 02/07: RANGER-4616: modified committer info for doc purpose

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit fbeddbe4566ad4ad5f1ca58b6fb65d2b80d02cac
Author: Selvamohan Neethiraj <sn...@apache.org>
AuthorDate: Mon Dec 18 12:58:15 2023 -0500

    RANGER-4616: modified committer info for doc purpose
---
 docs/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/pom.xml b/docs/pom.xml
index 4201760f1..60bc285c1 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -448,7 +448,7 @@
                 <role>Committer</role>
             </roles>
             <organization>
-                Privacera
+                InfoTekies Corp.
             </organization>
         </developer>
         <developer>


(ranger) 03/07: RANGER-4467: User Agent info not logged under 'Login sessions' when login fails

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 1be421d9c704e97901dc9ac6508eb8fa5b83aab0
Author: RakeshGuptaDev <ra...@gmail.com>
AuthorDate: Tue Oct 10 14:38:10 2023 +0530

    RANGER-4467: User Agent info not logged under 'Login sessions' when login fails
    
    Signed-off-by: Kishor Gollapalliwar <ki...@gmail.com>
---
 .../main/java/org/apache/ranger/biz/SessionMgr.java   |  4 ++--
 .../ranger/security/listener/SpringEventListener.java | 17 ++++++++++++++---
 .../web/authentication/RangerAuthSuccessHandler.java  | 19 ++++++++++---------
 3 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java
index 89bffa7c9..04fab5add 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/SessionMgr.java
@@ -310,7 +310,7 @@ public class SessionMgr {
 	}
 
 	public XXAuthSession processFailureLogin(int authStatus, int authType,
-			String loginId, String remoteAddr, String sessionId) {
+			String loginId, String remoteAddr, String sessionId, String userAgent) {
 		XXAuthSession gjAuthSession = new XXAuthSession();
 		gjAuthSession.setLoginId(loginId);
 		gjAuthSession.setUserId(null);
@@ -320,7 +320,7 @@ public class SessionMgr {
 		gjAuthSession.setDeviceType(RangerCommonEnums.DEVICE_UNKNOWN);
 		gjAuthSession.setExtSessionId(sessionId);
 		gjAuthSession.setRequestIP(remoteAddr);
-		gjAuthSession.setRequestUserAgent(null);
+		gjAuthSession.setRequestUserAgent(userAgent);
 
 		gjAuthSession = storeAuthSession(gjAuthSession);
 		return gjAuthSession;
diff --git a/security-admin/src/main/java/org/apache/ranger/security/listener/SpringEventListener.java b/security-admin/src/main/java/org/apache/ranger/security/listener/SpringEventListener.java
index 8f46af968..c07fc5a5a 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/listener/SpringEventListener.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/listener/SpringEventListener.java
@@ -33,6 +33,8 @@ import org.springframework.security.authentication.event.AuthenticationSuccessEv
 import org.springframework.security.authentication.event.AuthenticationFailureLockedEvent;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.web.authentication.WebAuthenticationDetails;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 
 public class SpringEventListener implements
@@ -86,6 +88,7 @@ public class SpringEventListener implements
 	String remoteAddress = details != null ? details.getRemoteAddress()
 		: "";
 	String sessionId = details != null ? details.getSessionId() : "";
+	String userAgent = getUserAgent();
 
 	logger.info("Login Unsuccessful:" + auth.getName() + " | Ip Address:"
 		+ remoteAddress + " | Bad Credentials");
@@ -93,7 +96,7 @@ public class SpringEventListener implements
 	sessionMgr.processFailureLogin(
 		XXAuthSession.AUTH_STATUS_WRONG_PASSWORD,
 		XXAuthSession.AUTH_TYPE_PASSWORD, auth.getName(),
-		remoteAddress, sessionId);
+		remoteAddress, sessionId, userAgent);
     }
 
     protected void process(AuthenticationFailureLockedEvent authFailEvent) {
@@ -101,10 +104,12 @@ public class SpringEventListener implements
 		WebAuthenticationDetails details       = (WebAuthenticationDetails) auth.getDetails();
 		String                   remoteAddress = details != null ? details.getRemoteAddress() : "";
 		String                   sessionId     = details != null ? details.getSessionId() : "";
+		String                   userAgent     = getUserAgent();
 
 		logger.info("Login Unsuccessful:" + auth.getName() + " | Ip Address:" + remoteAddress + " | User account is locked");
 
-		sessionMgr.processFailureLogin(XXAuthSession.AUTH_STATUS_LOCKED, XXAuthSession.AUTH_TYPE_PASSWORD, auth.getName(), remoteAddress, sessionId);
+		sessionMgr.processFailureLogin(XXAuthSession.AUTH_STATUS_LOCKED, XXAuthSession.AUTH_TYPE_PASSWORD,
+				auth.getName(), remoteAddress, sessionId, userAgent);
 	}
 
     protected void process(AuthenticationFailureDisabledEvent authFailEvent) {
@@ -114,14 +119,20 @@ public class SpringEventListener implements
 	String remoteAddress = details != null ? details.getRemoteAddress()
 		: "";
 	String sessionId = details != null ? details.getSessionId() : "";
+	String userAgent = getUserAgent();
 
 	logger.info("Login Unsuccessful:" + auth.getName() + " | Ip Address:"
 		+ remoteAddress + " | User Disabled");
 
 	sessionMgr.processFailureLogin(XXAuthSession.AUTH_STATUS_DISABLED,
 		XXAuthSession.AUTH_TYPE_PASSWORD, auth.getName(),
-		remoteAddress, sessionId);
+		remoteAddress, sessionId, userAgent);
 
     }
 
+	protected String getUserAgent() {
+		ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+		String userAgent = attributes.getRequest().getHeader("User-Agent");
+		return userAgent;
+	}
 }
diff --git a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
index 52cf17ae1..6de3b7448 100644
--- a/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
+++ b/security-admin/src/main/java/org/apache/ranger/security/web/authentication/RangerAuthSuccessHandler.java
@@ -80,7 +80,7 @@ SavedRequestAwareAuthenticationSuccessHandler {
     public void onAuthenticationSuccess(HttpServletRequest request,
 	    HttpServletResponse response, Authentication authentication)
     throws ServletException, IOException {
-    	
+
 	RangerSessionFixationProtectionStrategy rangerSessionFixationProtectionStrategy=new RangerSessionFixationProtectionStrategy();
 	rangerSessionFixationProtectionStrategy.onAuthentication(authentication, request, response);
     	WebAuthenticationDetails details = (WebAuthenticationDetails) authentication
@@ -88,26 +88,27 @@ SavedRequestAwareAuthenticationSuccessHandler {
     	String remoteAddress = details != null ? details.getRemoteAddress()
     		: "";
     	String sessionId = details != null ? details.getSessionId() : "";
-    	
+		String userAgent = request.getHeader("User-Agent");
+
     	boolean isValidUser = sessionMgr.isValidXAUser(authentication.getName());
     	String rangerAuthenticationMethod=PropertiesUtil.getProperty("ranger.authentication.method","NONE");
     	if(!isValidUser && !"NONE".equalsIgnoreCase(rangerAuthenticationMethod)){
     		xUserMgr.createServiceConfigUser(authentication.getName());
     		isValidUser = sessionMgr.isValidXAUser(authentication.getName());
     	}
-    	
+
     	response.setContentType("application/json;charset=UTF-8");
 		response.setHeader("Cache-Control", "no-cache");
 		response.setHeader("X-Frame-Options", "DENY");
 		VXResponse vXResponse = new VXResponse();
-    	
+
     	if(!isValidUser) {
     		sessionMgr.processFailureLogin(
     				XXAuthSession.AUTH_STATUS_USER_NOT_FOUND,
     				XXAuthSession.AUTH_TYPE_PASSWORD, authentication.getName(),
-    				remoteAddress, sessionId);
+					remoteAddress, sessionId, userAgent);
     		authentication.setAuthenticated(false);
-    		
+
 			vXResponse.setStatusCode(HttpServletResponse.SC_PRECONDITION_FAILED);
 			vXResponse.setMsgDesc("Auth Succeeded but user is not synced yet for " + authentication.getName());
 
@@ -117,9 +118,9 @@ SavedRequestAwareAuthenticationSuccessHandler {
 			// response.sendError(HttpServletResponse.SC_PRECONDITION_FAILED);
 			logger.info("Auth Succeeded but user is not synced yet for "
 					+ authentication.getName());
-    		
+
     	} else {
-    	
+
 			String ajaxRequestHeader = request.getHeader("X-Requested-With");
 			if (logger.isDebugEnabled()) {
 			    logger.debug("commence() X-Requested-With=" + ajaxRequestHeader);
@@ -132,7 +133,7 @@ SavedRequestAwareAuthenticationSuccessHandler {
 				// }
 				// request.getRequestDispatcher(ajaxLoginSuccessPage).forward(request,
 				// response);
-				
+
 				String jsonResp = "";
 				try {
 					vXResponse.setStatusCode(HttpServletResponse.SC_OK);


(ranger) 05/07: RANGER-4613: updated trx log retrieval API to support objectId query param

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit c4bb32b44b9dabaf5db6a706927354960330be10
Author: Madhan Neethiraj <ma...@apache.org>
AuthorDate: Mon Dec 18 00:17:33 2023 -0800

    RANGER-4613: updated trx log retrieval API to support objectId query param
---
 security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java    | 1 +
 .../src/main/java/org/apache/ranger/service/XTrxLogService.java       | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
index abc324dd1..2e1982c4a 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/AssetREST.java
@@ -606,6 +606,7 @@ public class AssetREST {
 		SearchCriteria searchCriteria = searchUtil.extractCommonCriterias(
 				request, xTrxLogService.sortFields);
                 searchUtil.extractInt(request, searchCriteria, "objectClassType", "audit type.");
+		searchUtil.extractInt(request, searchCriteria, "objectId", "Object ID");
 		searchUtil.extractString(request, searchCriteria, "attributeName",
 				"Attribute Name", StringUtil.VALIDATION_TEXT);
 		searchUtil.extractString(request, searchCriteria, "action",
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
index 9d9e0bbc0..676552e6e 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogService.java
@@ -74,7 +74,9 @@ public class XTrxLogService extends XTrxLogServiceBase<XXTrxLog, VXTrxLog> {
 				SearchField.DATA_TYPE.INT_LIST, SearchField.SEARCH_TYPE.FULL));
 		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("createDate", "obj.createTime", true, SORT_ORDER.DESC));
 		}
 


(ranger) 04/07: RANGER-4502 : Getting Error to load backbone.js latest UI.

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch RANGER-3923
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 4d380377697e3520ea906a9362a24ebc416d3ea6
Author: Dhaval Rajpara <dh...@gmail.com>
AuthorDate: Tue Dec 5 10:00:10 2023 +0530

    RANGER-4502 : Getting Error to load backbone.js latest UI.
    
    Signed-off-by: Dineshkumar Yadav <di...@outlook.com>
---
 .../src/main/webapp/scripts/views/policymanager/ServiceLayoutSidebar.js  | 1 +
 1 file changed, 1 insertion(+)

diff --git a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayoutSidebar.js b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayoutSidebar.js
index 965c52c37..0276cafa1 100644
--- a/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayoutSidebar.js
+++ b/security-admin/src/main/webapp/scripts/views/policymanager/ServiceLayoutSidebar.js
@@ -24,6 +24,7 @@ define(function(require){
     var Backbone            = require('backbone');
     var XALinks             = require('modules/XALinks');
     var XAEnums             = require('utils/XAEnums');
+    var XAGlobals           = require('utils/XAGlobals');
     var XAUtil              = require('utils/XAUtils');
     var SessionMgr          = require('mgrs/SessionMgr');
     var App                 = require('App');