CREATE RLS POLICY - Amazon Redshift

CREATE RLS POLICY

데이터베이스 객체에 대한 세분화된 액세스를 제공하는 새 행 수준 보안 정책을 생성합니다.

sys:secadmin 역할이 부여된 수퍼유저와 사용자 또는 역할은 정책을 생성할 수 있습니다.

구문

CREATE RLS POLICY policy_name [ WITH (column_name data_type [, ...]) [ [AS] relation_alias ] ] USING ( using_predicate_exp )

파라미터

policy_name

정책의 이름입니다.

WITH (column_name data_type [, ...])

정책이 연결된 테이블의 열에 참조되는 column_namedata_type을 지정합니다.

연결된 테이블 열을 RLS 정책에서 참조하지 않는 경우에만 WITH 절을 생략할 수 있습니다.

AS relation_alias

RLS 정책이 연결될 테이블의 별칭을 선택적으로 지정합니다.

USING ( using_predicate_exp )

쿼리의 WHERE 절에 적용되는 필터를 지정합니다. Amazon Redshift는 쿼리 수준 사용자 조건자를 지정하기 전에 정책 조건자를 적용합니다. 예를 들어 current_user = ‘joe’ and price > 10은 가격이 10 USD보다 큰 레코드만 Joe에게 표시하도록 제한합니다.

사용 노트

CREATE RLS POLICY 문과 관련한 작업을 수행할 때는 다음을 준수하세요.

  • Amazon Redshift는 쿼리의 WHERE 절에 포함될 수 있는 필터를 지원합니다.

  • 테이블에 연결되는 모든 정책은 동일한 테이블 별칭을 사용하여 생성되어야 합니다.

  • 조회 테이블에 대한 SELECT 권한은 필요하지 않습니다. 정책을 생성하면 Amazon Redshift가 각 정책의 조회 테이블에 대한 SELECT 권한을 부여합니다. 조회 테이블은 정책 정의 내에 사용되는 테이블 객체입니다.

  • Amazon Redshift 행 수준 보안은 정책 정의 내에서 카탈로그 테이블, 교차 데이터베이스 관계, 외부 테이블, 일반 보기, 늦은 바인딩 보기, RLS 정책이 설정된 테이블, 임시 테이블 등의 객체 유형을 지원하지 않습니다.

예시

다음 SQL 문은 CREATE RLS POLICY 예의 테이블, 사용자 및 역할을 생성합니다.

-- Create users and roles reference in the policy statements. CREATE ROLE analyst; CREATE ROLE consumer; CREATE USER bob WITH PASSWORD 'Name_is_bob_1'; CREATE USER alice WITH PASSWORD 'Name_is_alice_1'; CREATE USER joe WITH PASSWORD 'Name_is_joe_1'; GRANT ROLE sys:secadmin TO bob; GRANT ROLE analyst TO alice; GRANT ROLE consumer TO joe; GRANT ALL ON TABLE tickit_category_redshift TO PUBLIC;

다음 예에서는 policy_concerts라는 정책을 만듭니다.

CREATE RLS POLICY policy_concerts WITH (catgroup VARCHAR(10)) USING (catgroup = 'Concerts');