Snowflake Private Listing で AWSアカウント から Azureアカウント へクロスクラウドデータ共有してみた

Snowflake Private Listing で AWSアカウント から Azureアカウント へクロスクラウドデータ共有してみた

2026.05.20

かわばたです。

Snowflake の Private Listing は、特定の Snowflake アカウントに対してデータを安全に共有できる機能です。同一リージョン内の共有では Secure Data Sharing によりデータコピーなしでほぼ即時に参照できますが、異なるリージョンやクラウド間では Auto-fulfillment により Snowflake 管理の Secure Share Area(SSA)へデータが自動レプリケートされます。

本記事では、AWS 基盤のプロバイダーアカウント から Azure 基盤のコンシューマーアカウント へ、Private Listing を使ってクロスクラウドでデータを共有する手順を検証します。

https://docs.snowflake.com/en/collaboration/collaboration-listings-about

概要

背景

企業のデータ活用では、以下のようなニーズが増えています。

  • 組織間・部署間でデータを安全に共有したい
  • 異なるクラウド・リージョンのアカウントへデータを提供したい
  • データコピーや個別 ETL を最小限にし、Snowflake ネイティブな仕組みでデータ共有したい

Snowflake データ共有の基本概念

Snowflake のデータ共有(Secure Data Sharing)は、プロバイダー(データ提供者)が作成した Share オブジェクトを通じて、コンシューマー(データ利用者)にデータへのアクセスを許可する仕組みです。

同一リージョン内の共有では、実際のデータはアカウント間でコピー・転送されない のが大きな特徴です。Snowflake のサービスレイヤーとメタデータストアを通じてアクセスが制御されるため、コンシューマー側のストレージは消費せず、コンシューマーが負担するのはクエリ実行時のコンピュートコストのみです。

用語 説明
プロバイダー データを提供する側のアカウント。Share を作成し、アクセスを管理する
コンシューマー データを利用する側のアカウント。Share からデータベースを作成してクエリを実行する
Share データベースオブジェクトへのアクセス権限をカプセル化した Snowflake オブジェクト

リスティングとは

リスティングは、Share にメタデータ(タイトル、説明、利用規約など)を付加したデータプロダクトです。直接 Share を共有するよりも、管理性と可視性に優れています。

項目 Private Listing Public Listing(Marketplace)
対象 特定のアカウントを指定 全 Snowflake ユーザー
公開範囲 指定コンシューマーのみ Snowflake Marketplace 上で公開
承認プロセス 不要 Snowflake による審査・承認が必要
ユースケース 組織内共有、パートナー間共有 データプロダクトの販売・公開

リスティングのアクセスタイプは以下の3種類があります。

タイプ 内容
無料(Free) 支払いなしでデータにアクセス可能
限定トライアル 1〜90日間の期間限定アクセス(Marketplace のみ)
有料(Paid) 対価を設定して提供(使用量ベースまたは固定料金)

Cross-Cloud Auto-Fulfillment(以下、Auto-fulfillment)

通常の Secure Data Sharing は同一リージョン内でデータのコピーなしに動作しますが、異なるリージョンや異なるクラウド間 で共有する場合は Auto-fulfillment が必要になります。

Auto-fulfillment では、Snowflake が管理する Secure Share Area(SSA) というアカウントにデータが自動的にレプリケートされます。

項目 内容
仕組み プロバイダーのデータを SSA に自動レプリケート
リフレッシュ インターバルベース(最短1分〜最長8日)またはスケジュールベースで設定可能
コスト負担 SSA へのデータ複製・保存・同期・転送コストはプロバイダーが負担。コンシューマーのクエリ実行コンピュートコストはコンシューマー側で発生
制約 データサイズ上限 10TB(超過時はサポート対応)。Auto-fulfillment はトライアルアカウントでは利用不可(クロスクラウドの Private Listing には full account が必要)

なお、Private Listing を別リージョン / 別クラウドの指定コンシューマーに共有する場合、Snowsight が対象アカウントのリージョンを検出し、Auto-fulfillment を有効化します。Private Listing では、リモートリージョン向けに手動レプリケーションで代替することはできません。

今回の検証では AWS → Azure のクロスクラウド共有のため、Auto-fulfillment を使用します。

