C.W.K.
Stream
Lesson 02 of 06 · published

Capabilities: 2.0 ACL

~14 min · tauri, capabilities, acl, security

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"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를 쪼개서 덜 신뢰받거나 단순한 창이 쓸 일 없는 권한에 못 닿게 해. 이게 구조적으로 표현된 최소 권한이야 — 창별 부여는 무시할 디테일이 아니라 적극 써야 할 기능이야.

Code

정밀한 진짜 capability (주목: fs 없음, 셸 없음)·json
// src-tauri/capabilities/default.json — Cinder의 실제 capability.
// '메인 창은 이 특정 권한들을, 오직 이것만 쓸 수 있다.'
{
  "$schema": "../gen/schemas/desktop-schema.json",
  "identifier": "default",
  "description": "Capability for the main window",
  "windows": ["main"],
  "permissions": [
    "core:default",
    "core:window:allow-set-always-on-top",
    "core:window:allow-is-always-on-top",
    "store:default",
    "clipboard-manager:allow-write-image",
    "window-state:default"
  ]
}

External links

Exercise

앱의 capabilities/default.json을 줄 하나씩 읽어. 각 permission이 뭘 부여하는지 짚어. 그다음 core:default를 임시로 빼고, 앱을 돌리고, 내장 기능이 깨지는 걸 봐 — capability가 장식이 아니라 진짜 게이트인 걸 증명해. 다시 넣으면, ACL이 제 일 하는 걸 느낀 거야.
Hint
core:default는 대부분 앱이 필요로 하는 기준 안전 API를 묶어. 그걸 빼는 게 아무것도 암묵적으로 부여되지 않는다는 걸 보는 빠른 방법이야 — 기본 창 동작도 permission을 거쳐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.