쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

RLS 정책 사용 고려 사항 및 제한 사항

포커스 모드
RLS 정책 사용 고려 사항 및 제한 사항 - Amazon Redshift

고려 사항

다음은 RLS 정책 작업에 대한 고려 사항입니다.

  • Amazon Redshift는 SELECT, UPDATE 또는 DELETE 문에 RLS 정책을 적용합니다.

  • Amazon Redshift는 INSERT, COPY, ALTER TABLE APPEND 문에 RLS 정책을 적용하지 않습니다.

  • RLS 정책은 테이블, 뷰, 지연 바인딩 뷰(LBV) 및 구체화된 뷰(MV)에 연결될 수 있습니다.

  • 행 수준 보안은 열 수준 보안과 함께 작동하며 데이터를 보호합니다.

  • 소스 관계에 대해 RLS가 활성화되면 Amazon Redshift는 수퍼유저, 시스템 권한 IGNORE RLS 또는 sys:secadmin 역할이 명시적으로 부여된 사용자에 대해 ALTER TABLE APPEND 문을 지원합니다. 이 경우 ALTER TABLE APPEND 문을 실행하여 기존 소스 테이블에서 데이터를 이동하는 방법으로 대상 테이블에 행을 추가할 수 있습니다. Amazon Redshift는 소스 관계의 모든 튜플을 대상 관계로 이동합니다. 대상 관계의 RLS 상태는 ALTER TABLE APPEND 문에는 영향을 미치지 않습니다.

  • 다른 데이터 웨어하우스 시스템에서 손쉽게 마이그레이션하려면, 변수 이름 및 값을 지정하여 연결에 대한 사용자 지정 세션 컨텍스트 변수를 설정하고 검색하면 됩니다.

    다음 예는 행 수준 보안(RLS) 정책에 대한 세션 컨텍스트 변수를 설정합니다.

    -- Set a customized context variable. SELECT set_config(‘app.category’, ‘Concerts’, FALSE); -- Create a RLS policy using current_setting() to get the value of a customized context variable. CREATE RLS POLICY policy_categories WITH (catgroup VARCHAR(10)) USING (catgroup = current_setting('app.category', FALSE)); -- Set correct roles and attach the policy on the target table to one or more roles. ATTACH RLS POLICY policy_categories ON tickit_category_redshift TO ROLE analyst, ROLE dbadmin;

    사용자 지정 세션 컨텍스트 변수를 설정 및 검색하는 방법을 자세히 알아보려면 SET, SET_CONFIG, SET, CURRENT_SETTING, reset 섹션으로 이동하세요. 일반적인 서버 구성 수정 방법을 자세히 알아보려면 서버 구성 수정 섹션으로 이동하세요.

    중요

    RLS 정책 내에서 세션 컨텍스트 변수를 사용하는 경우 보안 정책은 정책을 간접 호출하는 사용자 또는 역할에 따라 달라집니다. RLS 정책에서 세션 컨텍스트 변수를 사용할 때는 보안 취약성이 발생하지 않도록 주의하세요.

  • DECLARE와 FETCH 사이 또는 후속 FETCH 문 사이에서 SET SESSION AUTHORIZATION을 사용하여 세션 사용자를 변경하면 DECLARE 시간에 사용자 정책을 기반으로 이미 준비된 계획이 새로 고쳐지지 않습니다. 커서가 RLS 보호 테이블과 함께 사용되는 경우 세션 사용자를 변경하지 마세요.

  • 뷰 객체 내의 기본 객체가 RLS로 보호되는 경우 쿼리를 실행하는 사용자에게 연결된 정책이 각 기본 객체에 적용됩니다. 이는 뷰 기본 객체에 대해 뷰 소유자의 권한을 확인하는 객체 수준 권한 확인과 다릅니다. EXPLAIN 계획 출력에서 쿼리의 RLS 보호 관계를 볼 수 있습니다.

  • 사용자에게 연결된 관계의 RLS 정책에서 사용자 정의 함수 (UDF) 를 참조하는 경우 사용자는 UDF에 대한 EXECUTE 권한이 있어야 관계를 쿼리할 수 있습니다.

  • 행 수준 보안은 쿼리 최적화를 제한할 수 있습니다. 대규모 데이터 세트에 RLS로 보호되는 뷰를 배포하기 전에 쿼리 성능을 신중하게 평가하는 것이 좋습니다.

  • 지연 바인딩 뷰에 적용된 행 수준 보안 정책은 페더레이션된 테이블로 푸시될 수 있습니다. 이러한 RLS 정책은 외부 처리 엔진 로그에서 볼 수 있습니다.

제한 사항

