동적 테이블 액세스 제어

이 항목에서는 동적 테이블을 사용하여 생성, 쿼리, 변경, 보기 및 삭제와 같은 작업을 수행하는 데 필요한 권한에 대해 설명합니다.

Snowflake 권한 모델에 대한 자세한 내용은 액세스 제어의 개요액세스 제어 권한 섹션을 참조하세요.

소유권 이전하기

사용자에게 동적 테이블에 대한 전체 액세스 권한을 제공하려면 다음 중 하나를 수행하면 됩니다.

동적 테이블은 일반 테이블과 권한 세트가 다르므로 권한을 할당할 때 오브젝트 유형을 DYNAMIC TABLE 로 지정해야 합니다.

동적 테이블에 OWNERSHIP 권한을 부여하려면 수신 역할에 다음 항목에 대한 USAGE 권한이 있는지 확인합니다. 그렇지 않으면 후속적으로 예약된 새로 고침이 실패합니다.

  • 동적 테이블이 포함된 데이터베이스 및 스키마입니다.

  • 테이블을 새로 고치는 데 사용되는 웨어하우스입니다.

동적 테이블의 소유권을 이전하려면 GRANT OWNERSHIP 명령 또는 Snowsight 을 사용할 수 있습니다.

다음 예제에서는 GRANT OWNERSHIP 명령을 사용하여 my_dynamic_table 에 대한 소유권을 budget_admin 역할에 부여합니다.

GRANT OWNERSHIP ON DYNAMIC TABLE my_dynamic_table TO ROLE budget_admin;
Copy

다음 예제에서는 GRANT OWNERSHIP 명령을 사용하여 mydb.myschema 스키마에서 생성된 모든 향후 동적 테이블에 대한 소유권 권한을 budget_admin 역할에 부여합니다.

GRANT OWNERSHIP ON FUTURE DYNAMIC TABLES IN SCHEMA mydb.myschema TO ROLE budget_admin;
Copy

Snowflake 권한 모델에 대해 자세히 알아보려면 액세스 제어의 개요액세스 제어 권한 섹션을 참조하십시오.

특정 사용자 권한 및 보조 역할로 동적 테이블 새로 고침

소유자 역할의 권한 외에도 특정 사용자의 권한으로 새로 고침되도록 동적 테이블을 구성할 수 있습니다. EXECUTE AS USER를 지정하는 동적 테이블은 시스템 사용자 대신 명명된 사용자를 대신하여 실행됩니다.

예를 들어, 사용자에게 테이블에 대한 액세스 권한을 제공하는 기본 역할 및 가상 웨어하우스에 대한 액세스 권한을 제공하는 보조 역할을 부여할 수 있습니다. 그런 다음 사용자는 두 역할의 결합된 권한으로 작동하는 동적 테이블을 생성하여 권한 관리를 간소화하고 데이터 작업의 유연성을 향상할 수 있습니다.

EXECUTE AS USER 옵션을 활성화하면 사용자의 역할에 따라 동적 테이블을 새로 고칠 수 있지만, 이러한 동적 테이블에 대한 다른 모든 작업은 표준 권한 모델을 준수합니다.

주요 사용 사례

  • 다중 역할 권한 관리: 사용자에게 보조 역할이 있는 경우 기본 역할과 보조 역할의 결합된 권한을 사용하여 동적 테이블을 생성하고 새로 고칠 수 있습니다. 이러한 구성을 통해 동적 테이블을 새로 고치는 사용자가 기존 역할 기반 액세스 제어와의 일관성을 유지하면서 필요한 모든 리소스에 액세스하는 데 필요한 권한을 갖도록 보장합니다.

  • 세분화된 보안 및 거버넌스 제어: 사용자는 REQUIRE, USER와 같은 추가 옵션을 사용하여 선택적 보안 조치를 구성할 수 있습니다. 여기서 사용자를 지정하지 않으면 동적 테이블을 실행할 수 없습니다.

  • 모든 작업에 대한 책임: EXECUTE AS USER 동적 테이블에 대한 모든 새로 고침은 SYSTEM 사용자 대신 구성된 사용자에게 귀속됩니다. 이 특성은 모든 작업에 대한 명확한 감사 추적을 유지하는 데 도움이 됩니다.

액세스 제어

