PostgreSQL - Row Level SecuirtyDatabase2025. 9. 17. 11:47
Table of Contents
RLS란?
Row Level Security는 직역하면 "행 수준 보안"이라는 뜻으로 테이블의 특정 행에 대한 접근을 제어하는 보안 기능이다.
예를 들어, 영업사원 A는 자신이 담당하는 고객 정보만을 볼 수 있고, 관리자는 모든 데이터를 볼 수 있도록 설정하는 것이 RLS이다.
이러한 접근 제어는 서버에서 DB 조회할 때 본인의 데이터만 조회할 수 있도록 로직을 구성하겠지만, 혹시나 실수로 놓쳤을 수 있다.
따라서 DB system 레벨에서 설정해줌으로써 더욱 안전하게 관리할 수 있다.
RLS 설정 쿼리
-- 테이블에서 RLS 활성화
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
-- 정책 생성 (영업사원은 자신의 주문만 조회 가능하고 관리자는 전부 조회 가능)
CREATE POLICY sales_policy ON orders
FOR SELECT
TO sales_role, manager_role
USING (
salesperson_id = current_user_id() OR -- 본인 담당 주문
current_user IN (SELECT username FROM users WHERE role = 'admin') -- 관리자는 모든 주문
);
@뽀글뽀글 개발자 :: 뽀글뽀글 개발 일지
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!