This is an automated email from the ASF dual-hosted git repository.
rmani 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 bcdb1ed RANGER-2869: Ranger audit module to provide an option to
generate a GUID for each audit log
bcdb1ed is described below
commit bcdb1eda7f0d774952facd84da77b69fca149ff1
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Fri Jun 19 18:31:19 2020 -0700
RANGER-2869: Ranger audit module to provide an option to generate a GUID
for each audit log
Signed-off-by: Ramesh Mani <[email protected]>
Change-Id: I4d5b27f08cd7ecf21c674d09f8007f4af9973cca
RANGER-2869: Ranger audit module to provide an option to generate a GUID
for each audit log-Addon
Change-Id: Ib7e2f8d3d467a2a9f9c1ebebd8c1197f25c900ba
Signed-off-by: Ramesh Mani <[email protected]>
RANGER-2869: Ranger audit module to provide an option to generate a GUID
for each audit -review Fixes
---
.../org/apache/ranger/audit/provider/MiscUtil.java | 26 ++++++++--
.../plugin/audit/RangerDefaultAuditHandler.java | 60 +++++++++++++---------
.../plugin/policyengine/RangerAccessResult.java | 11 ++++
3 files changed, 69 insertions(+), 28 deletions(-)
diff --git
a/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
b/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
index b7315a9..e2b7448 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
@@ -34,6 +34,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Random;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TimeZone;
@@ -73,7 +74,7 @@ public class MiscUtil {
public static final String TOKEN_ENV = "env:";
public static final String ESCAPE_STR = "\\";
- static VMID sJvmID = new VMID();
+ private static final VMID sJvmID = new VMID();
public static String LINE_SEPARATOR =
System.getProperty("line.separator");
@@ -294,6 +295,17 @@ public class MiscUtil {
return UUID.randomUUID().toString();
}
+ // UUID.randomUUID() uses SecureRandom, which is seen to be slow in
some environments; this method uses Random
+ public static String generateGuid() {
+ byte[] randomBytes = new byte[16];
+
+ RandomHolder.random.nextBytes(randomBytes);
+
+ UUID uuid = UUID.nameUUIDFromBytes(randomBytes);
+
+ return uuid.toString();
+ }
+
public static <T> String stringify(T log) {
String ret = null;
@@ -461,7 +473,8 @@ public class MiscUtil {
}
/**
- * @param ugiLoginUser
+ * @param newUGI
+ * @param newSubject
*/
public static void setUGILoginUser(UserGroupInformation newUGI,
Subject newSubject) {
@@ -593,7 +606,8 @@ public class MiscUtil {
}
/**
- * @param string
+ * @param useLogger
+ * @param message
* @param e
*/
static public boolean logErrorMessageByInterval(Log useLogger,
@@ -852,4 +866,10 @@ public class MiscUtil {
utc.add(Calendar.MILLISECOND, -offset);
return utc.getTime();
}
+
+ // use Holder class to defer initialization until needed
+ private static class RandomHolder {
+ static final Random random = new Random();
+ }
+
}
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
b/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
index 137fd1f..4273726 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java
@@ -43,32 +43,27 @@ import org.apache.ranger.plugin.util.RangerRESTUtils;
public class RangerDefaultAuditHandler implements RangerAccessResultProcessor {
private static final Log LOG =
LogFactory.getLog(RangerDefaultAuditHandler.class);
- static long sequenceNumber;
+ private static final String CONF_AUDIT_ID_STRICT_UUID =
"xasecure.audit.auditid.strict.uuid";
+ private static final boolean DEFAULT_AUDIT_ID_STRICT_UUID = false;
- private static String UUID = MiscUtil.generateUniqueId();
- private static AtomicInteger counter = new AtomicInteger(0);
- protected String moduleName =
RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME;
+ private final boolean auditIdStrictUUID;
+ protected final String moduleName;
+ private final RangerRESTUtils restUtils = new RangerRESTUtils();
+ private long sequenceNumber = 0;
+ private String UUID =
MiscUtil.generateUniqueId();
+ private AtomicInteger counter = new AtomicInteger(0);
+
- RangerRESTUtils restUtils = new RangerRESTUtils();
public RangerDefaultAuditHandler() {
+ auditIdStrictUUID = DEFAULT_AUDIT_ID_STRICT_UUID;
+ moduleName =
RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME;
}
public RangerDefaultAuditHandler(Configuration config) {
- init(config);
- }
-
- public void init(Configuration config) {
- if(LOG.isDebugEnabled()) {
- LOG.debug("==> RangerDefaultAuditHandler.init()");
- }
-
- moduleName =
config.get(RangerHadoopConstants.AUDITLOG_RANGER_MODULE_ACL_NAME_PROP ,
RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME);
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== RangerDefaultAuditHandler.init()");
- }
+ auditIdStrictUUID =
config.getBoolean(CONF_AUDIT_ID_STRICT_UUID, DEFAULT_AUDIT_ID_STRICT_UUID);
+ moduleName =
config.get(RangerHadoopConstants.AUDITLOG_RANGER_MODULE_ACL_NAME_PROP ,
RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME);
}
@Override
@@ -145,7 +140,10 @@ public class RangerDefaultAuditHandler implements
RangerAccessResultProcessor {
ret.setZoneName(result.getZoneName());
ret.setAgentHostname(restUtils.getAgentHostname());
ret.setPolicyVersion(result.getPolicyVersion());
+
populateDefaults(ret);
+
+ result.setAuditLogId(ret.getEventId());
}
if(LOG.isDebugEnabled()) {
@@ -276,15 +274,27 @@ public class RangerDefaultAuditHandler implements
RangerAccessResultProcessor {
}
private String generateNextAuditEventId() {
- int nextId = counter.getAndIncrement();
+ final String ret;
- if(nextId == Integer.MAX_VALUE) {
- // reset UUID and counter
- UUID = MiscUtil.generateUniqueId();
- counter = new AtomicInteger(0);
- }
+ if (auditIdStrictUUID) {
+ ret = MiscUtil.generateGuid();
+ } else {
+ int nextId = counter.getAndIncrement();
- return UUID + "-" + Integer.toString(nextId);
+ if (nextId == Integer.MAX_VALUE) {
+ // reset UUID and counter
+ UUID = MiscUtil.generateUniqueId();
+ counter = new AtomicInteger(0);
+ }
+
+ ret = UUID + "-" + Integer.toString(nextId);
+ }
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("generateNextAuditEventId(): " + ret);
+ }
+
+ return ret;
}
private String writeObjectAsString(Serializable obj) {
diff --git
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessResult.java
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessResult.java
index b82ff29..c54ef17 100644
---
a/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessResult.java
+++
b/agents-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessResult.java
@@ -44,6 +44,7 @@ public class RangerAccessResult {
private boolean isAuditedDetermined;
private boolean isAudited;
private long auditPolicyId = -1;
+ private String auditLogId;
private long policyId = -1;
private int policyPriority;
private String zoneName;
@@ -202,6 +203,15 @@ public class RangerAccessResult {
this.policyId = policyId;
}
+ public String getAuditLogId() {
+ return auditLogId;
+ }
+
+ public void setAuditLogId(String auditLogId) {
+ this.auditLogId = auditLogId;
+ }
+
+
/**
* @param policyId the auditPolicyId to set
*/
@@ -332,6 +342,7 @@ public class RangerAccessResult {
sb.append("isAllowed={").append(isAllowed).append("} ");
sb.append("isAuditedDetermined={").append(isAuditedDetermined).append("} ");
sb.append("isAudited={").append(isAudited).append("} ");
+ sb.append("auditLogId={").append(auditLogId).append("} ");
sb.append("policyType={").append(policyType).append("} ");
sb.append("policyId={").append(policyId).append("} ");
sb.append("zoneName={").append(zoneName).append("} ");