はじめに
こんにちは!STS技術チームです。
私たちは日々、Snowflakeを活用したデータ基盤の構築・運用に取り組んでいます。
今回ご紹介する内容は、Openflowを用いてSharePointとSnowflakeを連携する方法です。SharePointは多くの企業で利用されているファイル共有ツールであり、業務データが蓄積される重要な場所の一つです。Openflowを用いることで、SharePoint上の様々なファイルなどをSnowflakeへ自動的に取り込み、データ分析基盤として活用できるようになります。
本記事では、OpenflowでSharePoint上のExcelファイルをSnowflakeの内部ステージに連携する方法をご紹介します。また、Azureでのアプリケーション登録からOpenflowの構築、コネクタの設定まで、実際の手順を分かりやすく解説していきます。
本記事でわかること
- Microsoft Entra IDへのアプリケーション登録方法
- SharePoint にアクセスするためのAPIアクセス許可の設定方法
- Openflowデプロイメント、ランタイムの構築手順
- Openflowコネクタのインストール、および設定手順
- Openflowコネクタを実行し、SharePointのファイルをSnowflakeへ連携する手順
概要
Openflowは、Snowflakeが提供するデータ統合ツールで、GUI操作でデータパイプラインを構築できるサービスです。様々なデータソースからSnowflakeへのデータ取り込みを容易に実現できます。
本記事では、以下の流れでSharePointとSnowflakeを連携させるために必要となるOpenflowの構築手順を解説します。
- Azure へのアプリケーションの登録
- Openflowデプロイメント、ランタイムの構築
- Openflowコネクタの設定、実行
前提事項
- Azureへのアプリケーションの登録には、Microsoft Entra IDの管理者権限が必要
- Openflowの初期セットアップには、ACCOUNTADMINロールを持つSnowflakeユーザーが必要
- Openflowはデプロイメントやランタイムが起動している時間分だけ課金される
構築手順
1. Azureへのアプリケーションの登録
1-1. アプリケーションの登録
まずは、SnowflakeからSharePointにアクセスするためのアプリケーションをMicrosoft Entra IDに登録します。
- Azure Portalにログイン
- 「Microsoft Entra ID」を開く

- 管理 > アプリの登録 > 「+ 新規登録」の順にクリック

- 名前、サポートされているアカウントの種類を設定し、「登録」をクリック

1-2. APIアクセス許可の設定
次に、SharePointにアクセスするためのAPIアクセス許可の設定を行います。
- 登録したアプリケーションを選択し、
管理 > APIのアクセス許可 > 「+ アクセス許可の追加」の順にクリック

- Microsoft Graph > アプリケーションの許可 の順にクリック

- 以下の権限を選択し、「アクセス許可の追加」をクリック
- Sites.Selected:選択したサイトへのアクセス
※検索バーを活用し、上記の権限を選択した状態で「アクセス許可の追加」をクリックしてください。

1-3. 対象SharePointサイトへのアプリ権限付与
Sites.Selected 権限は、Microsoft Entra ID 上で管理者同意を実施しただけでは利用できません。
対象となる SharePoint サイトに、アプリケーションへ明示的にアクセス権を付与する必要があります。
- 対象サイトに FullControl 権限を付与
この権限付与は、PnP PowerShell や Microsoft Graph API を利用して実施します。
実施方法については、以下のドキュメントをご参照ください。

1-4. アプリケーション情報の取得
Openflowコネクタの設定に必要なアプリケーション情報を取得し、控えておきます。
取得する情報
- SharePointサイトURL
- SharePointクライアントID
- SharePointテナントID
- SharePointクライアントシークレット
SharePointサイトURL の取得
- 連携対象のSharePointサイトのURLを取得し、控えておく
例)https://<yourdomain>.sharepoint.com/sites/<YourSiteName>
SharePointクライアントID の取得
- 登録したアプリケーションを選択し、概要から「アプリケーション(クライアント)ID」の値をコピーし、控えておく

SharePointテナントID の取得
- 登録したアプリケーションを選択し、概要から「ディレクトリ (テナント) ID」の値をコピーし、控えておく

