회사 내에서 Claude Code 사용을 시작할 때, 정보 시스템 담당자로서 가장 먼저 신경 쓰인 부분은 '프로젝트의 .env에 놓인 API 키를 AI가 읽지 못하게 할 수 있는가'였습니다.
Claude Code에는 settings.json에 작성한 '금지 규칙(deny)'으로 특정 작업을 막는 메커니즘이 있습니다. 하지만 문서를 읽어보면 '막히는 것'과 '안 막히는 것'이 명확하게 구분되어 있었습니다. 그래서 직접 Windows 환경에서 테스트를 진행해 보았습니다.
결론
Read(./.env)의 deny 규칙으로는 Claude의 읽기 도구와 cat .env 실행은 막혔습니다.
Bash(curl *)의 deny 규칙으로는 curl 실행도 막혔습니다. - 다만, Python 스크립트 내부에서(공식 문서에도 명시된 사양대로) .env를 여는 방식으로는 읽힐 수 있었습니다. - 진짜 비밀 정보는 애초에 작업 폴더에 두지 않는 것이 가장 확실합니다.
테스트 환경
- Windows 11 / Git for Windows(Git Bash)
- Claude Code 2.1.296 (2026년 10월 13일 기준)
claude -p (비대화 모드)를 사용하여, 허용할 도구를 `--allowedTools
이러한 작성 방식은 지양하지만, /usr/bin/curl처럼 경로로 호출하는 방식이나 sh -c 'curl ...'와 같은 래핑(wrapping) 방식은 지양하지 않으면 된다고 쓰여 있습니다.
즉, deny 규칙은 'Claude가 평소에 쓰는 명령어'를 막는 장치일 뿐이며, 어떤 방법으로든 읽지 못하게 하는 벽은 아니다라는 의미입니다.
정보 시스템 담당자(情シス)로서의 대책
이번 결과를 바탕으로 저는 다음과 같이 운영하기로 했습니다.
API 키 등은 Claude Code를 실행하는 폴더 외부에서 관리하고, 필요할 때만 환경 변수로 전달합니다. - deny 규칙은 '실수'를 방지하는 그물로 사용한다
Read(./.env),
Bash(curl *),
Bash(git push *)와 같은 금지 규칙을 프로젝트의 .claude/settings.json에 넣어 공유합니다. 평소 작업 중 실수로 읽거나 전송하는 것을 막는 효과가 있습니다. - 확실하게 막고 싶다면, 샌드박스나 조직 설정을 사용한다
공식 문서에서는 OS 레벨에서 파일이나 네트워크 접근을 차단하는 방법으로 샌드박스를 안내하고 있습니다. 참고로 작성 시점에는 윈도우 네이티브 환경에서는 사용할 수 없고, WSL 2에서 사용할 수 있다고 합니다. 조직 전체에 통일하고 싶다면, 사용자가 덮어쓸 수 없는 관리용 설정(managed settings)으로 deny 규칙을 배포하는 방법도 있습니다.
요약
settings.json의 deny 규칙으로 Claude의 읽기 도구인 cat, curl는 실제로 막혔다 - 스크립트를 통한 읽기는 막히지 않는다. 이는 버그가 아니라 공식에 쓰여 있는 사양이다.
- deny 규칙은 '실수 방지용 그물'이며, 정말 지키고 싶은 비밀 정보는 작업 폴더에 두지 않는다
같은 방식으로 사내 도입을 검토하는 분들께 참고가 되었으면 좋겠습니다. 사내에서 사용하기 전에 결정하고 싶은 전체 규칙은 여기(링크)에 모아두었습니다.
Claude Code의 사내 도입 승인 절차를 통과하기 위한 템플릿(유료)은 여기입니다.
이 기사 내용까지 포함하여, Claude Code를 시도하기 전 확인부터, 승인 요청/보안 설정/CLAUDE.md/첫 자동화/사내 전개까지 순서대로 진행할 수 있도록 책에 정리했습니다. 서론~제2장까지는 무료로 읽을 수 있습니다.
이 기사에서 테스트한 deny 규칙은 체크만 하면 settings.json을 만들 수 있는 무료 툴에도 모아두었습니다(실제로 확인한 규칙에는 표시를 했습니다).
Discussion