service_role은 API Route에서 금지
service_role은 API Route에서 금지
한 줄 정의
API Route(사용자 요청 처리)에서 service_role_key 사용 시 RLS가 완전 우회됨 → 인증된 사용자가 타 워크스페이스 데이터 접근 가능.
사고 사례 (lattice, 2026-03-20)
save-extractions/route.ts에서supabaseAdmin(service_role) 사용- RLS 우회 → 인증된 사용자가 타 workspace의 meeting_id에 extraction 삽입 가능
- meeting 소유권 검증도 누락
올바른 패턴
// ✅ API Route: createServerClient(cookies) → RLS 적용
const supabase = createServerClient(cookies)
// ❌ API Route: supabaseAdmin → RLS 완전 우회
const supabase = createClient(url, SERVICE_ROLE_KEY)
service_role 허용 위치: 마이그레이션 스크립트, 배치 작업 전용.
체크 기준
“RLS가 있으니까 괜찮겠지”가 아니라 “이 클라이언트가 RLS를 타는가?” 를 확인.
적용 맥락
Supabase를 사용하는 모든 프로젝트의 API Route.
Relationships
related_to RLS는 workspace_id 기준 (user_id 단독 금지)
derived_from Workspace Tenant 모델 (Lattice)