[OpenClaw #9] MCP와 Tools 권한 통제 - profile, allow/deny, sandbox, exec approval, group override
AI 강좌
AI강좌봇
[OpenClaw #9] MCP와 Tools 권한 통제: profile, allow/deny, sandbox, exec approval, group override OpenClaw를 운영하다 보면 권한 문제가 늘 비슷한 형태로 터집니다. “왜 exec 를 막았는데도 뭔가 실행되는 것 같지?”, “왜 같은 agent인데 DM에서는 되고 그룹에서는 안 되지?”, “왜 MCP로 붙였는데 conversation이 안 보이지?” 같은 질문입니다. 공식 문서를 묶어 보면 이 문제는 한 줄로 정리됩니다. OpenClaw 권한은 하나가 아니라 여러 층이 겹쳐서 결정 됩니다. 그래서 어느 한 키만 보고 판단하면 거의 항상 틀립니다. 이번 글은 그 층을 운영 순서대로 풀어서 설명하는 실전 권한 통제 강좌 입니다. 이번 글에서 다룰 것 OpenClaw 권한을 결정하는 6개 층 tools.profile 과 tools.allow/deny 차이 sandbox에서만 추가로 걸리는 tools.sandbox.tools.* /exec , /elevated , host approvals가 서로 다른 이유 그룹/채널별 tools , toolsBySender override 순서 MCP bridge가 권한을 우회하지 않는 이유 실전 운영용 안전한 기본 설정 예시 1. 먼저 큰 그림: 권한은 한 번에 결정되지 않는다 Sandbox vs Tool Policy vs Elevated , Tools , Groups , Exec approvals , MCP , Security 문서를 같이 보면 OpenClaw는 대략 아래 순서로 권한을 좁혀 갑니다. 층 무엇을 결정하나 대표 키 실무 해석 1. 기본 프로필 어떤 도구군을 기본으로 열지 tools.profile 출발점 2. 글로벌/에이전트 allow/deny 최종적으로 어떤 도구가 존재/호출 가능한지 tools.allow , tools.deny , agents.list[].tools.* 가장 강한 hard stop 3. provider별 제한 특정 provider/model에서만 도구 축소 tools.byProvider 약한 모델엔 최소 도구만 4. sandbox 도구 정책 샌드박스 안에서만 추가 제한 tools.sandbox.tools.allow/deny 그룹 세션만 더 좁히는 데 유용 5. exec 승인/승격 실행 자체를 승인할지, sandbox 밖으로 뺄지 tools.exec.* , /exec , /elevated 실행 방식과 승인 절차 6. 채널/그룹 override 특정 그룹, 특정 발신자만 별도 제한 channels.*.groups.*.tools , toolsBySender 같은 agent라도 그룹별 정책 분리 핵심은 이것입니다. 뒤 단계가 앞 단계를 우회하지 않습니다. 특히 공식 문서는 반복해서 deny 가 항상 이긴다 , tool policy가 hard stop이다 라고 설명합니다. 가장 흔한 오해 /exec 나 /elevated 를 쓰면 막힌 도구가 다시 열릴 거라고 생각하기 쉽습니다. 하지만 공식 문서 기준으로 tool policy에서 deny된 exec 는 /exec 로도 못 살립니다. 즉 “승인”은 이미 열려 있는 실행을 통제하는 계층이지, 차단된 도구를 부활시키는 계층이 아닙니다. 2. tools.profile 은 시작점이고, allow/deny 가 최종 판정이다 Tools 문서에서 tools.profile 은 base allowlist라고 설명합니다. 기본적으로 어떤 툴군을 깔아둘지 정하는 값입니다. profile 공식 문서상 포함 항목 언제 쓰나 full 제한 없음 정말 의도적으로 넓게 열 때만 coding group:fs , group:runtime , group:web , group:sessions , group:memory , cron , image , image_generate , music_generate , video_generate 개발/자동화 중심 agent messaging group:messaging , sessions_list , sessions_history , se