Claude Code는 프로젝트 내의 모든 API 키를 읽을 수 있습니다. 이를 방지하기 위한 도구를 만들었습니다.
요약
Claude Code와 같은 코딩 에이전트가 프로젝트 내의 실제 API 키를 읽고 유출하는 문제를 방지하기 위한 프록시 도구 'Towel'을 소개합니다. Towel은 에이전트에게 가짜 키를 제공하고 실제 키는 프록시 단계에서 교체하여 보안을 유지합니다.
핵심 포인트
- 코딩 에이전트의 API 키 노출 및 로그 유출 위험 방지
- 로컬 프록시를 통해 실제 키 대신 가짜 키와 로컬 URL 사용
- 코드 변경 없이 명령어를 통해 간편하게 적용 가능
- 자격 증명 자체를 숨겨 유출된 정보의 가치를 무력화
제가 계속해서 마주쳤던 문제에서 시작되었습니다. Stripe와 통신하는 프로젝트에 코딩 에이전트 (coding agent)를 지정하면, 무언가를 작동시키기 위해 반드시 실제 키 (live key)를 넘겨줘야 했습니다. 이 키는 .env 파일이나 환경 변수 (environment)에 들어있어 에이전트와 에이전트가 생성하는 모든 프로세스가 읽을 수 있는 상태였습니다. 채팅 로그에 한 번 echo 되거나, 어디선가 한 번의 curl 명령만 실행되어도, 터미널을 닫은 후에도 오랫동안 유효한 상태로 남게 됩니다. 하지만 에이전트가 원했던 것은 키 그 자체가 아니었습니다. 에이전트가 원한 것은 결과물, 즉 Stripe가 수락하는 요청 (request)이었습니다.
그래서 Towel은 키를 보관하고 그 결과물만을 빌려줍니다. localhost에서 작동하는 작은 프록시 (proxy)로서, 에이전트는 가짜 키와 로컬 URL을 받게 되고, 실제 키는 에이전트가 등록한 API로 나가는 과정에서만 교체되어 삽입됩니다. 어떤 HTTP API든 가능하며, 원한다면 프로젝트당 여러 개를 사용할 수도 있습니다. 당신의 코드는 변경되지 않습니다. twl project add my-app, twl run --project my-app -- claude와 같이 사용합니다.
솔직히 말씀드리면: 세션 동안 에이전트는 프록시를 통해 여전히 API를 사용할 수 있으며, 여전히 결제(charges)를 생성할 수 있습니다. 이것은 샌드박스 (sandbox)라기보다는 당신의 비밀 정보 (secrets)를 숨기는 방법입니다. 이 도구가 제거하는 것은 자격 증명 (credential) 그 자체이므로, 에이전트가 로그를 남기거나, 출력하거나, 유출하는 그 어떤 것도 나중에 가치가 없게 만듭니다.
첫 번째 알파 (alpha) 버전이며, Linux 전용이고, 검증되지 않았습니다 (unaudited). 테스트 키를 사용하세요. 부디 이 도구를 망가뜨려 보시기 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기