feat: logging masking 적용

dev
gitea-관리자 1 year ago
parent e0a6341756
commit b7df5aa9f5

@ -8,10 +8,17 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import kr.xit.core.biz.model.LoggingDTO;
import kr.xit.core.biz.service.ILoggingService;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
import kr.xit.core.spring.util.error.ErrorParse;
import kr.xit.core.support.slack.SlackWebhookPush;
import kr.xit.core.support.utils.Checks;
import kr.xit.core.support.utils.JsonUtils;
import kr.xit.core.support.utils.LogUtils; import kr.xit.core.support.utils.LogUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint; import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
@ -30,16 +37,6 @@ import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
import kr.xit.core.biz.model.LoggingDTO;
import kr.xit.core.biz.service.ILoggingService;
import kr.xit.core.spring.util.error.ErrorParse;
import kr.xit.core.support.slack.SlackWebhookPush;
import kr.xit.core.support.utils.Checks;
import kr.xit.core.support.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
/** /**
* <pre> * <pre>
* description : logging trace aspect * description : logging trace aspect
@ -126,7 +123,7 @@ public class TraceLoggerAspect {
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes != null? attributes.getRequest(): null; HttpServletRequest request = attributes != null? attributes.getRequest(): null;
traceLogging(JsonUtils.toJson(pjp.getArgs()), request); traceLogging(JsonUtils.toObjByObj(pjp.getArgs()[0], JSONObject.class), request);
Object result = pjp.proceed(); Object result = pjp.proceed();
if(result instanceof CompletableFuture){ if(result instanceof CompletableFuture){
@ -163,7 +160,7 @@ public class TraceLoggerAspect {
* @param params * @param params
* @param request * @param request
*/ */
protected void traceLogging(final String params, final HttpServletRequest request) { protected void traceLogging(final JSONObject json, final HttpServletRequest request) {
if(request != null) { if(request != null) {
String uri = request.getRequestURI(); String uri = request.getRequestURI();
if(Arrays.stream(excludes).anyMatch(uri::matches)) return; if(Arrays.stream(excludes).anyMatch(uri::matches)) return;
@ -182,6 +179,7 @@ public class TraceLoggerAspect {
} }
//TODO::systemId, reqSystemId 설정 필요 //TODO::systemId, reqSystemId 설정 필요
log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap()); log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
String params = resetJsonMasking(json);
MDC.put("systemId", "ENS"); MDC.put("systemId", "ENS");
MDC.put("reqSystemId", "KAKAO"); MDC.put("reqSystemId", "KAKAO");
MDC.put("param", params); MDC.put("param", params);
@ -338,6 +336,7 @@ log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
} }
private String maskingParam(final String key, final String value){ private String maskingParam(final String key, final String value){
if(Checks.isEmpty(value)) return value;
if("juminId".equals(key)) { if("juminId".equals(key)) {
if(value.length() == 14) { if(value.length() == 14) {
return value.replaceAll("([0-9]{6})-([1-4]{1})([0-9]{6})", "$1-$2******"); return value.replaceAll("([0-9]{6})-([1-4]{1})([0-9]{6})", "$1-$2******");
@ -358,4 +357,16 @@ log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
} }
return value; return value;
} }
@SuppressWarnings("unchecked")
private String resetJsonMasking(final JSONObject json){
for (Object key : json.keySet()) {
if(Checks.isEmpty(json.get(key))) {
json.put(key, json.get(key));
}else {
json.put(key, maskingParam((String) key, String.valueOf(json.get(key))));
}
}
return json.toJSONString();
}
} }

Loading…
Cancel
Save