Snowflakeセキュアデータシェアリング入門|データを安全に共有する仕組み

Snowflakeセキュアデータシェアリング入門|データを安全に共有する仕組み Snowflake

はじめに:データを「コピーせずに」共有できる時代へ

「取引先にデータを渡したいけど、CSVをメールで送るのは怖い…」「APIを作るのは面倒…」そんな悩みを一気に解決してくれるのが、Snowflakeのセキュアデータシェアリング(Secure Data Sharing)です。

これはSnowflakeの目玉機能のひとつで、データを物理的にコピーすることなく、別の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です。

SQLでやってみよう:CREATE SHAREの解説図

-- コンシューマー側で共有を確認
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を使う最大のメリットのひとつといっても過言ではありません。コピー不要・リアルタイム・低コストでデータコラボレーションが実現できるので、まずは社内の別アカウント同士で試してみるのがおすすめです。マスキングや行アクセスポリシーと組み合わせれば、安全性もバッチリですよ!

参考リンク

関連記事