세분화된 권한
세분화된 권한 (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 토큰 안에 담겨요.