gitleaks

AI Agent OrchestrationCLIGo

★ 29,277주당 +130조회 4

무엇인가

Gitleaks는 자격 증명 유출 탐지기다. 소스 코드와 커밋 히스토리에 남은 비밀번호, API 키, 액세스 토큰을 규칙 기반으로 찾아낸다. Go로 작성된 단일 바이너리 CLI이며, CI 파이프라인이나 커밋 훅에 끼워 넣어 코드가 저장소에 들어가기 전에 검사하는 자리에 놓인다.

어떻게 동작하나

탐지 엔진은 규칙 집합으로 구성된다. 규칙은 TOML 설정 파일에 id, 정규식, 엔트로피 임계값 형태로 정의한다. v8.28.0부터 복합 규칙을 지원해 하나의 주 규칙에 [[rules.required]] 보조 규칙을 붙일 수 있고, withinLines·withinColumns로 근접 범위를 지정하면 보조 규칙이 그 범위 안에서 매칭될 때만 결과를 보고한다. 스캔 단위는 파일, 파일의 일부, git diff 같은 프래그먼트다.

무엇과 다른가

스캔 모드는 git, dir, stdin 세 가지다. git 모드는 내부적으로 git log -p를 실행해 패치를 훑고, log-opts 옵션으로 그 명령의 인자를 그대로 넘겨 커밋 범위를 좁힐 수 있다. dir 모드는 디렉터리와 파일을 직접 읽고, stdin 모드는 파이프로 들어온 스트림을 검사한다. 결과는 --report-path로 지정한 파일에 리포트로 기록되며, 그 리포트를 --baseline-path로 다시 넣으면 기존 발견 항목을 무시하고 새 항목만 출력한다.

어떻게 쓰나

설정 파일 탐색 순서는 고정되어 있다. --config/-c 옵션, GITLEAKS_CONFIG 환경 변수의 파일 경로, GITLEAKS_CONFIG_TOML 환경 변수의 파일 내용, 대상 경로 안의 .gitleaks.toml 순으로 우선하며, 넷 다 없으면 기본 설정을 쓴다. 저장소 루트에 .pre-commit-config.yaml을 두고 pre-commit 훅으로 걸거나, Gitleaks-Action으로 GitHub Actions 워크플로에 붙일 수 있다.

전제와 한계

v8.19.0에서 detect와 protect 명령이 폐기되어 --help 목록에서 숨겨졌다. 여전히 동작하지만 git·dir·stdin 명령으로 대체하는 것이 전제다. 프로젝트는 기능 완료 상태로 선언되어 새 기능은 병합되지 않고 보안 패치만 릴리스된다.

유사 도구