피드로 돌아가기
I Ran Gitleaks Against My Own Repo and Found 12 Real Secrets
Dev.toDev.to
Security

Gitleaks Baseline 기반의 3단계 검증 체계로 12건의 Secret 유출 해결

I Ran Gitleaks Against My Own Repo and Found 12 Real Secrets

david2026년 6월 21일7intermediate

Context

초기 구축 단계의 편의성을 위해 Secret을 plaintext로 커밋한 레거시 부채가 누적된 상황임. Private Repo라는 심리적 보안 모델에 의존하여 Vault 및 ExternalSecrets 도입 후에도 과거의 유출 데이터가 히스토리에 잔존하는 아키텍처적 결함 발생.

Technical Solution

  • .gitleaks-baseline.json 파일을 통한 기존 유출분 스냅샷 생성으로 신규 커밋 차단 시 발생하는 History 블로킹 문제 해결
  • pre-commit 단계에서 gitleaks protect --staged를 실행하여 신규 Secret 유입을 즉각 차단하는 Fast-fail 구조 설계
  • pre-push 단계에서 gitleaks detect를 통한 전체 레포지토리 재검토로 --no-verify 옵션 등으로 누락된 유출 사례를 최종 검증하는 다중 방어 체계 구축
  • 단순 삭제가 아닌 Vault 마이그레이션과 연동된 Credential Rotation 전략을 통해 실제 유효한 보안 취약점 제거
  • Downstream 의존성을 고려한 순차적 Rotation으로 Terraform State Backend 등 인프라 가용성 유지

1. Gitleaks Baseline 파일을 생성하여 기존 유출분과 신규 유출분을 분리하여 관리할 것

2. Staged-only scan(Commit)과 Full-repo scan(Push)의 2중 레이어로 검증 파이프라인을 구성할 것

3. Secret 제거 시 반드시 원천 소스에서의 Rotation을 수행하고 의존성 서비스의 설정 업데이트를 병행할 것

4. Private Repo를 보안 컨트롤로 간주하지 말고 Zero Trust 관점에서 스캔 도구를 강제할 것

원문 읽기