동적 테이블의 소유자 역할에는 EXECUTE AS USER로 지정한 사용자에 대한 IMPERSONATE 권한이 부여되어야 하며, 지정된 사용자에게 동적 테이블의 소유자 역할이 부여되어야 합니다. IMPERSONATE 권한이 취소되면 동적 테이블 새로 고침이 실패하고 동적 테이블이 :ref:`자동으로 일시 중단 <label-dynamic_tables_manage_understanidng_auto_suspend>`될 수 있습니다.

동적 테이블을 새로 고치면 새로 고침 세션의 기본 역할이 동적 테이블의 소유자 역할이 되고 사용자의 기본 보조 역할이 활성화됩니다. 사용자는 USE ROLE 명령을 사용하여 기본 역할을 전환하고 USE SECONDARY ROLES 명령으로 새로 고침 세션에서 보조 역할을 조정합니다.

제품 간 고려 사항

  • 데이터 마스킹 및 행 액세스 정책: 정책(예: CURRENT_USER()를 사용하는 정책)은 SYSTEM 사용자가 아닌 지정된 사용자 및 역할을 기반으로 평가합니다.

  • 복제 및 장애 조치: 사용자 이름과 역할 이름이 보조 배포에 복제됩니다.

    보조 배포에서 사용자 또는 역할을 사용할 수 없는 경우 사용자는 INVALID로 표시되며 새로 고침은 수정될 때까지 실패합니다.

    나머지 역할이 충분한 권한을 제공하는 경우 유효하지 않은 보조 역할은 실행 중에 건너뜁니다.

사용자로 새로 고침을 실행하도록 동적 테이블 구성

다음 예제에서는 기본 역할을 동적 테이블의 소유자 역할로 설정하여 지정된 사용자로 새로 고침을 실행하는 동적 테이블을 생성합니다. 새로 고침은 사용자가 설정한 모든 사용자 계보 매개 변수로 실행됩니다.

보조 역할에 대한 옵션이 명시적으로 지정되지 않은 경우 새로 고침은 기본적으로 사용자의 현재 세션 설정으로 설정됩니다.

CREATE DYNAMIC TABLE my_dynamic_table
  [ EXECUTE AS USER my_user_name
    [ USE SECONDARY ROLES { ALL | NONE | (<role1>, <role2>, ... ) } ]
  ]
Copy

기존 동적 테이블에 대한 보조 역할 설정

다음 예제에서는 지정된 사용자로 실행되도록 동적 테이블을 구성합니다. 특정 보조 역할을 선택하지 않은 경우 새로 고침 프로세스는 기본적으로 현재 세션의 활성 보조 역할로 설정됩니다. 동적 테이블이 이미 특정 사용자로 실행되도록 설정된 경우 이 명령은 ALTER DYNAMIC TABLE 명령을 실행하는 사용자로 실행되도록 구성을 업데이트합니다.

이 명령을 실행하려면 동적 테이블에 대한 OWNERSHIP 권한이 필요합니다.

ALTER DYNAMIC TABLE my_dynamic_table SET
  EXECUTE AS USER my_user_name
  [ USE SECONDARY ROLES { ALL | NONE | (<role1>, <role2>, ... ) } ]
Copy

SYSTEM 사용자로 실행할 동적 테이블을 전환합니다.

다음 예제에서는 동적 테이블의 소유자 역할을 사용하는 SYSTEM 사용자가 동적 테이블을 실행하도록 되돌립니다.

이 명령을 실행하려면 동적 테이블에 대한 OWNERSHIP 권한이 필요합니다.

ALTER DYNAMIC TABLE my_dynamic_table UNSET EXECUTE AS USER;
Copy

동적 테이블 생성 권한

동적 테이블을 생성하려면 다음 권한이 있는 역할을 사용해야 합니다.

권한

오브젝트

CREATE DYNAMIC TABLE

동적 테이블을 만들려는 스키마입니다.

SELECT

새 동적 테이블에 대해 쿼리하려는 기존 테이블 및 뷰입니다.

USAGE

새 동적 테이블에 사용하려는 데이터베이스 및 스키마입니다.

테이블을 새로 고치는 데 사용하려는 웨어하우스입니다.

참고

USAGE 권한이 있는 보조 역할로 CREATE DYNAMIC TABLE ... INITIALIZE = ON_SCHEDULE 를 실행할 수 있지만 기본 역할에 이 권한이 없는 경우 동적 테이블이 성공적으로 새로 고쳐지지 않으므로 초기화되지 않습니다.

