"permission은 문을 열어. scope는 방문자가 집 안 어디까지 걸어 들어갈지 정해."
맨 permission으론 왜 부족한가
fs:allow-read-text-file 부여는 '이 앱은 텍스트 파일을 읽을 수 있다'고 말해 — 근데 어떤 파일? scope 없이는 사용자 디스크 전체를 뜻할 수 있어. scope가 permission을 특정 경로(파일시스템용)나 특정 URL(네트워크용)로 좁혀. '파일 읽기 가능'이랑 '앱 자기 데이터 폴더 안 파일 읽기 가능'의 차이야. 디스크나 네트워크 만지는 건 뭐든, scope에 진짜 안전이 살아.
변수 있는 경로 scope
파일시스템 scope는 경로 패턴을 쓰고, Tauri가 변수를 줘서 절대 경로를 하드코딩 안 해: $APPDATA, $APPCONFIG, $HOME, $RESOURCE 등. permission을 allow(그리고 선택적으로 deny) 경로 패턴 객체로 써. $APPDATA/** 같은 glob은 '앱 데이터 디렉터리 아래 뭐든'을 뜻해. 민감한 하위 폴더용 deny랑 짝지으면 앱을 딱 만져야 할 영역에 울타리 친 거야.
최소 권한, 기계화
scope가 최소 권한을 구호에서 설정으로 바꾸는 방법이야. 기능이 $APPDATA에만 쓰는데 $HOME/**을 부여하지 마. API 호스트 하나만 부르는데 https://**를 허용하지 마. 넓히는 모든 와일드카드는 뚫린 프론트엔드가 악용할 공격 표면이야. 기능이 돌게 하는 제일 좁은 scope가 항상 정답이야 — 그리고 넓게 부여해야 할 때 deny 패턴이 정밀한 구멍을 뚫게 해줘.