SharePointクライアントシークレット の取得
- アプリを選択し、管理 > 証明書とシークレット > クライアントシークレット > 「+ 新しいクライアントシークレット」 の順にクリック

- 説明、有効期限を設定し、「追加」 をクリック

- 作成されたシークレットの「値」をコピーし、
安全な場所(パスワードマネージャーなど)に保管する
※コピーせずに他ページに遷移した場合、値がマスキングされ、参照できなくなります。
その場合は、再度クライアントシークレットを追加してください。

2. Openflowデプロイメント、ランタイムの構築
2-1. Snowflakeオブジェクトの作成(任意)
以下のSQLを実行し、Openflowで使用するSnowflakeオブジェクト(データベース、スキーマ、ウェアハウス)を作成します。
既存のオブジェクトを使用する場合は、この手順をスキップしてください。
-- 1. Warehouse作成
USE ROLE SYSADMIN;
CREATE WAREHOUSE IF NOT EXISTS <OPENFLOW_WAREHOUSE>
WITH WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED = TRUE;
-- 2. Database作成
USE ROLE SYSADMIN;
CREATE DATABASE IF NOT EXISTS <OPENFLOW_DATABASE>;
-- 3. Schema作成
USE ROLE SYSADMIN;
CREATE SCHEMA IF NOT EXISTS <OPENFLOW_DATABASE>.<OPENFLOW_SCHEMA>;2-2. Snowflakeコアの設定
Openflowデプロイメントの構築に入る前に、Openflow管理者ロールの作成、必要な権限付与を行います。
- OPENFLOW_ADMINロールを作成
USE ROLE ACCOUNTADMIN;
CREATE ROLE IF NOT EXISTS OPENFLOW_ADMIN;
GRANT ROLE OPENFLOW_ADMIN TO USER <OPENFLOW_USER>;- 必要な権限を設定
USE ROLE ACCOUNTADMIN;
GRANT CREATE ROLE ON ACCOUNT TO ROLE OPENFLOW_ADMIN;
GRANT CREATE OPENFLOW DATA PLANE INTEGRATION ON ACCOUNT TO ROLE OPENFLOW_ADMIN;
GRANT CREATE OPENFLOW RUNTIME INTEGRATION ON ACCOUNT TO ROLE OPENFLOW_ADMIN;
GRANT CREATE COMPUTE POOL ON ACCOUNT TO ROLE OPENFLOW_ADMIN;2-3. Openflowデプロイメントの作成
Openflowデプロイメントとは、Openflowで動作するランタイムやコネクタを、用途やチームごとに分けて管理し、ワークロードを分離するための仕組みです。
噛み砕いて言うと、「Openflowの実行環境(ランタイム)を入れる箱」のようなものです。
Snowflakeのコア設定の完了後、Openflowデプロイメントを作成します。
- Snowsightにサインインし、取り込み > 「Openflow」の順でクリック

- 「Openflowを起動」をクリック

- Openflowのユーザーインターフェースへ遷移後、「Create a deployment」をクリック

- 「Next」をクリック

- 「Snowflake」を選択し、デプロイメントの名前を入力して「Next」をクリック

- 「Create a deployment」をクリック

- デプロイメントが作成され、ステータスが「Active」になっていることを確認
※15~20分ほどかかる場合があります。

