website: Gitleaks 오탐 방지를 위한 테스트 JWT_SECRET 예외 처리
CI 파이프라인에서 gitleaks가 테스트 코드의 더미 JWT_SECRET 값을 실제 시크릿으로 오탐하는 문제를 해결했습니다. .gitleaksignore 파일에 예외 규칙을 추가해 불필요한 CI 실패를 막았습니다.
요약
2026년 7월 13일, .gitleaksignore 파일에 5줄을 추가하는 작은 커밋을 병합했습니다. PR 제목 그대로 "fix(ci): gitleaks — 테스트 전용 JWT_SECRET 더미 값 오탐 무시"가 이번 작업의 전부를 설명해줍니다. 코드 로직 변경은 전혀 없고, CI 설정 파일 하나만 건드린 순수한 인프라성 수정입니다.
배경 및 목적
프로젝트에서는 시크릿 유출을 방지하기 위해 gitleaks를 CI에 연동해 사용하고 있습니다. 그런데 테스트 코드를 작성하다 보면 JWT 인증 로직을 검증하기 위해 JWT_SECRET 같은 값을 더미로 하드코딩하는 경우가 흔합니다. 문제는 gitleaks가 이런 테스트용 더미 값도 실제 유출된 시크릿으로 판단해 CI를 막아버린다는 점입니다.
실제 시크릿이 아닌데도 매번 CI가 빨간불이 되면, 팀원들이 경고에 둔감해지거나 급하게 우회하는 습관이 생길 수 있습니다. 이런 "가짜 경고 피로도"를 줄이고 gitleaks가 원래 목적대로 진짜 위험한 시크릿만 잡아내도록 하기 위해 이번 수정을 진행했습니다.
구현 내용
변경된 파일은 .gitleaksignore 단 하나이며, 5줄이 추가되었습니다. 삭제된 줄은 없습니다. 상세 diff 내용은 제공되지 않았지만, 파일명과 커밋 메시지로 미루어 보면 테스트 파일 경로나 특정 커밋 해시(fingerprint) 기반으로 gitleaks가 해당 오탐 항목을 스캔에서 제외하도록 지정하는 규칙이 추가된 것으로 보입니다.
gitleaks는 보통 아래와 같은 형식으로 무시할 항목을 fingerprint 단위로 등록합니다.
<커밋해시>:<파일경로>:<룰ID>:<라인번호>
이런 식으로 특정 라인에 한정해서 예외를 걸어두면, 전체 룰을 끄거나 파일 전체를 스캔 대상에서 제외하는 것보다 훨씬 안전합니다. 다른 실제 시크릿이 같은 파일에 섞여 들어와도 정상적으로 탐지가 유지되기 때문입니다.
배운 점 및 개선점
시크릿 스캐너를 도입할 때는 테스트 코드에서의 오탐을 어떻게 처리할지 미리 정책을 세워두는 게 중요하다는 걸 느꼈습니다. 이번처럼 사후에 하나씩 예외를 추가하는 방식도 나쁘지 않지만, 앞으로는 테스트용 더미 값에 대한 네이밍 컨벤션(예: TEST_DUMMY_JWT_SECRET 같은 접두사 사용)을 정해두면 애초에 오탐 자체를 줄일 수 있을 것 같습니다.
또한 .gitleaksignore에 예외가 하나둘 쌓이다 보면 나중에 어떤 게 진짜 안전한 예외인지 파악하기 어려워질 수 있으니, 각 항목에 왜 무시해도 되는지 주석을 남기는 습관도 함께 들이면 좋겠습니다.