検証環境

項目 プロバイダーアカウント コンシューマーアカウント
クラウド AWS Azure
リージョン AWS_AP_NORTHEAST_1 AZURE_JAPANEAST
エディション Enterprise エディション Business Critical エディション
ロール ACCOUNTADMIN ACCOUNTADMIN
データベース PRIVATE_LISTING_TEST_DB (リスティング取得時に自動作成)

Private Listing の基本操作検証

プロバイダー側の事前準備

Private Listing を作成するには、事前に以下の準備が必要です。

利用規約への同意

無料の Private Listing を作成する場合、Snowflake Provider and Consumer Terms の受諾は必須ではありません。代わりに、Snowflake Customer-Controlled Data Sharing Functionality Terms の確認・受諾が必要です。

  1. Snowsight にサインイン
  2. Admin > Terms を選択
  3. Snowflake Customer-Controlled Data Sharing Functionality Terms を確認・受諾

2026-05-19_20h36_46

補足:
Snowflake 上で課金する Paid Listing や Snowflake Marketplace への公開では、Snowflake Provider and Consumer Terms への同意や Provider Profile の作成が必要です。一方、無料 Private Listing やオフプラットフォームで契約・課金する Private Listing では、Provider and Consumer Terms ではなく、Snowflake Customer-Controlled Data Sharing Functionality Terms の確認・同意が必要です。

グローバルデータ共有の有効化確認

クロスクラウド / クロスリージョンの Private Listing で Auto-fulfillment を利用する場合、プロバイダーアカウントでグローバルデータ共有の有効化がされている必要があります。

必要に応じて、ORGADMIN ロールで以下を実行します。

USE ROLE ORGADMIN;

SELECT SYSTEM$ENABLE_GLOBAL_DATA_SHARING_FOR_ACCOUNT('<account_name>');

また、ACCOUNTADMIN またはカスタムロールで Auto-fulfillment を管理するための権限委任が必要になる場合があります。

共有データの準備(プロバイダー側)

リスティングで共有するデータベース、テーブル、セキュアビューを作成します。

-- プロバイダーアカウントで実行
USE ROLE ACCOUNTADMIN;

-- テスト用データベース作成
CREATE OR REPLACE DATABASE PRIVATE_LISTING_TEST_DB;

-- テスト用テーブル作成
CREATE OR REPLACE TABLE PRIVATE_LISTING_TEST_DB.PUBLIC.SAMPLE_SALES (
    SALE_ID INT,
    PRODUCT_NAME VARCHAR(100),
    SALE_DATE DATE,
    AMOUNT DECIMAL(10, 2),
    REGION VARCHAR(50)
);

-- テストデータ挿入
INSERT INTO PRIVATE_LISTING_TEST_DB.PUBLIC.SAMPLE_SALES VALUES
    (1, 'Product A', '2026-04-01', 15000.00, 'Tokyo'),
    (2, 'Product B', '2026-04-02', 23000.00, 'Osaka'),
    (3, 'Product C', '2026-04-03', 8000.00,  'Nagoya'),
    (4, 'Product D', '2026-04-04', 42000.00, 'Tokyo'),
    (5, 'Product E', '2026-04-05', 11000.00, 'Fukuoka');

-- セキュアビューの作成
CREATE OR REPLACE SECURE VIEW PRIVATE_LISTING_TEST_DB.PUBLIC.V_SAMPLE_SALES AS
SELECT * FROM PRIVATE_LISTING_TEST_DB.PUBLIC.SAMPLE_SALES;

-- データ確認
SELECT * FROM PRIVATE_LISTING_TEST_DB.PUBLIC.V_SAMPLE_SALES;

2026-05-19_20h53_31

セキュアビューを使う理由:
Snowflake の公式ドキュメントでは、共有オブジェクトにはセキュアビューの使用が推奨されています。通常のビューではビュー定義(SQL)がコンシューマーに見える可能性がありますが、セキュアビューではビュー定義が隠蔽され、データアクセスをより安全に制御できます。

なお、Auto-fulfillment ではアカウントロールは複製されません。そのため、INVOKER_ROLE などアカウントロールに依存するポリシーやセキュアビューは、SSA 上で想定と異なる評価結果になる可能性があります。クロスクラウド共有を前提にする場合は、データベースロールを中心に権限設計することを推奨します。

