Row Level Security란
데이터베이스 레벨에서 행 단위 접근 제어를 적용합니다. 앱 버그가 있어도 데이터 유출을 방지합니다.
구현
-- RLS 활성화
ALTER TABLE posts ENABLE ROW LEVEL SECURITY;
-- 정책 생성
CREATE POLICY posts_tenant_policy ON posts
USING (tenant_id = current_setting('app.tenant_id')::int);
-- 앱에서 사용
SET app.tenant_id = '42';
SELECT * FROM posts; -- tenant_id = 42인 행만 반환
-- Supabase에서
CREATE POLICY "Users can view own posts"
ON posts FOR SELECT
USING (auth.uid() = author_id);
댓글 0