Workload identity federation で Salesforce Data Cloud から Snowflake への Data Federation を試してみた

Workload identity federation で Salesforce Data Cloud から Snowflake への Data Federation を試してみた

2025.10.25

はじめに

Salesforce Data Cloud の Snowflake への Data Federation を Workload identity federation で試してみましたので、本記事で内容をまとめてみます。

機能概要

Data Cloud では Zero Copy Integration として Snowflake や BigQuery などの DWH と双方向でデータ連携が行えるサービスを提供しています。

この機能の要素として以下があります。

  • Data Shares(Bring Your Own Lake Data Shares)
    • Data Cloud 内のオブジェクトを DWH に共有できる機能
    • 各 DWH 側から Data Cloud のデータをクエリできる

こちらは以下の記事で試しています。

https://dev.classmethod.jp/articles/salesforce-data-cloud-snowflake-data-share-try/

  • Zero Copy Data Federation(Bring Your Own Lake Data Federation)
    • 外部のデータレイクまたは DWH のデータに Data Cloud からクエリできる機能

後者の Zero Copy Data Federation では、その認証方式としてこれまではキーペアがサポートされていました。2025年8月の Snowflake 側のアップデートで、AWS、Azure などのプラットフォームから Snowflake への認証をより安全かつシンプルに行える機能である Workload identity federation が一般提供となりました。

Snowflake 向けの Zero Copy Data Federation では、Salesforce 側が OpenID Connect(OIDC)対応の外部 Identity Provider として機能することで、Workload にアクセスするユーザーを認証できます。これにより、キーペアなどの静的なシークレットを参照または保存することなくアクセスを許可でき、セキュリティの強化や、簡素化のメリットを受けられます。

https://www.snowflake.com/en/blog/simplify-authentication-workload-identity-federation/

https://docs.snowflake.com/user-guide/workload-identity-federation#authenticate-to-snowflake-using-a-custom-openid-connect-oidc-provider

試してみる

手順は以下に記載があるので、こちらに沿って進めます。

https://developer.salesforce.com/docs/data/data-cloud-int/guide/c360-a-set-up-data-federation-snowflake-connection.html

前提条件

以下の環境で検証しています。

  • Salesforce Developer Edition

サインイン方法は以下の記事が参考になると思います。

https://dev.classmethod.jp/articles/salesforce-developer-edition-sign-up/

事前準備

Data Cloud 側のマイドメインの情報が必要となるので、事前に確認しておきます。

設定から「Developer Console(開発者コンソール)」にアクセスします。

image

開発者コンソールが開いたら、メニューバーから「Debug > Open Execute Anonymous Window」を選択します。

image 1

ウィンドウが開くので以下を実行します。

String myDomainHost = System.Url.getOrgDomainUrl().getHost();
System.debug('My Domain Host: ' + myDomainHost);

実行後「Logs」タブから対象のログをダブルクリックすると、下図のようにログの詳細が表示されます。

image 2

以下のような形式でした。

xxxxx.xxxxx.my.salesforce.com

ネットワークアクセス制御

ここでは設定していませんが、Data Cloud サービスで使用される IP アドレスの範囲が公開されているので、Snowflake 側でネットワークポリシーを対象のサービスユーザーに設定することが推奨されます。

https://help.salesforce.com/s/articleView?language=ja&id=sf.c360_a_data_cloud_ip_address_allowlist.htm&type=5&_ga=2.205960083.1870833293.1761307672-256683782.1744180516

Data Cloud 側:コネクタの作成

Data Cloud 画面右上の歯車マークから「Data Cloud 設定」に移動し「外部インテグレーション」メニュー内の「Snowflake」をクリックします。

image 3

これまでにコネクションを作成していなければ、下図の表示になるので、Snowflakeをクリックし「次へ」を選択します。

image 4

下図の画面になるので、「Salesforce IDP 認証を使用」をオンにします。

image 5

すると「外部ID」が表示されるので、安全な場所に控えておきます。

※トグルを再度切り替えたり、前の画面に戻るなどするとIDの値が変わるので、Salesforce 側の担当者が異なる場合、同時に作業できるようにしておくとよいと思います。

Snowflake 側:Workload アクセス用のサービスユーザーを作成

上記の外部IDを使用する専用のユーザーを作成します。あわせてロールの作成、付与も行っています。外部IDやマイドメインが異なる場合、ユーザー作成時にエラーとなります。

-- 専用ロールの作成
CREATE ROLE IF NOT EXISTS DATACLOUD_SF_ROLE;

-- ウェアハウス、データベース、スキーマの使用権限を付与
GRANT USAGE ON WAREHOUSE compute_wh TO ROLE DATACLOUD_SF_ROLE;
GRANT USAGE ON DATABASE test_db TO ROLE DATACLOUD_SF_ROLE;
GRANT USAGE ON SCHEMA test_db.public TO ROLE DATACLOUD_SF_ROLE;

-- データ読み取り権限の付与(必要な範囲)
GRANT SELECT ON ALL TABLES IN SCHEMA test_db.public TO ROLE DATACLOUD_SF_ROLE;

-- サービスユーザーを作成
CREATE OR REPLACE USER sf_oidc_user
     WORKLOAD_IDENTITY =
    (
    TYPE = OIDC ISSUER='https://<マイドメインで取得した値>.my.salesforce.com/services/connectors'
    SUBJECT = '<外部ID>'
    OIDC_AUDIENCE_LIST =('https://<マイドメインで取得した値>.my.salesforce.com')
    )
    TYPE = SERVICE
    DEFAULT_ROLE = DATACLOUD_SF_ROLE;

-- サービスユーザーに作成したロールを付与
GRANT ROLE DATACLOUD_SF_ROLE TO USER sf_oidc_user;

ユーザー作成後、ユーザー名を Data Cloud 側で使用します。

Data Cloud 側:接続の作成

ユーザー作成後、Data Cloud 側で先の続きから作業します。各種情報を入力し「次へ」をクリックします。

image 6

次の画面で使用するウェアハウスを指定します。

image 7

保存するとコネクタとして作成され、しばらくすると「接続状況」も「有効」となります。

image 8

Data Cloud から Snowflake のデータを参照

Snowflake のテーブルからデータストリームを作成してみます。データストリームメニューから「新規」をクリックし下図の「Snowflake」をクリックします。

image 10

コネクタを指定すると、対象のサービスユーザーでアクセス可能なテーブルが表示されます。

image 11

各種設定を行います。

image 12

image 13

「リリース」後、データストリームオブジェクトとして確認できます。

image 14

さいごに

Salesforce Data Cloud の Snowflake への Data Federation を Workload identity federation で試してみました。認証資格情報を管理することなくセキュアな構成とできるので、ぜひ使っていきたい方法と思います。
こちらの内容が何かの参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事