Private Listing の作成と公開(プロバイダー側)

Snowsight の Provider Studio から Private Listing を作成します。

  1. Snowsight にサインインし、Marketplace > Provider Studio を選択
  2. Listings タブで 「+ Create Listing」 をクリック
  3. 「Specified Consumers」 を選択(Private Listing)

2026-05-19_20h56_37

  1. リスティング名を入力(例: Private Sales Data Listing

2026-05-19_20h58_35

  1. 「Add data product」 をクリックし、「+ Select」 で共有するオブジェクトを選択
    • データベース: PRIVATE_LISTING_TEST_DB
    • セキュアビュー: V_SAMPLE_SALES を選択

2026-05-19_20h59_24

2026-05-19_21h01_27

  1. Access type「Free」 を選択
    2026-05-19_21h02_38
  2. 「Who can access」 セクションにコンシューマーのアカウント識別子を追加
    • <org_name>.<account_name> 形式で入力

2026-05-19_21h05_15

  1. リスティングの 説明(Description) を入力
    2026-05-19_21h06_24
  2. Legal Terms を選択。
  • Standard Agreement for Marketplace Products:Snowflake が提供する標準規約
  • Custom:プロバイダー独自の利用規約URL を指定(公開アクセス可能なURL が必要、PDF等も可)
  • Listing terms will be provided offline:Private Listing 限定。URL を用意せず、オフラインでコンシューマーに利用規約を提供する場合に選択

今回はListing terms will be provided offlineを選択しました。
2026-05-19_21h10_59

  1. 「Publish」 をクリックして公開

2026-05-19_21h17_04

注意:
クロスクラウドの場合、Auto-fulfillment によるリモートリージョンの SSA へのデータ複製は、コンシューマーが Listing を Get した後に実行されます。そのため、Publish 直後にコンシューマー側で即時参照できるとは限りません。

補足: コンシューマーアカウント識別子の確認方法
コンシューマーのアカウント識別子は <org_name>.<account_name> 形式です。コンシューマー側で以下のコマンドを実行して確認できます。

SELECT CURRENT_ORGANIZATION_NAME() || '.' || CURRENT_ACCOUNT_NAME();

コンシューマー側の事前準備

コンシューマー側では、利用する Listing の種類や契約条件に応じて、ORGADMIN による利用規約の受諾が必要になる場合があります。無料の Listing のみを利用する場合は Snowflake Provider and Consumer Terms の受諾は不要ですが、Paid Listing を利用する場合は受諾が必要です。

  1. Snowsight にサインイン(コンシューマーアカウント)
  2. 必要に応じて Admin > Terms から利用規約を確認・受諾
  3. リスティングを取得するロールに CREATE DATABASE および IMPORT SHARE 権限があることを確認(ACCOUNTADMIN であれば問題ありません)

Private Listing の取得(コンシューマー側)

プロバイダーが公開した Private Listing をコンシューマー側で取得します。

  1. Snowsight にサインイン(コンシューマーアカウント)
  2. ナビゲーションメニューから Data sharing > External sharing を選択
  3. 「Shared With You」「Privately shared listings」 セクションで、プロバイダーから共有されたリスティングを確認

2026-05-19_21h19_37

  1. リスティングを選択し、「Get」 をクリック

2026-05-19_21h20_27

  1. データベース名を指定(任意。デフォルト名を変更可能)

2026-05-20_09h46_04

2026-05-20_09h46_16

注意: クロスクラウドの場合、Auto-fulfillment によるデータのレプリケーションが完了するまで、データベースの内容が参照できるようになるまで時間がかかる場合があります。

コンシューマー側でのデータ確認

取得したデータベースからデータを参照できるか確認します。

以降のサンプル SQL では、取得時のデータベース名を PRIVATE_LISTING_TEST_DB として説明します。取得時に別名を指定した場合は、適宜読み替えてください。

-- コンシューマーアカウントで実行
USE ROLE ACCOUNTADMIN;

-- 取得したデータベースのセキュアビューを参照
SELECT * FROM PRIVATE_LISTING_TEST_DB.PUBLIC.V_SAMPLE_SALES;

-- 件数確認
SELECT COUNT(*) AS ROW_COUNT FROM PRIVATE_LISTING_TEST_DB.PUBLIC.V_SAMPLE_SALES;

2026-05-20_09h49_18

コンシューマー側の読み取り専用確認

共有されたデータは読み取り専用です。書き込みを試みてエラーになることを確認します。

-- コンシューマーアカウントで実行

-- 共有データベースへのオブジェクト作成を試みる → エラーになるはず
CREATE TABLE PRIVATE_LISTING_TEST_DB.PUBLIC.WRITE_TEST (
    ID INT
);

-- セキュアビューへの書き込みを試みる → エラーになるはず
INSERT INTO PRIVATE_LISTING_TEST_DB.PUBLIC.V_SAMPLE_SALES VALUES
    (99, 'Test Product', '2026-04-20', 100.00, 'Test');

2026-05-20_09h50_54

リスティングの管理・監視

プロバイダー側でリスティングの利用状況や Auto-fulfillment の同期状況を確認します。

リスティングの利用状況

  1. Snowsight で Marketplace > Provider Studio > Listings を選択
  2. 対象のリスティングを選択
  3. Analytics タブでコンシューマーの利用状況を確認

2026-05-20_09h54_41

コストに関する補足

同一リージョン内の共有

同一リージョン内で Private Listing を使う場合、データのコピー・転送は発生しない ため、プロバイダー側に追加コストは基本的に発生しません。コンシューマーが負担するのはクエリ実行時のコンピュートコストのみです。

クロスクラウド / クロスリージョンの共有(Auto-fulfillment)

異なるリージョンやクラウド間で共有する場合、Auto-fulfillment によりプロバイダー負担で以下のコストが発生します。

コスト区分 内容
コンピュート データコピー・状態管理のためのクエリ実行コスト
ストレージ Secure Share Area(SSA)上のデータ保存コスト
データ転送(エグレス) リージョン間・クラウド間のデータ転送料金

コスト管理のポイント:

  • リフレッシュ頻度を業務要件に合わせて最適化する(頻度が高いほどコスト増)
  • 共有対象のオブジェクトを必要最小限に絞る
  • 不要になったリスティングは削除する

考慮事項・注意点

項目 内容
読み取り専用 コンシューマー側の共有データは読み取り専用。書き込み・変更はできない
セキュアビュー推奨 共有オブジェクトにはセキュアビューの使用が推奨される。ビュー定義の隠蔽やアクセス制御に有効
識別子命名規則 大文字・英数字の非引用識別子を使用するとコンシューマーが使いやすい
1シェア1リスティング 1つの Share は1つのリスティングにのみアタッチ可能。複数リスティングを提供する場合は別々の Share を作成する
Auto-fulfillment コスト クロスクラウド / クロスリージョン共有はプロバイダー負担のコスト(コンピュート、ストレージ、転送)が発生する
データ更新の反映 同一リージョン: リアルタイム反映 / クロスリージョン: Auto-fulfillment のリフレッシュ間隔に依存
トライアルアカウント 指定コンシューマーへのプライベート共有自体は可能だが、Auto-fulfillment は利用不可。Marketplace での提供も不可。クロスクラウドの Private Listing には full account が必要
データサイズ上限 Auto-fulfillment は 10TB が上限(超過時は Snowflake サポートに連絡)

まとめ

Private Listing は、特定のアカウントに対して安全にデータを共有する手段として非常に実用的です。同一リージョン内であればデータコピーなしでリアルタイムに共有でき、異なるクラウド間でも Auto-fulfillment により自動的にデータが同期されます。

ただし、クロスクラウド共有の場合は Auto-fulfillment のコスト(コンピュート・ストレージ・データ転送)がプロバイダー負担で発生するため、共有対象やリフレッシュ頻度を業務要件に合わせて設計することが重要です。

参考

この記事が何かの参考になれば幸いです!


Snowflakeの導入支援はクラスメソッドに!

クラスメソッドでは Snowflake の導入を支援しております。
製品の詳細や支援の内容についてお気軽にお問い合わせください。

Snowflakeの詳細を見る

この記事をシェアする

関連記事