Skill 보안 설계 완전 가이드

allowed-tools의 오해와 현실적 안전 대책 3가지

by AI개발자
claudecode1.png

배경 지식

allowed-tools의 올바른 이해

공식 문서에서는 "툴 접근을 제한한다(Restrict tool access)"라는 섹션 제목으로 allowed-tools가 설명되어 있습니다. 리스트에 포함된 툴은 확인 없이 자동으로 실행되며, 포함되지 않은 툴은 사용자에게 확인 화면이 표시됩니다. 단, 확인에서 승인하면 사용할 수 있으므로, 완전한 사용 금지가 아니라 자동 실행의 범위를 제어하는 구조입니다.

allowed-tools = 자동 실행의 범위를 제어하는 리스트
allowed-tools: Read, Grep, Glob

이 설정의 의미:

Read, Grep, Glob → 사용자 확인 없이 자동으로 실행된다

Write, Edit, Bash → 사용자에게 확인 다이얼로그가 표시되며, 승인하면 실행할 수 있다


즉, allowed-tools에 적혀 있지 않은 툴도 사용자가 승인하면 사용할 수 있습니다. 자동 실행을 제한하는 기능이며, 툴의 사용을 완전히 금지하는 기능이 아닙니다.

자주 있는 오해와 실제 동작:

skills-007.png


Skill 단위의 툴 제한은 불가능

현재 Claude Code에서는, 특정 Skill에 대해서만 툴의 사용을 금지하는 구조는 존재하지 않습니다.

allowed-tools → 자동 실행의 범위를 제어 (리스트 외도 사용자 승인으로 실행 가능)

/permissions → Skill(name) 구문으로 특정 스킬의 허가/거부가 가능. 단, 스킬 내에서 사용하는 툴의 개별 제어는 불가능

SKILL.md 본문 → Claude에 대한 지시 (강제력은 없음)


이는 설계상의 제약이며, 향후 업데이트에서 바뀔 가능성은 있지만, 현시점에서는 이 전제로 안전 설계를 생각해야 합니다.

� 한국 팀 개발 환경에서의 인식
사내 보안 정책이나 컴플라이언스 요건을 Claude Code Skill로 100% 강제하는 것은 현재 불가능합니다. "Skill 설정"과 "프로젝트 전체 설정(settings.json)"을 명확히 구분하여 보안 설계를 수립하는 것이 중요합니다.


현실적으로 가능한 안전 대책

Skill 단위의 완전한 제한은 불가능하지만, 다음을 조합하여 리스크를 줄일 수 있습니다.

skills-008.png


권한 규칙에 의한 스킬 허가/거부

/permissions나 settings.json에서, 스킬 단위로 실행의 허가/거부를 설정할 수 있습니다. Skill()

구문을 사용합니다.

# 특정 스킬만 허가
Skill(commit)
Skill(review-pr *)

# 특정 스킬을 거부
Skill(deploy *)

Skill(name) → 스킬명의 완전 일치

Skill(name *) → 프리픽스 매치 (인수가 붙은 호출도 포함)


이를 통해, 위험한 스킬(예: 배포 조작)의 실행 자체를 시스템 레벨에서 블록할 수 있습니다.

중요: allowed-tools와 SKILL.md 본문은 Skill 측의 설정이지만, 정말 엄격한 제어가 필요한 경우는 settings.json이나 /permissions등 Claude Code 전체의 설정으로 관리할 필요가 있습니다.
Skill의 설정만으로는 완전한 안전성을 담보할 수 없습니다.


툴별 리스크 레벨

자동 승인의 범위를 결정할 때의 판단 기준입니다.

skills-009.png

실행 컨텍스트와 안전성

메인 컨텍스트 (기본)

Skill은 메인 대화 컨텍스트 내에서 실행됩니다. Skill의 실행 결과(읽은 파일 내용, 생성한 출력 등)가 모두 대화 이력에 남아, 후속 대화에 영향을 줍니다.


fork 컨텍스트

context: fork를 지정하면, 독립된 컨텍스트에서 실행됩니다.

context: fork
skills-010.png

fork를 선택해야 하는 경우의 기준:

대량의 파일을 읽는 Skill (메인 컨텍스트의 토큰 절약)

대화 문맥의 영향을 받아서는 안 되는 Skill (문서 생성, 데이터 변환 등)

부작용이 있는 조작을 포함하는 Skill (메인 대화의 오염 방지)



핸즈온

1단계: allowed-tools의 실제 동작 확인

먼저, allowed-tools가 완전한 금지가 아니라 자동 실행의 범위 제어임을 직접 체험합니다.

임시 테스트용 Skill을 작성합니다.

지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.

brunch membership
AI개발자작가님의 멤버십을 시작해 보세요!

AI Workflow Architect, LLM Engineer, Vibe Engineering, Claude Code, AI 업무 자동화 컨설팅/AI강의

89 구독자

오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠

  • 최근 30일간 57개의 멤버십 콘텐츠 발행
  • 총 77개의 혜택 콘텐츠
최신 발행글 더보기
이전 04화Skill 디렉토리 구조 설계