WEBBOOK CHAPTER

Spring Boot 4.1, 시작부터 런칭까지: 45장. 로그를 증거로 남기되 개인정보는 남기지 않는다

45장. 로그를 증거로 남기되 개인정보는 남기지 않는다

구조화 로그의 공통 필드는 timestamp, level, service, environment, deployment, trace/correlation id, operation, result code, duration이다. 업무 식별자는 접근 통제된 내부 id를 필요할 때만 넣고 이름·전화·메모·JWT·cookie·database URL은 기본 제외한다. 객체 전체를 직렬화하는 debug log는 production에서 금지한다. 예외 stack도 request body와 secret이 섞이지 않았는지 logging filter와 review로 확인한다.

사용자가 제공한 correlation id는 길이와 허용 문자를 제한하고 내부 trace와 연결한다. 공격자가 newline을 넣어 로그를 위조하지 못하게 encoder를 쓴다. 접근 로그와 application audit는 목적이 다르다. 누가 HIGH 항목을 확인했는지는 변경 불가능한 업무 audit에, HTTP 처리 시간은 운영 로그에 둔다. 보존 기간·접근 role·삭제 절차도 별로 정한다.

실습은 token, email, 자유 입력에 가짜 민감 값을 넣고 정상·validation·500·외부 timeout 경로를 실행한 다음 repository와 log artifact 전체를 검색한다. 값이 한 번이라도 나오면 masking만 추가하기 전에 왜 그 객체가 log 경계에 들어왔는지 제거한다. incident export는 최소 범위만 암호화하고 수신자·만료를 기록한다.