RLS 정책과 관련한 작업을 할 때의 제한 사항은 다음과 같습니다.

  • RLS 정책은 외부 테이블 및 다른 여러 관계 유형에 연결할 수 없습니다. 자세한 내용은 ATTACH RLS POLICY 섹션을 참조하세요.

  • Amazon Redshift는 복잡한 조인이 있는 조회를 사용하는 특정 RLS 정책에 대해 SELECT 문을 지원하지만 UPDATE 또는 DELETE 문은 지원하지 않습니다. UPDATE 또는 DELETE 문의 경우 Amazon Redshift는 다음 오류를 반환합니다.

    ERROR: One of the RLS policies on target relation is not supported in UPDATE/DELETE.
  • 사용자에게 연결된 관계의 RLS 정책에서 사용자 정의 함수(UDF)를 참조할 때마다, 사용자는 UDF에 대한 EXECUTE 권한이 있어야 관계를 쿼리할 수 있습니다.

  • 연관된 하위 쿼리는 지원되지 않습니다. Amazon Redshift는 다음 오류를 반환합니다.

    ERROR: RLS policy could not be rewritten.
  • Amazon Redshift Redshift는 RLS와의 데이터 공유를 지원하지 않습니다. 관계에서 데이터 공유에 대한 RLS를 끄지 않은 경우, 다음 오류가 표시되면서 소비자 클러스터에서 쿼리가 실패하게 됩니다.

    RLS-protected relation "rls_protected_table" cannot be accessed via datasharing query.

    ROW LEVEL SECURITY OFF FOR DATASHARES 파라미터와 함께 ALTER TABLE 명령을 사용하여 데이터 공유에 대한 RLS를 해제할 수 있습니다. 테이블 변경을 사용하여 RLS를 활성화 또는 비활성화하는 방법에 대한 자세한 내용은 ALTER TABLE 섹션을 참조하세요.

  • 데이터베이스 간 쿼리에서 Amazon Redshift는 RLS 보호 관계에 대한 읽기를 차단합니다. IGNORE RLS 권한이 있는 사용자는 데이터베이스 간 쿼리를 사용하여 보호된 관계에 액세스할 수 있습니다. IGNORE RLS 권한이 없는 사용자가 데이터베이스 간 쿼리를 통해 RLS 보호 관계에 액세스하면 다음 오류가 나타납니다.

    RLS-protected relation "rls_protected_table" cannot be accessed via cross-database query.
  • ALTER RLS POLICY는 USING(using_predicate_exp) 절을 사용하여 RLS 정책을 수정하는 것만 지원합니다. ALTER RLS POLICY를 실행할 때는 WITH 절을 사용하여 RLS 정책을 수정할 수 없습니다.

  • 다음 구성 옵션의 값이 세션의 기본값과 일치하지 않는 경우 행 수준 보안이 설정된 관계를 쿼리할 수 없습니다.

    • enable_case_sensitive_super_attribute

    • enable_case_sensitive_identifier

    • downcase_delimited_identifier

    행 수준 보안이 설정된 상태에서 관계를 쿼리하려고 할 때 "대/소문자 구분이 기본값과 다른 경우 RLS 보호 관계가 세션 수준 구성을 지원하지 않습니다."라는 메시지가 표시되는 경우 세션의 구성 옵션을 재설정해 보세요.

  • 프로비저닝된 클러스터 또는 서버리스 네임스페이스에 행 수준 보안 정책이 있는 경우 일반 사용자에게는 다음 명령이 차단됩니다.

    ALTER <current_user> SET enable_case_sensitive_super_attribute/enable_case_sensitive_identifier/downcase_delimited_identifier

    RLS 정책을 만들 때 일반 사용자의 기본 구성 옵션 설정을 정책을 만들 당시의 세션의 구성 옵션 설정과 일치하도록 변경하는 것이 좋습니다. 슈퍼유저 및 ALTER USER 권한이 있는 사용자는 파라미터 그룹 설정 또는 ALTER USER 명령을 사용하여 이 작업을 수행할 수 있습니다. 파라미터 그룹에 대한 자세한 내용은 Amazon Redshift 관리 안내서의 Amazon Redshift 파라미터 그룹을 참조하세요. ALTER USER 명령에 대한 자세한 내용은 ALTER USER 섹션을 참조하세요.

  • 행 수준 보안 정책이 적용된 뷰와 지연 바인딩 뷰는 일반 사용자가 CREATE VIEW 명령을 사용하여 교체할 수 없습니다. RLS 정책이 적용된 뷰 또는 LBV를 바꾸려면 먼저 연결된 RLS 정책을 분리하고 뷰 또는 LBV를 교체한 다음, 정책을 다시 연결합니다. 슈퍼 사용자 및 sys:secadmin permission이 있는 사용자는 정책을 분리하지 않고도 RLS 정책이 적용된 뷰 또는 LBV에 CREATE VIEW를 사용할 수 있습니다.

  • 행 수준 보안 정책이 적용된 뷰는 시스템 테이블과 시스템 뷰를 참조할 수 없습니다.

  • 일반 뷰에서 참조하는 지연 바인딩 뷰는 RLS로 보호될 수 없습니다.

  • RLS로 보호되는 관계와 데이터 레이크의 중첩 데이터는 동일한 쿼리에서 액세스할 수 없습니다.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.