mneethiraj commented on code in PR #442: URL: https://github.com/apache/ranger/pull/442#discussion_r1880950716
########## agents-common/src/main/java/org/apache/ranger/plugin/audit/RangerDefaultAuditHandler.java: ########## @@ -41,288 +40,269 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; public class RangerDefaultAuditHandler implements RangerAccessResultProcessor { - private static final Logger LOG = LoggerFactory.getLogger(RangerDefaultAuditHandler.class); - - 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 final Logger LOG = LoggerFactory.getLogger(RangerDefaultAuditHandler.class); + + private static final String CONF_AUDIT_ID_STRICT_UUID = "xasecure.audit.auditid.strict.uuid"; + private static final boolean DEFAULT_AUDIT_ID_STRICT_UUID = false; + + protected final String moduleName; + + private final boolean auditIdStrictUUID; + private long sequenceNumber; + private final RangerRESTUtils restUtils = new RangerRESTUtils(); + private String uuid = MiscUtil.generateUniqueId(); + private AtomicInteger counter = new AtomicInteger(0); + + public RangerDefaultAuditHandler() { + auditIdStrictUUID = DEFAULT_AUDIT_ID_STRICT_UUID; + moduleName = RangerHadoopConstants.DEFAULT_RANGER_MODULE_ACL_NAME; + } + + public RangerDefaultAuditHandler(Configuration config) { + 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 + public void processResult(RangerAccessResult result) { + LOG.debug("==> RangerDefaultAuditHandler.processResult({})", result); + + AuthzAuditEvent event = getAuthzEvents(result); + + logAuthzAudit(event); + + LOG.debug("<== RangerDefaultAuditHandler.processResult({})", result); + } + + @Override + public void processResults(Collection<RangerAccessResult> results) { + LOG.debug("==> RangerDefaultAuditHandler.processResults({})", results); + + Collection<AuthzAuditEvent> events = getAuthzEvents(results); + + if (events != null) { + logAuthzAudits(events); + } + + LOG.debug("<== RangerDefaultAuditHandler.processResults({})", results); + } + + public AuthzAuditEvent getAuthzEvents(RangerAccessResult result) { + LOG.debug("==> RangerDefaultAuditHandler.getAuthzEvents({})", result); + + AuthzAuditEvent ret = null; + + RangerAccessRequest request = result != null ? result.getAccessRequest() : null; + + if (request != null && result.getIsAudited()) { + //RangerServiceDef serviceDef = result.getServiceDef(); + RangerAccessResource resource = request.getResource(); + String resourceType = resource == null ? null : resource.getLeafName(); + String resourcePath = resource == null ? null : resource.getAsString(); + + ret = createAuthzAuditEvent(); + + ret.setRepositoryName(result.getServiceName()); + ret.setRepositoryType(result.getServiceType()); + ret.setResourceType(resourceType); + ret.setResourcePath(resourcePath); + ret.setRequestData(request.getRequestData()); + ret.setEventTime(request.getAccessTime() != null ? request.getAccessTime() : new Date()); + ret.setUser(request.getUser()); + ret.setAction(request.getAccessType()); + ret.setAccessResult((short) (result.getIsAllowed() ? 1 : 0)); + ret.setPolicyId(result.getPolicyId()); + ret.setAccessType(request.getAction()); + ret.setClientIP(request.getClientIPAddress()); + ret.setClientType(request.getClientType()); + ret.setSessionId(request.getSessionId()); + ret.setAclEnforcer(moduleName); + + Set<String> tags = getTags(request); + if (tags != null) { + ret.setTags(tags); + } + + ret.setDatasets(getDatasets(request)); + ret.setProjects(getProjects(request)); + ret.setAdditionalInfo(getAdditionalInfo(request)); + ret.setClusterName(request.getClusterName()); + ret.setZoneName(result.getZoneName()); + ret.setAgentHostname(restUtils.getAgentHostname()); + ret.setPolicyVersion(result.getPolicyVersion()); + + populateDefaults(ret); + + result.setAuditLogId(ret.getEventId()); + } + + LOG.debug("<== RangerDefaultAuditHandler.getAuthzEvents({}): {}", result, ret); + + return ret; + } + + public Collection<AuthzAuditEvent> getAuthzEvents(Collection<RangerAccessResult> results) { Review Comment: As I responded earlier, the intention is to keep a single return from a method. I recommend not changing this approach. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@ranger.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org