본문 바로가기
WIKI 기술 지식 베이스

세분화된 권한

원문 보기 위키 갱신

세분화된 권한 (Fine-Grained Permissions)

테이블과 연산 수준에서 접근을 통제하는 세분화된 권한이에요. CLI로 만든 토큰과 JWKS로 발급한 토큰 양쪽에서 동작해요.

출처: 문서

본문

세분화된 권한(fine-grained permissions)은 테이블과 연산 수준에서 접근을 통제하게 해 줘요. CLI 생성 토큰과 JWKS 발급 토큰 양쪽에서 동작해요.

권한 형식 (Permission Format)

권한은 <table-name|all>:<action1>,<action2> 형식을 따라요:

# Read-only access to all tables
turso db tokens create mydb -p all:data_read

# Specific actions on a specific table
turso db tokens create mydb -p users:data_read,data_update

# Multiple permission rules
turso db tokens create mydb \
  -p all:data_read \
  -p comments:data_add,data_update \
  -p posts:data_add,data_update,data_delete

모든 테이블에 권한을 적용하려면 테이블 이름 자리에 all을 쓰세요.

사용할 수 있는 연산 (Available Actions)

Action Description
data_read 테이블에서 데이터 읽기
data_add 새 행 삽입
data_update 기존 행 업데이트
data_delete 행 삭제
schema_add 새 테이블 생성
schema_update 테이블 스키마 수정
schema_delete 테이블 드롭

data_read는 SQLite 시스템 테이블(예: sqlite_master, sqlite_schema)에서 기본으로 허용돼서, 사용자가 데이터베이스 메타데이터를 조회할 수 있어요.

역할 기반 접근 예시 (Role-Based Access Example)

JWT 템플릿을 구성해서 사용자 역할에 따라 다른 권한을 부여할 수 있어요:

Role Permissions
Admin all:data_read,data_add,data_update,data_delete,schema_add,schema_update,schema_delete
Moderator all:data_read,data_update
User all:data_read

JWKS를 쓰면 이 권한들이 인증 프로바이더의 사용자 메타데이터(예: role, 그룹 소속)를 기반으로 JWT 토큰 안에 담겨요.

더 알아보기 (Learn more)