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

Permissions & 기본 세트

~13 min · tauri, permissions, security, acl

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"permission은 이름 붙은 하나의 특정 권한이야. 이름 읽는 법을 배우면 시스템 전체가 안 신비로워져."

permission identifier 읽기

permission은 읽기 쉬운 구조의 문자열이야: <출처>:<이름>. 출처는 core(내장 Tauri)거나 플러그인 이름(fs, dialog, shell, store…). 이름은 default 같은 큐레이트된 세트거나 allow-read-text-file 같은 단일 세밀 부여야. 그래서 core:default는 '기준 안전 core API', fs:allow-read-text-file은 딱 '텍스트 파일 읽기 가능', shell:allow-execute는 '프로세스 실행 가능'. 이름을 파싱할 수 있으면 정밀하게 부여할 수 있어.

기본 세트 vs 세밀 부여

대부분 플러그인이 흔히 필요하고 적당히 안전한 command를 묶은 default permission을 내놔 — 합리적 출발점. default가 필요 이상 부여하면, 개별 allow- permission으로 내려가 앱이 부르는 특정 command만 나열해. 세밀한 게 타이핑은 더 많고 공격 표면은 훨씬 적어. 강력한 거(파일시스템, 셸)엔 편한 default보다 세밀한 목록을 선호해.

Allow와 Deny

permission은 allow-deny- 형태로 오고, deny가 이겨. 넓은 세트를 부여하고 그 안의 위험한 구석을 명시적으로 거부할 수 있어 — 벨트랑 멜빵 둘 다. 부여했는데 command가 신비하게 실행을 거부하면, deny permission(이나 scope)이 네 allow를 덮는지 확인해. 우선순위는 의도적이야: deny가 부여에서 예외를 깎아내는 방법이야.

Code

넓은 게 아니라 특정 권한 부여·json
// permission identifier 파싱:
//   core:default                     기준 안전 core API
//   core:window:allow-set-title      특정 창 권한 하나
//   fs:allow-read-text-file          텍스트 파일 읽기 (플러그인: fs)
//   dialog:allow-open                파일 열기 다이얼로그
//   shell:allow-execute              프로세스 실행 (강력!)

{
  "identifier": "main-caps",
  "windows": ["main"],
  "permissions": [
    "core:default",
    "dialog:allow-open",          // 세밀: 열기 다이얼로그만
    "fs:allow-read-text-file"     // 세밀: 텍스트 읽기, 그 외 없음
    // 주목: 셸 없음, fs 쓰기 없음 — 안 필요하고, 안 부여됨
  ]
}

External links

Exercise

앱에 dialog 플러그인을 더하고 dialog:allow-open 만 부여해(dialog:default 말고). 프론트엔드에서 열기 다이얼로그를 부르고 되는지 확인해. 그다음 부여 안 한 다른 dialog command(save 같은)를 시도하고 permission 에러로 실패하는 걸 봐. 세밀 permission이 딱 하나만 허용하고 나머지를 거부하는 걸 느낀 거야.
Hint
tauri-plugin-dialog를 더하고, capability에 dialog:allow-open을 넣어. save 다이얼로그는 막혀 — open만 부여했으니까. 그 거부가 버그가 아니라 레슨이야.

Progress

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

댓글 0

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

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