DBMS_RLS

개요

DBMS_RLS 패키지는 가상 개인 데이터베이스 기능을 구성하고 관리하는 데 사용할 수 있는 프로시저를 제공합니다.

가상 개인 데이터베이스에서는 테이블에 대해 동적으로 조건문을 생성하여 해당 스키마 객체에서 반환하는 로우에 대한 접근을 선택적으로 제한합니다.

참고

PostgreSQL Version 16 이상부터 사용 가능합니다.

함수 / 프로시저
반환 타입
설명

ADD_POLICY

n/a

해당 테이블에 대해 가상 개인 데이터베이스 보안 정책을 추가합니다.

DROP_POLICY

n/a

해당 테이블에 대해 걸려 있는 가상 개인 데이터베이스 보안 정책을 제거한다.

ENABLE_POLICY

n/a

해당 테이블에 대해 걸려 있는 가상 개인 데이터베이스 보안 정책을 활성화 혹은 비활성화한다.


설치 설정

DBMS_RLS는 다른 o2 extension처럼 설치 후, 활성화 하기 전에 추가적으로 postgresql.conf 파일을 수정해야 합니다.

또한, 해당 작업 후에는 반드시 postgresql 서버를 재기동하여 수정한 값을 적용시켜야 합니다.

shared_preload_libraries

postgresql.conf 파일 내용 중 shared_preload_libraries 항목의 값으로써 dbms_rls 를 추가하여, postgresql 기동될때 DBMS_RLS 구성파일이 같이 로드될 수 있도록 설정해줍니다.

아래와 같이 postgresql.conf 파일을 수정합니다.

shared_preload_libraries는 사용자 환경에 따라 다른 extension들이 이미 추가되어 있을 수도 있습니다.

그러한 경우에는 , 를 활용하여 dbms_rls를 덧붙여줍니다.


구성

본 절에서는 DBMS_RLS 패키지에서 제공하는 프로시저를 알파벳 순으로 설명합니다.

ADD_POLICY

해당 테이블에 대해 가상 개인 데이터베이스 보안 정책을 추가합니다.

프로토타입

파라미터

파라미터
설명

object_schema

테이블을 가지고 있는 스키마입니다. 명시하지 않으면 Public 스키마입입니다.

object_name

테이블의 이름입니다.

policy_name

새로 추가하고자 하는 정책의 이름입니다. 동일한 테이블 내에서 유일해야 합니다.

function_schema

조건문 생성 함수의 스키마입니다.

policy_function

조건문 생성 함수의 이름입니다.

statement_types

정책을 적용할 SQL 문의 유형입니다.SELECT, INSERT, UPDATE, DELETE의 조합을 명시할 수 있습니다. 기본값은 INSERT를 제외한 모든 유형입니다.

update_check

INSERT, UPDATE일 경우에 적용됩니다.TRUE일 경우 새로 insert되거나 update된 값이 정책의 조건문을 만족하는지 검사합니다. 기본값은 FALSE입니다.

enable

정책을 추가함과 동시에 활성화시킬지 명시합니다. 기본값은 TRUE입니다.

static_policy

기본값은 false 이며, OpenSQL에서는 static_policy 설정이 무시됩니다.

policy_type

기본값은 NULL이며, OpenSQL에서는 policy_type 설정이 무시됩니다.

long_predicate

기본값은 false 이며, OpenSQL에서는 long_predicate 설정이 무시됩니다.

sec_relevant_cols

컬럼 레벨 VPD 기능을 활성화합니다. 쿼리에서 해당 변수로 들어온 컬럼이 참조될 때만 정책이 적용합니다. 정책이 적용될 컬럼 이름을 쉼표 또는 공백으로 구분하여 나열합니다. 명시하지 않으면 모든 컬럼에 대해 적용합니다.

sec_relevant_cols_opt

기본값은 NULL이며, OpenSQL에서는 sec_relevant_cols_opt 설정이 무시됩니다.

예제

DROP_POLICY

해당 테이블에 대해 걸려 있는 가상 개인 데이터베이스 보안 정책을 제거됩니다.

프로토타입

파라미터

파라미터
설명

object_schema

테이블을 가지고 있는 스키마입니다. 명시하지 않으면 Public 스키마입니다.

object_name

테이블의 이름입니다.

policy_name

제거하고자 하는 정책의 이름입니다.

예제

ENABLE_POLICY

해당 테이블에 대해 걸려 있는 가상 개인 데이터베이스 보안 정책을 활성화 혹은 비활성화합니다.

프로토타입

파라미터

파라미터
설명

object_schema

테이블을 가지고 있는 스키마입니다. 명시하지 않으면 Public 스키마입니다.

object_name

테이블의 이름입니다.

policy_name

활성화 혹은 비활성할 정책의 이름입니다.

enable

- TRUE : 정책을 활성화합니다. 기본값에 해당됩니다. - FALSE : 정책을 비활성화합니다.

예제

Last updated