"capability는 한 문장이야: '이 창들은 이 권한을 쓸 수 있다.' Tauri 보안 모델 전부가 그 문장의 변주야."
capability 파일이 뭐냐면
capability는 src-tauri/capabilities/의 JSON 파일로 살아. 각각이 permission 묶음을 창 묶음에 묶어. 모양은 작고 읽기 쉬워: identifier(이 capability의 이름), description, windows 배열(적용될 창 label), permissions 배열(부여하는 권한). Tauri가 빌드 타임에 그 폴더의 모든 파일을 읽어 앱의 접근 제어 목록을 조립해.
진짜 하나 읽어보기
Cinder의 실제 capability를 봐. main 창에 적용되고 집중된 세트를 부여해: core:default(기준 안전 API), always-on-top 동작용 특정 창 permission 둘, 그리고 플러그인 셋(store, clipboard-manager, window-state)의 default permission 세트. 없는 걸 봐: 파일시스템 없음, 셸 없음, 넓은 네트워크 없음. Cinder는 쓰는 권한만 부여하고 그 이상은 안 해 — 파일이 앱이 허락받은 일의 정밀한 목록이야.
다른 창, 다른 권한
capability가 적용될 창을 지명하니까, 창마다 다른 권한 수준을 줄 수 있어. 메인 창은 clipboard랑 store 접근이 필요할 수 있고, 설정 창은 거의 아무것도 필요 없을 수 있어. 창별로 capability를 쪼개서 덜 신뢰받거나 단순한 창이 쓸 일 없는 권한에 못 닿게 해. 이게 구조적으로 표현된 최소 권한이야 — 창별 부여는 무시할 디테일이 아니라 적극 써야 할 기능이야.