Secure Data Sharing은 Snowflake에서 데이터베이스 오브젝트를 다른 Snowflake 계정과 공유할 수 있도록 하는 기능입니다. 데이터가 직접 전송되거나 복사되지 않아, 데이터 소비자의 저장 공간 요금에 영향을 주지 않고 공유할 수 있습니다. 컨슈머는 공유 데이터를 쿼리할 때 사용한 컴퓨팅 리소스에 대한 요금만 지불합니다.
1. Secure Data Sharing 소개
Secure Data Sharing으로 공유할 수 있는 데이터 오브젝트에는 데이터베이스, 테이블, 동적 테이블, 외부 테이블, Iceberg 테이블, 보안 뷰 등이 포함됩니다.
2. Secure Data Sharing의 작동 방식
Secure Data Sharing을 사용하면 데이터베이스를 복제하거나 전송할 필요 없이 공유할 수 있습니다. 데이터는 Snowflake의 메타데이터 저장소를 통해 관리되며, 공급자는 데이터를 공유(Share)라는 오브젝트에 추가하고 컨슈머는 그 데이터를 읽기 전용으로 조회할 수 있습니다.
3. 공유(Share)란?
공유는 데이터베이스를 공유하기 위해 필요한 모든 정보를 담고 있는 Snowflake의 명명된 오브젝트입니다. 데이터 공급자는 특정 데이터베이스, 테이블, 보안 뷰와 같은 오브젝트를 공유에 추가하고, 공유하려는 계정을 설정하여 컨슈머가 접근할 수 있게 합니다.
- 데이터베이스 역할을 통한 공유: 공유에 데이터베이스 역할을 부여하여 공유 권한을 제공합니다.
- 직접 권한 부여: 특정 데이터베이스 오브젝트에 직접 권한을 부여하여 공유를 설정합니다.
-- 공유 생성
CREATE SHARE my_share;
-- 데이터베이스 및 테이블 추가
GRANT USAGE ON DATABASE my_database TO SHARE my_share;
GRANT SELECT ON TABLE my_table TO SHARE my_share;
공유 오브젝트가 생성되면 데이터베이스와 같은 Snowflake 오브젝트 간의 관계를 관리하며, 실시간 업데이트된 데이터에 컨슈머가 접근할 수 있습니다.
4. 공유 생성 및 설정하기
- 데이터 공급자는 먼저 공유를 생성하고, 여기에 데이터베이스 오브젝트를 추가합니다.
- 그 후 컨슈머 계정을 공유에 추가하여 접근 권한을 부여합니다.
-- 공유 생성
CREATE SHARE my_share;
-- 공유에 데이터베이스 오브젝트 추가
GRANT USAGE ON DATABASE my_database TO SHARE my_share;
GRANT SELECT ON TABLE my_table TO SHARE my_share;
-- 컨슈머 계정에 공유 제공
ALTER SHARE my_share ADD ACCOUNT = 'consumer_account_name';
5. 공유 데이터베이스 생성하기 (컨슈머 측)
컨슈머는 데이터 공급자로부터 공유된 오브젝트를 사용하여 자신의 Snowflake 계정에 읽기 전용 데이터베이스를 생성할 수 있습니다.
-- 공급자의 공유로부터 데이터베이스 생성
CREATE DATABASE shared_database FROM SHARE provider_account_name.my_share;
6. 데이터 공유 아키텍처
Secure Data Sharing 아키텍처는 공급자와 컨슈머 간의 데이터를 실시간으로 공유합니다. 공급자가 공유 오브젝트를 업데이트하면 컨슈머는 자동으로 최신 데이터를 볼 수 있습니다. 공유는 필요에 따라 언제든지 취소할 수 있습니다.
7. 독자 계정 (Reader Account)
Snowflake에서는 Reader Account라는 기능을 통해 Snowflake 계정이 없는 서드파티와도 데이터를 공유할 수 있습니다. 공급자는 Reader Account를 생성하여 데이터를 손쉽게 공유할 수 있으며, 독자 계정은 Snowflake 계정을 가지지 않고도 데이터를 쿼리할 수 있습니다.
-- 독자 계정 생성 (공급자 계정에서 실행)
CREATE MANAGED ACCOUNT reader_account
ADMIN_NAME = 'reader_admin'
ADMIN_PASSWORD = 'strong_password'
SET REGION = 'AWS_US_EAST_1';
-- 독자 계정에 공유 제공
ALTER SHARE my_share ADD ACCOUNT = 'reader_account';
- CREATE MANAGED ACCOUNT reader_account: reader_account라는 독자 계정을 생성합니다. 이 계정은 컨슈머가 Snowflake 내에 별도의 계정을 만들지 않아도 데이터를 쿼리할 수 있게 합니다.
- ADMIN_NAME = 'reader_admin': 새 독자 계정의 관리자 계정 이름을 설정합니다. reader_admin은 독자 계정을 관리하고 필요한 접근 설정을 할 수 있습니다.
- ADMIN_PASSWORD = 'strong_password': 독자 계정 관리자의 비밀번호를 설정합니다.
- SET REGION = 'AWS_US_EAST_1': 독자 계정이 배치될 리전을 지정합니다. Snowflake는 다양한 리전을 지원하므로, 필요에 따라 적절한 리전을 선택할 수 있습니다.
8. 사용량 메트릭 모니터링
공급자는 데이터 소비량을 모니터링하여 데이터 교환 사용량을 확인할 수 있으며, Snowflake Marketplace를 통해 공급된 데이터 사용 현황을 메트릭으로 확인할 수 있습니다.
9. Secure Data Sharing의 주요 활용 사례
- 데이터 판매 및 교환: 데이터셋을 Snowflake Marketplace에 등록하고 판매하거나 여러 계정에 직접 공유합니다.
- 비즈니스 파트너와의 협업: 회사 간의 데이터 공유를 통해 비즈니스 협업에 활용할 수 있습니다.
- 보고서 및 실시간 데이터 공유: 대량의 실시간 데이터를 여러 계정에 동시 제공하여 빠르게 분석할 수 있습니다.
10. 결론
Snowflake Secure Data Sharing은 데이터를 손쉽게 공유하고, 유지 보수 없이 관리할 수 있는 강력한 도구입니다. 이 기능을 통해 데이터 소비자와 공급자가 효율적으로 데이터를 공유하고 사용할 수 있습니다.
Reference
https://docs.snowflake.com/ko/user-guide/data-sharing-intro
'Snowflake' 카테고리의 다른 글
[Snowflake] SnowPro Core 시험 Cheat Sheet 2 (계정 액세스 및 보안) (0) | 2024.10.27 |
---|---|
[Snowflake] SnowPro Core 시험 Cheat Sheet 1 (Snowflake 데이터 클라우드의 기능 및 아키텍처) (0) | 2024.10.26 |
[Snowflake] Snowflake Time Travel 이해 및 사용하기 (0) | 2024.10.25 |
[Snowflake] Snowflake의 Iceberg 테이블이란? (12) | 2024.10.20 |
[Snowflake] Snowflake에서 뷰(View) 사용하기 (0) | 2024.10.13 |