리포지토리
https://github.com/B1uffer/customFilterTest
1. 시나리오
- 요청 / 응답 로깅 필터 : 모든 요청의 메서드 / URL / 상태 / 소요시간을 기록하고, 민감정보는 마스킹함
- 감사(Audit) 필터 : 누가(사용자 or 익명) 언제 어떤 자원에 접근했는지 기록함
- 성능 모니터링 필터 : 처리 시간을 측정하고 임계값 초과시 경고 로그를 남김
- 테스트용 API : 공개 API, 인증 필요 API, 일부러 지연되는 API 설계
2. 실행, 테스트
1. Postman 테스트 시나리오
- 공개 API(로깅 / 성능 / 감사 로그 확인)
- Method : GET
- URL : http://localhost:8080/public/hello?name=neo&password=secret
- 설명 : 인증이 필요 없는 API로, 요청 / 응답 로그와 성능, 감사 로그가 필터에서 기록됨
- 보호 API : 인증 없음(401 나와야함)
- Method : GET
- URL : http://localhost:8080/api/secure/hello
- 인증 없이 호출하면 401 Unauthorized 응답이 뜬다
- 보호 API : Basic 인증으로 접근 (200 나와야함)
- Method : GET
- http://localhost:8080/api/secure/hello
- Authorization:
- Type : Basic Auth
- Username : user
- Password : password (Security 기본 비밀번호 찾아서 입력)
- 올바른 인증 정보를 제공하면 200 OK 응답을 받는다
- 느린 API : 슬로우 경고 로그 확인
- Method : GET
- URL : http://localhost:8080/api/slow
- Authorization : Basic Auth(user / Security 기본 password)
- 2초 이상 대기 후 응답하는 API로 설계되어있음, 로그에 슬로우 경고 메시지가 출력된다
팁
- 로그 마스킹 전략
- 파라미터 / 헤더 / 본문에서 password, token, authorization 등 키워드는 정규식으로 마스킹한다
- PII(개인식별정보)는 로그에 남기지 않거나, 암호화 / 토큰화 후 저장한다
- 추적 ID와 상관관계
- MDC에 traceId, userId 등을 저장하고 로그 패턴에 포함시키면 시스템 전반 추적에 용이하다
- 게이트웨이 / 프록시가 X-Request-Id를 내려줄 경우 해당 값을 우선 사용한다
import org.slf4j.MDC;
// Trace ID 발급 (요청 단위 추적)
String traceId = UUID.randomUUID().toString();
MDC.put("traceId", traceId); // MDC
- 슬로우 임계값 설계
- SLO에 맞춰 엔드포인트별 임계값을 분리함(읽기 500ms, 쓰기 1000ms)
- 슬로우 누적 횟수 / 백분위수 기반 경보를 운영 모니터링과 연계한다
- 다중 SecurityFilterChain 병행
- /api/secure/** 에는 인증 / 감사 / 성능 필터를 모두 적용, /public/** 에는 로깅만 적용하는 것처럼
체인별 필터 묶음을 다르게 가져가면 성능과 가독성이 좋아진다
- /api/secure/** 에는 인증 / 감사 / 성능 필터를 모두 적용, /public/** 에는 로깅만 적용하는 것처럼
| 구성 요소 | 역할 | 포인트 |
| RequestLoggingFilter | 요청 / 응답 로그, Trace ID, 마스킹 | OncePerRequestFilter, 전구간 로깅 |
| AuditFilter | 사용자 / 리소스 접근 기록 | GenericFilterBean, 사후 분석 / 컴플라이언스 |
| PerformanceMonitoringFilter | 처리시간 측정, 슬로우 경고 | 임계값 / 경보 연계 |
| SecurityConfig | 필터 삽입 / 보안 규칙 | addFilterBefore / After, URL 권한 |
| Controllers | 테스트 엔드포인트 제공 | 공개 / 보호 / 지연 시나리오 |
'Spring Boot > Security' 카테고리의 다른 글
| 주요 웹 보안 이슈 & Security 방어 전략 : XSS (0) | 2026.05.01 |
|---|---|
| 주요 웹 보안 이슈 & Security 방어 전략 : CSRF (0) | 2026.05.01 |
| 커스텀 필터 구현 : 필터체인에 커스텀 필터 추가하기 (0) | 2026.05.01 |
| 커스텀 필터 구현 : 구현 방법 (0) | 2026.05.01 |
| 커스텀 필터 구현 : 필요성 (0) | 2026.04.29 |