Snowflake

Snowflake Data Sharing完全解説|Secure Data Sharing・Marketplace

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Snowflake Secure Data Sharingは、データの物理コピーを作成することなく、アカウント間でリアルタイムにデータを共有できる機能です。プロバイダーはShareオブジェクトを作成してテーブル・ビュー・UDFを追加し、コンシューマーはそのShareからデータベースを作成するだけでクエリを実行できます。本記事では、Share作成からReader Account、Marketplaceまでを解説します。

ゼロコピー共有の仕組み

従来のデータ共有ではETLやファイル転送でデータのコピーを作成する必要がありました。Snowflakeのゼロコピー共有では、プロバイダーのマイクロパーティション上のデータをコンシューマーが直接参照します。

ゼロコピー共有のアーキテクチャ:

[プロバイダーアカウント]
  ├─ テーブル: sales_data
  │     └─ マイクロパーティション(S3/Azure Blob/GCS上)
  │
  ├─ Share: sales_share
  │     └─ メタデータ参照のみ(データコピーなし)
  │
  ▼
[コンシューマーアカウント]
  ├─ Database: shared_sales_db (FROM SHARE)
  │     └─ プロバイダーのマイクロパーティションを直接読み取り
  │
  └─ Warehouse: consumer_wh(コンシューマー側で実行)
  • ストレージ費用: プロバイダーのみ負担(コピーが存在しないため)
  • コンピュート費用: コンシューマーが自身のウェアハウスで負担
  • データ鮮度: プロバイダーがデータを更新すると即座に反映

Shareの作成と管理

プロバイダー側の設定

-- Step 1: Shareオブジェクトの作成
CREATE SHARE sales_share
  COMMENT = '月次売上データの共有';

-- Step 2: データベースへのUSAGE権限を付与
GRANT USAGE ON DATABASE analytics_db TO SHARE sales_share;

-- Step 3: スキーマへのUSAGE権限を付与
GRANT USAGE ON SCHEMA analytics_db.public TO SHARE sales_share;

-- Step 4: テーブルへのSELECT権限を付与
GRANT SELECT ON TABLE analytics_db.public.monthly_sales
  TO SHARE sales_share;

-- Secure Viewを共有する場合
GRANT SELECT ON VIEW analytics_db.public.sales_summary_v
  TO SHARE sales_share;

-- Step 5: コンシューマーアカウントをShareに追加
ALTER SHARE sales_share ADD ACCOUNTS = consumer_org.consumer_acct;

-- 複数アカウントの追加
ALTER SHARE sales_share ADD ACCOUNTS = org1.acct1, org2.acct2;

コンシューマー側の設定

-- 利用可能なShareの確認
SHOW SHARES;

-- SharedデータベースをShareから作成
CREATE DATABASE shared_sales
  FROM SHARE provider_org.provider_acct.sales_share;

-- 共有データへのクエリ実行
SELECT * FROM shared_sales.public.monthly_sales
WHERE sale_month >= '2026-01-01';

-- 自組織のユーザーにアクセス権を付与
GRANT IMPORTED PRIVILEGES ON DATABASE shared_sales TO ROLE analyst_role;

共有可能なオブジェクト

オブジェクト共有可否備考
テーブルSELECT権限をGRANT
Secure ViewSECUREキーワード必須
Secure UDFSECUREキーワード必須
通常のView×Secure Viewに変更が必要
ステージ・パイプ×Shareには含められない
タスク・ストリーム×Shareには含められない

非SECUREのViewをShareに含めることはできません。これはViewの定義(SQLテキスト)がコンシューマーに公開されるのを防ぐためです。

Reader Account

Reader Account(リーダーアカウント)は、Snowflakeアカウントを持たない外部パートナーや顧客にデータを共有するための仕組みです。プロバイダーアカウントから作成・管理し、ウェアハウスのコンピュート費用もプロバイダーが負担します。

-- Reader Accountの作成
CREATE MANAGED ACCOUNT partner_reader
  ADMIN_NAME = 'reader_admin',
  ADMIN_PASSWORD = 'StrongP@ss123!',
  TYPE = READER;

-- Reader AccountにShareを割り当て
ALTER SHARE sales_share ADD ACCOUNTS = partner_reader;

-- Resource Monitorを設定してコストを制御
CREATE RESOURCE MONITOR reader_monitor
  WITH CREDIT_QUOTA = 10
  TRIGGERS
    ON 80 PERCENT DO NOTIFY
    ON 100 PERCENT DO SUSPEND;

Reader Account vs Full Account への共有

