발렛 키는 차를 시동 걸고 운전석 문을 열어요. 트렁크도, 글로브박스도 열지 못하죠. 이건 저렴한 키가 아니에요. 이게 권한 범위의 핵심 개념 자체예요.
마스터 키는 모든 것을 열어요. 하지만 차를 주차하러 온 낯선 사람에게 마스터 키를 건네지는 않죠. 발렛 키를 건네요. 오직 하나의 일만 하는 키 — 차를 50피트 옮기는 것, 그것뿐이에요. 트렁크는 잠긴 채고, 글로브박스도 닫혀 있어요. 발렛이 도둑이더라도 물건은 안전해요.
권한 범위는 소프트웨어의 모든 키, 토큰, 에이전트에 이 개념을 적용한 거예요. 해당 작업에 필요한 최소한의 접근 권한만 부여하고, 그 이상은 주지 않아요. 정식 명칭은 '최소 권한 원칙'이에요. 쉽게 말하면 '발렛 키로 충분한데 마스터 키를 건네지 않는다'는 뜻이죠.
시크릿과 나란히 놓고 보면. 시크릿은 키예요. 범위는 그 키가 열 수 있는 문의 수고요. 별개의 질문이에요. 금고 안에 있어서 안전해 보이는 키가 사실 위험할 수 있어요. 모든 문을 열기 때문이에요. 범위는 그 키가 유출됐을 때 피해를 줄이는 장치예요.
API의 울타리 개념도 이어져요. 드라이브스루 창구가 메뉴를 정하듯, API는 제공하는 기능의 범위를 정해요. 권한 범위는 그 안에서 이 특정 키에 더 좁은 메뉴를 선택하는 거예요. '이 키는 주문을 읽을 수 있어요. 고객을 삭제할 수는 없고요.' 누군가 키를 훔쳐도 허용된 그 작은 일만 할 수 있어요.
에이전트에서 권한 범위가 안전장치인 이유. 에이전트가 건드릴 수 있는 게 많을수록, 오작동 한 번이 낳는 피해도 커져요. 확신에 차서 틀리는 에이전트(환각 문제가 운전석에 앉은 상황)가 읽기 전용 키를 들고 있으면 망신거리예요. 같은 에이전트가 '전체 삭제' 키를 들고 있으면 한 주를 망쳐요. 그래서 범위를 좁혀야 해요. 앞에 놓인 작업에 꼭 필요한 키만 건네고, 에이전트가 무엇에 손을 뻗는지 지켜보고, 마스터 키는 꺼내지 않아요. 강력하면서 범위 제한 없음, 이 조합이 가장 위험해요.
일상에서 이렇게 나타나요. 도구가 접근 권한을 요청할 때, 팝업을 빨리 닫으려고 '전체 허용'을 누르고 싶어져요. 참아야 해요. 매번 물을 가치가 있는 질문은 이거예요. '실제로 작동하는 데 필요한 가장 작은 접근 권한이 무엇인가?' 이 습관 하나가 실용적인 보안의 대부분이에요.
주차하러 마스터 키를 건네지 않아요. 모든 키와 모든 에이전트에 발렛 버전을 줘야 해요. 작업에 딱 필요한 만큼만, 나머지는 잠긴 채로요.