2-4. ランタイム用ロールの作成
ランタイムの構築に入る前に、ランタイム専用のSnowflakeロールを作成します。
このロールは、ランタイムが必要な操作のみを、適切かつ安全に実行できるようにするために作成します。
- ランタイム用ロールの作成
USE ROLE ACCOUNTADMIN;
CREATE ROLE IF NOT EXISTS OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
GRANT ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME> TO ROLE OPENFLOW_ADMIN;
GRANT ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME> TO USER <OPENFLOW_USER>;- ランタイムが使用するウェアハウスへのアクセス権をロールに付与
GRANT USAGE, OPERATE ON WAREHOUSE <OPENFLOW_WAREHOUSE> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;- ランタイムが使用するSnowflakeオブジェクトへのアクセス権をロールに付与
USE DATABASE <OPENFLOW_DATABASE>;
GRANT USAGE ON DATABASE <OPENFLOW_DATABASE> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
GRANT USAGE ON SCHEMA <OPENFLOW_SCHEMA> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;
GRANT CREATE TABLE, CREATE DYNAMIC TABLE, CREATE STAGE, CREATE SEQUENCE
ON SCHEMA <OPENFLOW_DATABASE>.<OPENFLOW_SCHEMA> TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;2-5. ネットワークルール、および外部アクセス統合(EAI)の作成
ネットワークルールとは、ランタイムがどこに通信してよいかを定義するためのルールです。
外部アクセス統合(EAI)とは、その通信をSnowflakeから正式に許可し、実際に利用可能にするための仕組みです。
Snowflakeでは、ネットワークルールと外部アクセス統合を組み合わせることで、ランタイムから外部システムへの通信を安全に制御します。
- 適切なネットワークルールを作成
USE DATABASE <OPENFLOW_DATABASE>;
CREATE NETWORK RULE IF NOT EXISTS OPENFLOW_<RUNTIMENAME>_NETWORK_RULE
MODE = EGRESS
TYPE = HOST_PORT
VALUE_LIST = (
'graph.microsoft.com:443',
'login.microsoftonline.com:443',
'<yourtenant>.sharepoint.com:443'
);- 外部アクセス統合(EAI)を作成
USE ROLE ACCOUNTADMIN;
CREATE EXTERNAL ACCESS INTEGRATION IF NOT EXISTS OPENFLOW_<RUNTIMENAME>_EAI
ALLOWED_NETWORK_RULES = (OPENFLOW_<RUNTIMENAME>_NETWORK_RULE)
ENABLED = TRUE;- EAIへのアクセス権をランタイム用ロールに付与
USE ROLE ACCOUNTADMIN;
GRANT USAGE ON INTEGRATION OPENFLOW_<RUNTIMENAME>_EAI TO ROLE OPENFLOW_RUNTIME_ROLE_<RUNTIMENAME>;2-6. ランタイムの作成
ランタイムとは、Openflowのデータ連携処理を実際に実行するための実行環境です。
ランタイムの作成を行い、併せてランタイム専用のSnowflakeロールとの関連付けを行います。
- Snowsightにサインインし、取り込み > 「Openflow」 の順でクリック

- 「Openflowを起動」をクリック

- 「Create a runtime」をクリック

- 以下の項目を設定し、「Create」をクリック
- Deployment Name:2-3で作成したデプロイメント
- Runtime Name:ランタイムの名前
- Node Type:ノードタイプ(ノードサイズ)
- Min/Max node:最小・最大ノード数
- Snowflake role:2-4で作成したランタイム用ロール
- External access integration:2-5で作成した外部アクセス統合

- ランタイムが作成され、ステータスが「Active」になっていることを確認
※15~20分ほどかかる場合があります。

3. Openflowコネクタの設定、実行
3-1. SharePoint用Openflowコネクタのインストール
Openflowコネクタとは、特定のデータソースやサービスと連携するために、あらかじめ用意された信頼性の高いデータ連携処理のひな形です。
SnowflakeにはSharePoint用のOpenflowコネクタが用意されており、これをランタイムにインストールして利用します。
- 「View more connectors」をクリック

- 検索バーに「SharePoint」と入力し、「Microsoft SharePoint (Simple Ingest, no document ACLs)」の「install」をクリック

- 2-6で作成したランタイムを選択し、「Add」をクリック

3-2. Openflowコネクタの設定
インストールしたOpenflowコネクタのパラメータを設定します。
事前準備
- 登録したアプリと同じテナントのSharePointに、連携対象のExcelファイルを格納しておく

Destination Parameters の設定(連携先パラメータの設定)
- ランタイムを選択し、Openflowキャンバスを開く

- インストールしたコネクタを右クリックし、「Parameters」をクリック

- SharePoint (Simple Ingest, No ACL) Destination Parameters の
三点リーダー(…)> 「Edit」の順にクリック

