TL;DR

  • Keyfence는 시스템을 벗어나기 전 모든 AI 프로바이더 요청을 검사해 API 키·비밀번호·기타 비밀정보를 차단·비식별화·플레이스홀더 치환하는 로컬 프록시임
  • Claude Code, Cursor, Codex, Aider, curl 등 HTTP를 사용하는 도구와 연동됨
  • .env 및 자격 증명 파일에서 비밀정보의 해시만 등록하고, 도구 실행 시 요청을 프록시를 통해 검사함
  • 기본 모드는 비밀정보를 [REDACTED:<kind>]로 바꾸는 redact이며, blockplaceholder 모드도 제공됨
  • 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-codeClaude 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 라이선스임