項目Reader AccountFull Account
Snowflakeアカウントプロバイダーが作成コンシューマーが既に保有
コンピュート費用プロバイダー負担コンシューマー負担
ストレージ費用プロバイダー負担プロバイダー負担(元データ)
データの書き込み不可(読み取り専用)共有DBへの書き込みは不可
自前のテーブル作成不可可(自アカウント内)
管理責任プロバイダーコンシューマー

Snowflake Marketplace

Snowflake Marketplaceは、Data Sharingの仕組みを基盤として、データ製品を公開・検索・取得できるプラットフォームです。

  • プロバイダーはリスティングとしてデータセットを公開
  • 無料リスティングと有料リスティング(Monetization)が選択可能
  • コンシューマーはMarketplaceからリスティングを検索・購入し、即座にクエリ可能
  • Personalized Listingは特定のアカウントにのみ公開する限定共有

リスティングの種類

タイプ公開範囲課金用途
Free Listing全Snowflakeユーザー無料オープンデータ・プロモーション
Paid Listing全Snowflakeユーザー有料(月額/従量)データ商品の販売
Personalized Listing指定アカウントのみ任意パートナー限定共有

Secure Viewの重要性

Data Sharingでは通常のViewは共有できず、Secure Viewが必須です。Secure Viewではビュー定義(SQL文)がコンシューマーから隠蔽され、クエリオプティマイザの最適化も一部制限されてデータリーケージを防止します。

-- Secure Viewの作成
CREATE OR REPLACE SECURE VIEW sales_summary_v AS
SELECT
  region,
  product_category,
  DATE_TRUNC('MONTH', sale_date) AS sale_month,
  SUM(amount) AS total_amount,
  COUNT(*) AS transaction_count
FROM sales_data
WHERE is_active = TRUE
GROUP BY 1, 2, 3;

-- ShareにSecure Viewを追加
GRANT SELECT ON VIEW sales_summary_v TO SHARE sales_share;

試験対策のポイント

  • Data Sharingはゼロコピー(データの物理コピーは作成されない)
  • ストレージ費用はプロバイダー負担、コンピュート費用はコンシューマー負担(Reader Account除く)
  • 通常のViewは共有不可、Secure Viewが必須
  • Reader Accountのコンピュート費用はプロバイダーが負担する
  • 共有DBに対するコンシューマーの権限はIMPORTED PRIVILEGES
  • クロスリージョン共有にはデータベースレプリケーションが必要
  • ShareにはUSAGEの連鎖的なGRANT(DB→スキーマ→テーブル)が必要

サンプル問題

Data Sharing

問題 1

Snowflake Secure Data Sharingに関して正しい記述はどれか?

  1. A. コンシューマーが共有データベースを作成すると、プロバイダーのデータが物理的にコピーされる
  2. B. Reader Accountのコンピュートコストはコンシューマーが負担する
  3. C. 通常のView(非SECURE)もShareに含めてコンシューマーに共有できる
  4. D. コンシューマーは共有データベースに対してIMPORTED PRIVILEGESをGRANTしてアクセス権を管理する

正解: D

コンシューマーはShareから作成したデータベースに対して、GRANT IMPORTED PRIVILEGES ON DATABASE ... TO ROLE ... で自組織のロールにアクセスを付与します。Aはゼロコピーなのでコピーは作成されません。BのReader Accountのコンピュートはプロバイダー負担です。Cの通常ViewはShareに含められず、Secure Viewが必要です。

よくある質問

Data Sharingではデータのコピーが作成されますか?

いいえ。Snowflake Secure Data Sharingはゼロコピー共有の仕組みで、データの物理的なコピーを作成しません。プロバイダーが共有したオブジェクトのメタデータのみがコンシューマーに提供され、コンシューマーがクエリを実行すると、プロバイダーのストレージ上のデータを直接読み取ります。そのためストレージの二重消費は発生せず、データの鮮度も常にリアルタイムです。

Reader AccountとFull Accountの違いは何ですか?

Reader Account(リーダーアカウント)はSnowflakeアカウントを持たない外部組織にデータを共有するためにプロバイダーが作成する管理対象アカウントです。Reader Accountのコンピュートコスト(ウェアハウス利用料)はプロバイダーが負担します。Full Account(通常のSnowflakeアカウント)へのShareではコンシューマーが自身のウェアハウスを使用するため、コンピュートコストはコンシューマー負担です。

異なるクラウドプロバイダー間でData Sharingは可能ですか?

同一リージョン・同一クラウドプロバイダー内のShareは追加設定なしで可能です。異なるリージョンやクラウドプロバイダー(例: AWS → Azure)間でデータを共有するにはデータベースレプリケーションを設定する必要があります。Snowflake Marketplaceでのリスティング公開時もクロスリージョン配信のためにレプリケーション設定が必要になる場合があります。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.