Supabase RLS를 활용하여 정적 사이트에 '동의 링크' 기능을 구현하는 방법: 테이블은 닫고 함수만 열기
요약
정적 사이트 환경에서 사용자 인증 없이 특정 링크를 아는 사람에게만 제한적인 쓰기 권한을 부여하는 방법을 설명합니다. 테이블의 모든 접근 권한을 폐쇄하고, 대신 `SECURITY DEFINER` 속성을 가진 PostgreSQL 함수만을 익명(anon) 사용자가 실행하도록 설계하여 데이터 무결성과 접근 통제를 구현했습니다.
핵심 포인트
- 테이블 직접 접근을 막고, 오직 특정 로직이 담긴 함수만 anon 권한으로 실행되게 합니다.
- 데이터 변경 방지를 위해 상태(status) 조건(`status <> 'agreed'`)을 함수 내에 명시적으로 포함해야 합니다.
- Supabase의 기본 스키마 권한 설정 때문에 의도치 않은 롤에 실행 권한이 남을 수 있으므로, 명시적인 `revoke`가 필수입니다.
- 본 방식은 전자서명법상의 전자 서명이 아니며, 링크를 아는 사람은 누구나 접근 가능하다는 한계가 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn PostgreSQL Practice의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기0