- 以下の項目を設定し、「Apply」をクリック
- Destination Database:Snowflake のデータベース名
- Destination Schema:Snowflake のスキーマ名
- Snowflake Account Identifier:空欄
- Snowflake Authentication Strategy:SNOWFLAKE_MANAGED_TOKEN
- Snowflake Private Key:空欄
- Snowflake Private Key File:空欄
- Snowflake Private Key Password:空欄
- Snowflake Role:2-4で作成したランタイム用ロール
- Snowflake Username:空欄
- Snowflake Warehouse:使用するウェアハウス名

Source Parameters の設定(連携元パラメータの設定)
- SharePoint (Simple Ingest, No ACL) Source Parameters の
三点リーダー(…)> 「Edit」の順にクリック

- 以下の項目を設定し、「Apply」をクリック
- SharePoint Client ID:1-4で取得したSharePointクライアントID
- SharePoint Client Secret:1-4で取得したSharePointクライアントシークレット
- SharePoint Site URL:1-4で取得したSharePointサイトURL
- SharePoint Tenant ID:1-4で取得したSharePointテナントID

Ingestion Parameters の設定(取り込みパラメータの設定)
- SharePoint (Simple Ingest, No ACL) Ingestion Parameter の
三点リーダー(…)> 「Edit」の順にクリック

- 以下の項目を設定し、「Apply」をクリック
- Sharepoint Document Library Name:SharePointのドキュメントライブラリ名
- SharePoint Source Folder:SharePointのフォルダパス

不要なコネクタサービスを削除
- コネクタを右クリックし、「Controller services」をクリック

- StandardPrivateKeyService の三点リーダー(…)> 「Delete」の順にクリック

コネクタサービスを許可
- コネクタを右クリックし、「Enable all controller services」をクリック

3-3. Openflowコネクタの実行
設定したコネクタを実行し、SharePointからSnowflakeへデータを取り込みます。
Openflowコネクタを実行
- コネクタを右クリックし、「Start」をクリック

実行結果の確認
- Snowflakeに内部ステージが作成され、
SharePointのExcelファイルが取り込まれていることを確認


Openflowのスケジュール設定方法
以下の方法で、自動取り込みのスケジュール(頻度)を設定できます。
- Openflowキャンバスのコネクタをダブルクリックし、
「Capture Sharepoint Changes」を選択

- Yield durationに自動取り込みの頻度を設定
※以下の設定値の場合、10分おきに自動取り込みが行われます。

Openflowにおける差分更新の仕様
Openflowにおける差分更新の仕様について検証したところ、
以下のような結果になることを確認しました。
- SharePoint側で変更がない場合
→ファイルは連携されない - SharePointにファイルを新規追加した場合
→新規ファイルとしてSnowflakeに連携される - SharePointファイルの内容を更新した場合
→連携され、Snowflakeの既存ファイルが上書きされる - SharePointファイルの名称を変更した場合
→連携され、Snowflakeの既存ファイルは残り続ける - SharePointファイルを削除した場合
→削除は反映されず、Snowflakeの既存ファイルは残り続ける
まとめ
Openflowを活用してSharePointとSnowflakeを連携する方法について解説しました。
ポイントは以下のとおりです。
- セキュアな連携
Microsoft Entra ID におけるアプリケーション登録と、適切な API アクセス許可の設定により、セキュアな連携を実現できる
- Openflowの構築は段階的に実施
デプロイメント、ロール、ランタイムを段階的に構築することで、適切なロール設計や権限管理を行う
- コネクタの設定はシンプル
必要なパラメータを設定するだけで、SharePointからSnowflakeへのデータ取り込みを自動化できる
この連携により、SharePointに保存された業務データを自動的にSnowflakeへ取り込み、BIツールや機械学習モデルでの活用が容易になります。
既存のSharePoint資産とSnowflakeの強力な分析基盤を組み合わせることで、よりデータドリブンな意思決定を支援できるでしょう。
ぜひ、皆さんの環境でも
Openflowを使ったSharePoint × Snowflakeの連携を試してみてください!
参考
- Microsoft公式ドキュメント


- Snowflake公式ドキュメント


コメント