보안 뷰로 비정형 데이터 공유하기

이 항목에서는 보안 뷰 및 Secure Data Sharing 을 사용하여 비정형 데이터 파일을 공유하는 방법을 간략하게 다룹니다. 데이터 공급자는 Secure Data Sharing을 사용하여 한 Snowflake 계정의 데이터베이스에서 선택한 오브젝트를 다른 Snowflake 계정의 데이터 컨슈머와 공유할 수 있습니다.

자세한 내용과 추가 예는 공유 관련 작업하기 섹션을 참조하십시오.

1단계: 보안 뷰 만들기

먼저 CREATE SECURE VIEW 명령을 사용하여 스테이지의 비정형 데이터에서 보안 뷰를 만듭니다. 뷰를 통해 쿼리 결과를 테이블처럼 액세스할 수 있으며, 보안 뷰는 특히 데이터 프라이버시용으로 지정됩니다. 자세한 내용은 뷰의 개요 섹션을 참조하십시오.

데이터 컨슈머가 보안 뷰에서 범위 지정 URL 또는 사전 서명된 URL을 검색하도록 허용할 수 있습니다. 범위 지정 URL은 더 나은 보안을 제공하는 반면, 사전 서명된 URL은 승인이나 인증 없이 액세스할 수 있습니다. 사용 사례에 알맞은 URL을 선택하려면 파일 액세스에 사용할 수 있는 URL의 유형 섹션을 참조하십시오.

참고

Snowflake는 컨슈머 계정의 사용자가 보안 뷰를 쿼리할 때까지 범위 지정 URL 또는 사전 서명된 URL을 생성하지 않습니다. 이 주문형 생성 동작은 사전 서명된 URL의 수명을 관리하는 데 도움이 됩니다. 사전 서명된 URL 유출 위험을 최소화하기 위해 GET_PRESIGNED_URL 함수의 EXPIRATION_TIME 매개 변수에 대해 짧은 시간 간격을 설정할 수도 있습니다.

다음 예에서는 데이터 컨슈머가 스테이징된 특정 파일 세트에 대해 범위 지정 또는 사전 서명된 URL을 쿼리할 수 있는 보안 뷰를 만듭니다. 두 뷰 모두 디렉터리 테이블의 RELATIVE_PATH 열을 쿼리하여 범위 지정 또는 사전 서명된 URL을 쿼리합니다.

범위 지정 URL

이 예제에서는 BUILD_SCOPED_FILE_URL 함수를 호출하여 스테이징된 파일 세트에 대해 범위 지정 URL이 있는 보안 뷰를 만듭니다. 이 예제에서는 mystage 라는 스테이지의 디렉터리 테이블에 있는 RELATIVE_PATH 열을 BUILD_SCOPED_FILE_URL 함수에 전달합니다.

CREATE OR REPLACE SECURE VIEW images_scoped_v AS
SELECT BUILD_SCOPED_FILE_URL(@mystage, relative_path) AS scoped_file_url
FROM DIRECTORY(@mystage);
Copy

전체 스테이지를 공유할 필요가 없도록 스테이지의 파일 하위 세트에서 보안 뷰를 만들 수도 있습니다. 다음 예에서는 client_name 필드가 abc 와 같은 스테이지에서 이미지의 보안 뷰를 생성합니다.

CREATE OR REPLACE SECURE VIEW images_for_client_abc AS
SELECT build_scoped_file_url(@myStage, relative_path) AS scoped_file_url
FROM directory(@mystage) d join clients c on d.relative_path = c.relative_path
WHERE c.client_name = 'abc';
Copy

사전 서명된 URL

이 예에서는 GET_PRESIGNED_URL 함수를 호출하여 스테이징된 파일 세트에 대한 사전 서명 URL을 검색합니다. 이 예에서는 사전 서명된 URL에 1분 동안만 액세스할 수 있도록 EXPIRATION_TIME 매개 변수에 대해 60초를 지정합니다.

CREATE OR REPLACE SECURE VIEW images_presigned_v AS
SELECT GET_PRESIGNED_URL(@mystage, relative_path, 60) AS presigned_url
FROM DIRECTORY(@mystage);
Copy

2단계: 공유 만들기

다음으로, 빈 공유를 생성한 후 보안 뷰에 대한 액세스 권한을 공유에 부여합니다. 그렇게 하면 보안 뷰 오브젝트가 공유에 추가됩니다.

다음 예에서는 CREATE SHARE 명령으로 공유를 생성한 다음 GRANT <권한> … TO SHARE 명령을 사용하여 보안 뷰에 대한 SELECT 권한을 공유에 부여합니다.

CREATE SHARE my_share;
GRANT SELECT ON my_secure_view TO SHARE my_share;
Copy

3단계: 공유에 계정 추가

마지막으로, 공유에 계정을 추가하여 컨슈머 계정에 대한 액세스 권한을 공유에 제공해야 합니다.

다음 예에서는 ALTER SHARE 명령을 사용하여 consumer_account_1 이라는 계정을 my_share 라는 공유에 추가합니다.

ALTER SHARE my_share ADD ACCOUNTS=consumer_account_1;
Copy

이 단계를 완료하면 consumer_account_1 계정이 보안 뷰에서 공유를 보고 파일에 액세스할 수 있습니다.