비보안 뷰에서 데이터 공유하기

사용자가 공유하는 뷰에서 쿼리 최적화를 통한 성능 향상을 최대한 활용해야 하는 경우, 다른 계정과 비보안 뷰를 공유할 수 있는 공유를 생성할 수 있습니다.

참고

가능하면 보안 뷰를 사용하여 데이터 보안을 강화하십시오. 보안 오브젝트를 사용하여 데이터 액세스 제어하기 섹션을 참조하십시오.

비보안 오브젝트를 허용하도록 명시적으로 구성된 공유에만 비보안 뷰를 추가할 수 있습니다. 보안되지 않은 함수 등 다른 보안되지 않은 오브젝트는 공유할 수 없습니다. 비보안 뷰 공유의 제한 사항 섹션을 참조하십시오.

비보안 오브젝트를 허용하는 공유 만들기

비보안 뷰를 공유하려면 비보안 오브젝트를 허용하는 공유를 생성합니다.

예를 들어 다음을 실행하십시오.

CREATE OR REPLACE SHARE allow_non_secure_views
 SECURE_OBJECTS_ONLY=FALSE
 COMMENT="Share views that require query optimization";
Copy

참고

전체 구문은 이 항목의 비보안 뷰를 공유하기 위한 구문 섹션을 참조하십시오.

뷰 공유를 허용하는 공유를 만든 후 GRANT <권한> … TO SHARE 명령을 사용하여 공유에 보기 권한을 부여합니다. 예를 들어, 이름이 non_secure_view 인 뷰를 공유에 부여하려면 다음을 실행합니다.

GRANT SELECT ON VIEW non_secure_view TO SHARE allow_non_secure_views;
Copy

또는 뷰에 대한 SELECT 권한을 데이터베이스 역할에 부여한 다음 해당 데이터베이스 역할을 공유에 부여할 수 있습니다. 예를 들어, 데이터베이스 역할 performance_engineernon_secure_view 뷰에 대한 SELECT 권한을 부여한 다음 공유에 역할을 부여하려면 다음을 실행합니다.

GRANT SELECT ON VIEW non_secure_view TO DATABASE ROLE performance_engineer;
GRANT DATABASE ROLE performance_engineer TO SHARE allow_non_secure_views;
Copy

기존 공유를 변환하여 비보안 뷰 공유 허용

보안된 뷰가 있는 기존 공유를 비보안된 뷰 공유를 지원하는 공유로 변환할 수 있습니다.

예를 들어, 기존 공유 secure_views_only 를 비보안 뷰 공유를 지원하는 공유로 변환하려면 다음을 수행합니다.

  1. SHOW GRANTS 명령을 사용하여 공유에 부여되는 오브젝트와 공유에 액세스할 수 있는 계정을 각각 결정합니다.

    SHOW GRANTS TO SHARE secure_views_only;
    SHOW GRANTS OF SHARE secure_views_only;
    
    Copy
  2. 기존 공유를 뷰 공유를 허용하는 공유로 변환:

    ALTER SHARE secure_views_only
     SET SECURE_OBJECTS_ONLY = FALSE,
     COMMENT = "Convert to allow sharing non-secure views that require
     query optimization";
    
    Copy
  3. 선택적으로 기존 보안 뷰를 뷰로 변환합니다. 이 예제에서는 secure_view2 를 비보안 뷰로 변경합니다.

    ALTER VIEW secure_view2 UNSET SECURE;
    
    Copy

자세한 내용은 공유의 보안 뷰를 비보안 뷰로 변환 섹션을 참조하십시오.

공유의 보안 뷰를 비보안 뷰로 변환

기존 보안 뷰를 뷰로 변환하려면 공유에 뷰를 허용하기 전이나 후에 변환할 수 있습니다.

공유의 기존 보안 뷰를 뷰로 변환하려면 다음 사항이 참이어야 합니다.

  • 보안 뷰는 비보안 오브젝트 공유를 허용하도록 구성된 공유에만 부여되어야 합니다.

  • 보안 뷰는 다음 역할에는 부여될 수 없습니다.

    • 비보안 오브젝트의 공유를 허용하지 않는 공유에 부여된 데이터베이스 역할.

    • 비보안 오브젝트의 공유를 허용하지 않는 공유.

예를 들어, 이름이 high_performance_view 인 기존 보안 뷰의 경우 SECURE 속성을 설정 취소합니다.

ALTER VIEW high_performance_view UNSET SECURE;
Copy

또는 보안 뷰를 뷰로 다시 생성할 수 있습니다.

CREATE OR REPLACE VIEW high_performance_view WITH COPY GRANTS;
Copy

비보안 뷰 공유의 제한 사항

뷰를 공유하려면 다음 사항을 고려하십시오.

  • SECURE_OBJECTS_ONLY 속성이 FALSE로 설정된 공유를 만든 후에는 이 속성을 설정 취소하거나 이 속성을 TRUE로 설정할 수 없습니다.

  • 비보안 뷰만 공유할 수 있습니다. 함수 등 다른 비보안 오브젝트는 공유할 수 없습니다.

비보안 뷰를 공유하기 위한 구문

CREATE [ OR REPLACE ] SHARE <name>
[ SECURE_OBJECTS_ONLY = <boolean> ]
[ COMMENT = '<string_literal>' ]
Copy

필수 매개 변수

name

공유에 대한 식별자를 지정하는데, 공유가 생성된 계정에 대해 고유한 식별자여야 합니다.

또한, 식별자는 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 예: "My object". 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

식별자 요구 사항에 대한 자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

선택적 매개 변수

SECURE_OBJECTS_ONLY = boolean

공유에 보안 오브젝트만 허용할지, 아니면 비보안 오브젝트도 허용할지 지정합니다.

기본값: true

COMMENT = 'string_literal'

공유에 대한 설명을 지정합니다.

기본값: 값 없음

액세스 제어 요구 사항

이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

CREATE SHARE

계정

Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

특히 Snowflake Secure Data Sharing의 액세스 제어 요구 사항에 대한 자세한 내용은 ACCOUNTADMIN 외 역할을 사용하여 데이터 공유 작업 수행하기 섹션을 참조하십시오.

사용법 노트

  • SHOW SHARES 를 실행하면 SECURE_OBJECTS_ONLY 속성의 값을 볼 수 없습니다. COMMENT 속성을 사용하여 SECURE_OBJECTS_ONLY 속성의 값을 기록합니다.

  • CREATE SHARE 에 대한 기존 노트도 적용됩니다.

비보안 뷰로 공유를 만드는 방법에 대한 예는 비보안 오브젝트를 허용하는 공유 만들기 섹션을 참조하십시오.

ALTER SHARE를 사용하는 경우의 예는 기존 공유를 변환하여 비보안 뷰 공유 허용 섹션을 참조하십시오.