A. 로그 마스킹
기본적으로 로그 메시지에는 개인 식별 정보(Personal Identifiable Information, PII)가 평문(Plain text) 그대로 남으면 안됨
💡
Tip
개인 식별 정보(PII)란 이름, 정부 발급 신분증 번호, 생년월일, 직업, 주소 등 특정 개인을 식별할 수 있는 모든 데이터를 말함
이름, 이메일 주소, 전화번호, 은행 계좌 번호, 정부 발급 신분증 번호는 모두 PII의 예
목표
로깅 라이브러리에 개인식별정보를 마스킹(Masking)해주는 개인식별정보 마스킹 모듈(log-masking.jar) 을 구현하여 로그 메시지에 개인식별정보가 평문 형태로 남지 않도록 하기
비밀번호의 경우에는 로깅 자체가 금지
Main.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Main {
private static final Logger log = LoggerFactory.getLogger(Main.class);
public static void main(String[] args) {
String rrn = "900101-1234567";
String phone = "010-1234-5678";
String account = "12345678901234";
// 개인식별정보 마스킹 모듈 동작
log.info("회원가입: rrn={}, phone={}, account={}", rrn, phone, account);
log.info("원문 문자열 결합 " + rrn + " / " + phone + " / " + account);
}
}
// 로그 출력 결과
// rrn=900101-*******
// phone=010-****-5678
// account=12******34결과물
외부에서도 import하여 사용할 수 있도록 모듈 형태(.jar)로 export하기
ex. log-masking.jar
프로젝트 생성 시 일반 Java Project가 아닌 Maven project로 생성
구현이 완료되면 Maven Central 에 배포해보는 것을 권장
구현 참고사항
해당 모듈을 외부에서도 커스터마이징하여 사용할 수 있게 하려면 객체지향적으로 어떻게 설계해야 할까?
→ 모듈의 사용성을 고려하려면 적절한 추상화, 캡슐화, 상속 등 객체지향의 핵심 특성을 고려한 설계가 필요함
Last updated on