다른 동적 테이블에 의존하는 동적 테이블을 생성하려면 다음 권한이 있는 역할을 사용해야 합니다.

권한

오브젝트

SELECT

새 동적 테이블을 생성하기 위해 쿼리하려는 동적 테이블입니다.

OPERATE

새 동적 테이블이 의존하는 모든 업스트림 동적 테이블입니다. 생성 시 동기적으로 새로 고쳐지도록 동적 테이블을 설정한 경우에만 필요합니다.

동적 테이블 쿼리 권한

동적 테이블을 쿼리하려면 동적 테이블을 생성할 권한 이 있는 역할을 사용하면 됩니다. 사용자가 동적 테이블만 쿼리하면 되는 상황에서는(예: 데이터 분석가) 다음 권한이 있는 역할을 사용합니다.

권한

오브젝트

USAGE

동적 테이블을 포함하는 데이터베이스 및 스키마입니다.

쿼리를 실행하는 데 사용되는 웨어하우스.

SELECT

쿼리되는 동적 테이블입니다.

동적 테이블 변경 권한

동적 테이블을 변경하려면 해당 동적 테이블에 대해 OWNERSHIP 또는 OPERATE 권한이 있는 역할을 사용해야 합니다.

동적 테이블에 대한 OPERATE 권한이 있는 경우 ALTER DYNAMIC TABLE 명령으로 다음을 수행할 수 있습니다.

동적 테이블에 대한 OWNERSHIP 권한이 있는 경우 위에 나열된 작업 외에도 다음을 수행할 수 있습니다.

동적 테이블의 메타데이터 보기 권한

메타데이터를 보려면 해당 동적 테이블에 MONITOR 권한이 있는 역할을 사용해야 합니다.

사용자가 동적 테이블의 메타데이터 및 Information Schema만 확인하면 되는 시나리오(예: 데이터 과학자가 보유한 역할)의 경우 해당 동적 테이블에 MONITOR 권한이 있는 역할을 사용합니다. OPERATE 권한은 이 액세스 권한을 부여하지만 동적 테이블을 변경하는 기능도 포함하므로 MONITOR가 사용자가 동적 테이블을 변경할 필요가 없는 시나리오에 더 적합한 옵션이 됩니다.

동적 테이블에 대한 MONITOR 권한이 있으면 다음을 수행할 수 있습니다.

  • DESCRIBE DYNAMIC TABLE 명령 및 Snowsight 동적 테이블 세부 정보 페이지를 사용하여 동적 테이블에 대한 특정 세부 정보 확인. 동적 테이블에 대해 SELECT 권한만 있는 경우 text, warehouse, scheduling_state, last_suspended_onsuspend_reason_code (UI 전용) 필드가 숨겨집니다.

  • SHOW DYNAMIC TABLES 명령을 사용하여 자신에게 액세스 권한이 있는 동적 테이블 확인.

  • 그래프 기록을 보려면 DYNAMIC_TABLE_GRAPH_HISTORY 테이블 함수를 호출합니다.

  • 새로 고침 기록을 보려면 DYNAMIC_TABLE_REFRESH_HISTORY 테이블 함수를 호출합니다.

동적 테이블 삭제 권한

동적 테이블을 삭제하려면 해당 동적 테이블에 대한 OWNERSHIP 권한이 있는 역할을 사용해야 합니다.

이중 웨어하우스를 사용할 수 있는 권한

INITIALIZATION_WAREHOUSE 사용을 위한 모든 권한 요구 사항은 WAREHOUSE와 동일합니다.

작업

권한

INITIALIZATION_WAREHOUSE를 사용한 CREATE DYNAMIC TABLE

두 웨어하우스 모두에 대한 CREATE DYNAMIC TABLE, USAGE 및 WAREHOUSE, INITIALIZATION_WAREHOUSE.

ALTER DYNAMIC TABLE … SET / UNSET INITIALIZATION_WAREHOUSE

동적 테이블에 대한 OWNERSHIP 또는 OPERATE 및 해당 웨어하우스에 대한 USAGE.

INITIALIZATION_WAREHOUSE를 사용하는 동적 테이블에 대한 ALTER DYNAMIC TABLE … REFRESH

동적 테이블에 대한 OPERATE 및 해당 웨어하우스에 대한 USAGE.

자세한 내용은 동적 테이블의 웨어하우스 사용량 이해하기 섹션을 참조하십시오.