postgres(3)
-
[PostgreSQL] RLS의 제한과 추가 검증 제어- USING, WITH CHECK
WITH CHECK 절과 USING 절은 PostgreSQL의 CREATE POLICY 문에서 정책이 적용되는 행과 열에 대한 제한과 추가 검증을 제어하는 데 사용된다. USING USING 절은 WHERE 절과 비슷하게 작동한다고 생각하면 된다.즉, USING 절에 지정된 조건이 참인 경우에만 허용된다. PostgreSQL의 CREATE POLICY 문에서 정책이 적용되는 조건을 지정하는 데 사용된다. USING 절은 선택적이며, 정책이 적용될 조건을 지정하지 않으면 해당 정책은 항상 적용된다. CREATE POLICY sales_policy ON sales FOR SELECT, INSERT, UPDATE, DELETE TO sales_role USING (user_id = current_user); ..
2023.04.20 -
[Error] DETAIL: There are 2 other sessions using the database.
PostgreSQL을 사용하고 있는데 DROP DATABASE를 해야하는 상황에서 발생한 에러이다. 전체 에러의 의미는 해당 데이터베이스에 다른 사용자 혹은 세션이 엑세스 하고 있다는 뜻이다. 일반적으로 데이터베이스에는 여러 사용자가 접근할 수 있지만 데이터베이스는 하나의 세션에 의해 동시에 접근되는 것을 허용하지 않는다. 즉 현재 데이터베이스에 이미 두 개의 세션이 존재하고 있다는 의미이다. 데이터베이스를 삭제하기 위해서는 활성화 된 세션을 먼저 강제로 종료시켜주어야 한다. select pg_terminate_backend(pid) from pg_stat_activity where datname = 'DB명'; pg_terminate_backend ---------------------- t t 해당 ..
2023.04.13 -
[PostgreSQL] Row Level Security
Row Level Security (행 수준 보안) 간단하게 PostgreSQL 데이터 베이스 테이블에 추가적으로 적용가능한 필터라고 볼 수 있다. 테이블 데이터에 접근하거나 수정,삭제와 같은 특정 작업들을 수행할 수 있도록 특정 그룹 사용자에게 권한을 부여하고 요청이 오면 쿼리 조건을 수행 하기 전 가장 먼저 적용되어 특정 정책에 따라 데이터가 축소되거나 엑세스 자체가 거부될 수 있다. RLS 장점 1. RLS를 사용하면 개발자가 동일한 데이터베이스에 여러 테넌트에 대한 데이터를 안전하게 저장할 수 있다. 2. RLS 보안 정책은 쿼리를 실행하는 테넌트에 속하지 않는 행을 필터링해준다. 3. 데이터베이스 내부에 필터 논리를 중앙화하면 유지 관리가 단순해지고 보안 오류 위험이 줄어든다. 동작 예시 Dja..
2023.03.30