はじめに:データを「コピーせずに」共有できる時代へ
「取引先にデータを渡したいけど、CSVをメールで送るのは怖い…」「APIを作るのは面倒…」そんな悩みを一気に解決してくれるのが、Snowflakeのセキュアデータシェアリング(Secure Data Sharing)です。
これはSnowflakeの目玉機能のひとつで、データを物理的にコピーすることなく、別のSnowflakeアカウントへリアルタイムにデータを共有できる仕組みです。この記事では、データベース初心者の方でも「あ、こういうことか!」とイメージできるように、仕組みから使い方までやさしく解説していきます。

セキュアデータシェアリングの基本概念
登場人物は2人(または3人)
- プロバイダー(Provider):データを提供する側のアカウント
- コンシューマー(Consumer):データを受け取る側のアカウント
- リーダーアカウント(Reader Account):Snowflakeを契約していない相手にもデータを渡せる、プロバイダーが作る無料の閲覧専用アカウント
仕組みの肝は「メタデータ共有」
普通のデータ共有はファイルをコピーして送りますが、Snowflakeはストレージを直接参照させる方式です。コンシューマー側はデータを「自分のデータベースのように」クエリできるのに、ストレージ料金はプロバイダー側だけが負担、コンピュート料金は使った側が負担、というシンプルなコスト構造になります。
この発想はSnowflakeゼロコピークローン入門|データベースを一瞬で複製する魔法とよく似ていて、「コピーせずに見せる」というSnowflakeらしい考え方が根底にあります。
SQLでやってみよう:CREATE SHARE
プロバイダー側が、共有用の「箱」であるSHAREオブジェクトを作って権限を付与します。
-- 1. 共有を作る
CREATE SHARE sales_share;
-- 2. データベース・スキーマ・テーブルへの参照権限を付与
GRANT USAGE ON DATABASE sales_db TO SHARE sales_share;
GRANT USAGE ON SCHEMA sales_db.public TO SHARE sales_share;
GRANT SELECT ON TABLE sales_db.public.orders TO SHARE sales_share;
-- 3. 共有先のアカウントを追加
ALTER SHARE sales_share ADD ACCOUNTS = <consumer_account_locator>;
コンシューマー側は、共有されたデータをデータベースとしてマウントするだけでOKです。

-- コンシューマー側で共有を確認
SHOW SHARES;
-- 共有からデータベースを作成
CREATE DATABASE shared_sales FROM SHARE <provider_account>.sales_share;
-- あとは普通にSELECTできる!
SELECT * FROM shared_sales.public.orders;
Snowsightでもクリック操作で共有できる
SQLが苦手でも大丈夫。Snowsightの左メニュー「Data Products」→「Private Sharing」から、共有したいテーブルを選んでアカウントロケーターを入力するだけで、上と同じ作業がGUIで完結します。
よくあるユースケースと注意点
こんな場面で大活躍
- 取引先への売上データ提供:CSV送付の代わりにリアルタイム参照
- 社内のグループ会社間連携:本社と子会社で同じデータを共有
- Snowflake Marketplace:一般公開して有償・無償でデータ販売
注意点
- 共有できるのはセキュアビュー・セキュア関数・テーブルなどに限られる
- プロバイダーとコンシューマーは同じクラウド・同じリージョンが原則(別リージョンならレプリケーションが必要)
- 機密列がある場合は動的データマスキングや列・行レベルセキュリティと組み合わせて、見せたい範囲だけ公開しよう
- 共有作成にはACCOUNTADMINロールが必要なので、RBACの基礎もあわせて押さえておくと安心
まとめ
セキュアデータシェアリングは、Snowflakeを使う最大のメリットのひとつといっても過言ではありません。コピー不要・リアルタイム・低コストでデータコラボレーションが実現できるので、まずは社内の別アカウント同士で試してみるのがおすすめです。マスキングや行アクセスポリシーと組み合わせれば、安全性もバッチリですよ!
参考リンク
関連記事
- Snowflakeゼロコピークローン入門|データベースを一瞬で複製する魔法 – 「コピーせずに参照する」Snowflakeの哲学を象徴する機能
- Snowflake動的データマスキング入門|機密データを安全に守る方法 – 共有データの機密列を隠したいときに必須
- Snowflake列レベル・行レベルセキュリティ入門|ポリシーの作り方 – 共有先ごとに見せる行を変えたいときに便利
- Snowflake RBAC入門|ロールで権限管理を始めよう – 共有作成にはACCOUNTADMINが必要、ロールの基礎をおさらい

