Skip to Content
Suffering builds character
아카이브11.로깅실습A. 로그 마스킹

A. 로그 마스킹

기본적으로 로그 메시지에는 개인 식별 정보(Personal Identifiable Information, PII)가 평문(Plain text) 그대로 남으면 안됨

💡
Tip

개인 식별 정보, PII

개인 식별 정보(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