최종 수정 : 2024-06-04
RLS(Row-Level Security)
행 수준의 보안이라고 번역된다.
권한 체크에 대한 로직을 의미한다.
만약 없다면?
서버에서 권한 체크를 해야 하며, 이를 서버 코드로 구현해야 한다. 그에 따라 버그 가능성이 존재하게 된다. 또한, BOLA 나 BFLA 보안 이슈가 발생할 수 있다.
BOLA : Broken Object Level Authorization
BFLA : Broken Function Level Authorization
이런 이슈를 DB Level에서 권한 체크하여 방지하는 것이 RLS이다. 데이터베이스에 스키마를 정의할 때, 권한에 대한 정책 도 같이 정의하기 때문에 가능하다. 다시 말해, 데이터베이스를 설계할 때 권한까지 함께 설계하는 것이다. 이런 권한 체크에는 크게 두 가지 기능이 있다.
첫 번째 기능
1) 준비 단계 : 권한이 있는 데이터만 준비한다. 이를 구현하기 위해 USING expression을 사용한다.
2) 작업 : 해당 권한에 맞는 데이터에 한해 SELECT, INSERT, UPDATE, DELETE를 진행한다.
두 번째 기능
3) 재확인 : 업데이트를 했는데, 권한이 없을 수도 있다. 이런 경우, 오류를 발생시킨다. 이를 구현하기 위해 WITH CHECK expreesion을 사용한다.
ex)
읽기 | 생성 | 수정, 삭제 | |
anon, public (공개, 누구나, 익명) |
O | X | X |
auth (인증자) | O | O | X |
owner (소유자) | O | O | O |
'프론트엔드 > Supabase + Jotai' 카테고리의 다른 글
Supabase Auth Server-Side Rendering (0) | 2025.01.17 |
---|---|
Supabase - Auth / Auth architecture / Auth with Next.JS (0) | 2025.01.17 |
생활코딩 - Supabase 입문 수업 (0) | 2024.05.29 |
Supabase - Database (0) | 2024.05.29 |
Supabase - Realtime(실시간) (0) | 2024.05.29 |
댓글