TL;DR
- Keyfence는 시스템을 벗어나기 전 모든 AI 프로바이더 요청을 검사해 API 키·비밀번호·기타 비밀정보를 차단·비식별화·플레이스홀더 치환하는 로컬 프록시임
- Claude Code, Cursor, Codex, Aider, curl 등 HTTP를 사용하는 도구와 연동됨
.env및 자격 증명 파일에서 비밀정보의 해시만 등록하고, 도구 실행 시 요청을 프록시를 통해 검사함- 기본 모드는 비밀정보를
[REDACTED:<kind>]로 바꾸는 redact이며, block과 placeholder 모드도 제공됨 mitmproxy기반 HTTPS 검사를 위해 최초 실행 시 인증서 신뢰 설정이 필요하며, 패키지 라이선스는 MIT임
Keyfence
- Keyfence는 비밀정보가 대형 언어 모델(LLM) API에 전달되지 않도록 막는 로컬 프록시임
- 시스템을 벗어나기 전 AI 프로바이더로 향하는 모든 요청을 검사하고, API 키·비밀번호·기타 비밀정보를 차단하거나 비식별화하거나 플레이스홀더로 치환함
- Claude Code, Cursor, Codex, Aider, curl 및 HTTP를 사용하는 모든 도구와 함께 동작함
설치
pip install keyfence로 설치함- Python 3.12 이상이 필요함
mitmproxy가 의존성으로 함께 설치됨
사용
keyfence import로.env및 자격 증명 파일의 비밀정보를 등록하며, 해시만 저장함keyfence exec -- claude로 도구를 프록시를 거쳐 실행함keyfence canary .env로 가짜 비밀정보를 심고, 도구가 이를 전송하면 감지함keyfence install-hooks claude-code로 Claude Code가 비밀정보 파일을 아예 읽지 못하도록 설정함- 최초 실행 시
mitmproxy가~/.mitmproxy/에 인증 기관(CA) 인증서를 생성함 - HTTPS 검사를 위해 인증서를 한 번 신뢰해야 하며, macOS에서는
sudo security add-trusted-cert -d -p ssl -k /Library/Keychains/System.keychain ~/.mitmproxy/mitmproxy-ca-cert.pem명령을 사용함 - 다른 운영체제의 설정 방법은 설정 가이드에 수록됨
모드
- block: 요청에
403을 반환하고 전송하지 않음 - redact: 비밀정보를
[REDACTED:<kind>]로 바꾸며 기본 모드임 - placeholder: 비밀정보를
<<SECRET_id>>로 바꾸고 응답에서 실제 값으로 복원하며 스트리밍 응답도 포함됨
문서
- 설정: CA 인증서, 수동 프록시 설정, Docker, 전체 명령어를 다룸
- 탐지: 볼트, 패턴 규칙, 엔트로피 검사, 제외 대상, 감사 로그를 다룸
- 구성: 모든 옵션, 환경 변수, 시스템 프롬프트 알림을 다룸
- 벤치마크:
gitleaks와 비교해 비밀정보 형식별 재현율과 콘텐츠 유형별 오탐률을 측정하며,python bench/run.py로 재현 가능함 - 제한사항: Keyfence가 다루지 않는 범위와 함께 사용해야 하는 도구를 설명함
- 개발: 테스트, 커버리지 기준, 통합 스크립트, 릴리스를 다룸
- 변경 이력을 제공함
라이선스
- MIT 라이선스임
- 포함된 탐지 규칙은
gitleaks에서 제공하며 동일하게 MIT 라이선스임
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요