
Snowflake Openflow の SharePoint コネクタで取り込んだドキュメントに Snowflake Intelligence から問い合わせてみた
こんにちは、データ事業本部のキタガワです。
今回は Snowflake Openflow の SharePoint 用コネクタについての接続検証を行ったので、その手順をまとめます。
Snowflake Openflow は Snowflake 上でデータパイプラインを構築・管理するためのフルマネージドデータ統合サービスで、Apache NiFi をベースに作られています。豊富なコネクタが特徴で、構造化データだけでなく、画像・音声・動画など非構造化データも取り込むことができます。バッチとストリーミングどちらにも対応しているところもポイントですね。
このブログでは SharePoint / Entra ID の設定にフォーカスし、Openflow コネクタの設定から Snowflake Intelligence での問い合わせまでの流れを紹介します。
Openflow 自体のセットアップや SharePoint コネクタの詳細は以下の記事が参考になります。このブログで省略している部分は以下の記事を参照してください。
Snowflake 側の基本セットアップ( Deployment ・ runtime の作成等)はこちら。
Openflow UI の操作やコネクタのパラメータ詳細はこちらが詳しいです。
前提
以下のリソースはすでに利用可能な状態にあるとします。
- Snowflake 商用アカウント(トライアルアカウントでは Openflow を利用できません)
- SharePoint 取り込み対象のサイト
- Azure Entra ID
また、Openflow の Deployment と runtime は作成済みの前提で進めます。まだの方は上記 devio 記事の「Snowflake 側の準備」セクションを参照してください。ただし、network rule で指定するドメインは SharePoint 用に読み替える必要があります(後述)。
Openflow のデプロイ方法には Openflow - Snowflake Deployments(SPCS) と BYOC が選べます。ここでは SPCS へのデプロイを行います。
SharePoint コネクタの公式ドキュメントは以下を参照してください。
全体の流れ
設定はおおまかに以下の流れで行います。すでに作成されているリソースがある場合は適宜スキップしてください。
- SharePoint / Entra ID の設定
- Microsoft Graph アプリを登録
- 対象サイトにアプリ権限を付与
- クライアントシークレットを作成
- Openflow に渡す値を控える
- Snowflake の設定
- SharePoint 用の network rule / EAI を作成
- Openflow SharePoint コネクタの設定
- コネクタを runtime に追加
- Parameters を設定
- Controller Services を有効化して Start
- 動作検証
- Snowflake Intelligence での問い合わせ
SharePoint / Entra ID の設定
Microsoft Graph アプリを登録
下記を参考に Microsoft Graph アプリを登録します。
Microsoft Entra 管理センターから アプリの登録 > 新規登録 を選択します。
「名前」「サポートされているアカウントの種類」を設定して「登録」をクリックします。リダイレクトURIは空欄のままにしてください。

次に、登録したアプリに権限を付与します。必要な権限は SharePoint 用コネクタの種類によって異なります。
ここでは Cortex Search, no document ACLs のコネクタを使用するのでアプリには Sites.Selected のみを付与します。
先ほど登録したアプリのホーム画面から API のアクセス許可 > アクセス許可の追加 > Microsoft Graph > アプリケーションの許可を選びます。検索欄に Sites.Selected を入力して Sites.Selected を選択して「アクセス許可の追加」をクリックします。管理者の同意が必要な旨が表示されていると思うので同意ボタンをクリックしてください。

「状態」列が緑のチェックマークになればOKです。
対象サイトにアプリ権限を付与
次に、このアプリが対象のSharePointサイトにアクセスできるように権限を付与します。Snowflakeでは fullcontrol のロールを推奨しています。ロールの付与は PnP PowerShell または Microsoft Graph の site permission endpoint で行えます。ここでは Graph API を使用します。
Graph API は Graph Explorer から実行すると便利です。サイト権限の管理には、Microsoft Graph 上で Sites.FullControl.All が必要となります。この後の設定で権限エラーとなる場合は実行するユーザーの権限を確認してください。
権限を付与するにはまず対象サイトの siteId を取得する必要があります。例えば以下のようなリクエストを投げると対象サイトの情報が取得できます。
GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/Finance
このレスポンスの id が対象サイトの siteId です。 "id": "contoso.sharepoint.com,2C712604-1370-44E7-A1F5-426573FDA80A,2D2244C3-251A-49EA-93A8-39E1C3A060FE" のような形式になっています。
siteId を取得したら、サイトに対するアプリ権限付与は POST /sites/{siteId}/permissions で行えます。以下のようなリクエストを投げます。
アプリの Client ID と Display Name はアプリの概要画面から確認できます。
POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Content-Type: application/json
{
"roles": ["fullcontrol"],
"grantedToIdentities": [
{
"application": {
"id": "<対象アプリの Client ID>",
"displayName": "<対象アプリ名>"
}
}
]
}
成功すると、201 Created と permission オブジェクトが返ります。
付与後は、GET /sites/{siteId}/permissions で結果を確認できます。roles に fullcontrol が追加されていればOKです。
クライアントシークレットを作成
最後にクライアントシークレットを作成します。
アプリのホーム画面から証明書とシークレット > クライアントシークレット > 新しいクライアントシークレット を選択します。
必要に応じて説明の入力と有効期限を設定し、「追加」をクリックします。

作成されたシークレットの値をコピーして保管してください。この値はページを閉じると二度と確認できないので注意してください。
Openflow に渡す値を控える
ここまでで Graph アプリの設定は完了です。
必要な以下の情報を Openflow に渡すために控えておきます。
- アプリの client ID
- アプリの client secret
- アプリの tenant ID
- SharePoint サイトの URL (例:
https://yourtenant.sharepoint.com/sites/YourSite)
Snowflake の設定
Openflow の Deployment と runtime の作成手順はこちらの記事の「Snowflake 側の準備」を参照してください。
ここでは SharePoint 固有の設定として、ネットワークルールと外部アクセス統合(EAI)の作成について説明します。
SharePoint 用の network rule / EAI を作成
SharePoint コネクタが外部の Microsoft サービスと通信できるように、network rule と EAI を作成します。上記ブログで network rule の作成時に指定しているドメインを SharePoint 用に変更します。許可する必要のあるドメインは Snowflake の公式ドキュメントに記載のある以下の4つです。
company-domain.sharepoint.comgraph.microsoft.com:80graph.microsoft.com:443login.microsoftonline.com
SQLの例は以下のようになります。
-- Create schema for network rules
USE ROLE ACCOUNTADMIN;
CREATE SCHEMA IF NOT EXISTS KITAGAWA_TEST_DB.NETWORKS;
-- Create network rule for SharePoint
CREATE OR REPLACE NETWORK RULE sharepoint_network_rule
MODE = EGRESS
TYPE = HOST_PORT
VALUE_LIST = (
'company-domain.sharepoint.com',
'graph.microsoft.com:80',
'graph.microsoft.com:443',
'login.microsoftonline.com'
);
-- Create external access integration with network rules
CREATE OR REPLACE EXTERNAL ACCESS INTEGRATION quickstart_access
ALLOWED_NETWORK_RULES = (sharepoint_network_rule)
ENABLED = TRUE;
-- Grant usage to runtime role
GRANT USAGE ON INTEGRATION quickstart_access TO ROLE QUICKSTART_ROLE;
Openflow SharePoint コネクタの設定
ここからは Openflow のコンソール画面から操作を行います。
コネクタを runtime に追加
SharePoint のコネクタを検索し、Cortex Search, no document ACLs を runtime にインストールします。


Parameters を設定
コネクタの Parameters を入力します。パラメータの全体像や各項目の詳細については Zenn 記事 が詳しいので、ここでは前のステップで控えた Entra ID の値との対応を中心に説明します。
Entra ID で控えた値は以下のパラメータにそれぞれ入力します。
| Entra ID で控えた値 | Openflow パラメータ |
|---|---|
| client ID | SharePoint Client ID |
| client secret | SharePoint Client Secret |
| tenant ID | SharePoint Tenant ID |
| SharePoint サイトの URL | SharePoint Site URL |
その他、データ格納先(Destination Database / Schema、Snowflake Role / Warehouse 等)や取り込み設定(SharePoint Source Folder、File Extensions To Ingest、OCR Mode 等)を環境に合わせて設定します。
Controller Services を有効化して Start
設定後、canvas 上で Enable all Controller Services を実行し、その後 process group を Start します。問題なくパラメータ設定ができていると、Snowflake 上の指定したスキーマにテーブルなどが作成されているはずです。

DOCS_CHUNKS テーブルにはドキュメントのチャンク化されたデータが格納されています。また FILE_HASHES テーブルには取り込んだファイルのハッシュ値やドキュメントの ID などが格納されています。今回は Cortex Search に対応したコネクタを使用しているので、Cortex Search Service も作成されていますね。
動作検証
Snowflake Intelligence での問い合わせ
SharePoint から取り込んだドキュメントに対して、Snowflake Intelligence から自然言語で問い合わせてみます。Snowflake Intelligence 用のロールの作成と対象DB・スキーマ・Cortex Search の USAGE 権限付与は必要に応じておこなってください。
Snowflake Intelligence から Cortex Search を呼び出すには、まず Agent を作成する必要があります。Snowsight の AI & ML > Agents と進み、「Create Agent」をクリックします。Openflow のデータ格納先として設定したデータベース・スキーマを選択し、Agent の名前を入力して「Create Agent」をクリックします。

Agent が作成されたら Tools タブから Cortex Search を選択し、「Create Cortex Search」をクリックします。Openflow で自動的に作られた Cortex Search Service を選択して「Add」をクリックします。
ID Column には WEB_URL を、Title Column には FULL_NAME を選択しました。

これで作成した Agent が Openflow によって作られた Cortex Search Service を使用できるようになりました。
次に Snowsight の AI & ML > Snowflake Intelligence へ進みます。チャットの入力欄下部に Agent 選択ボタンが表示されているので作成した Agent を選択します。

実際に問い合わせてみます。

無事 Cortex Search が正常に呼び出され、SharePoint のドキュメントに関する情報が取得できました。(ここでは参考に政府統計サイト e-stat からダウンロードした 平成13年民間企業退職金実態調査 を SharePoint にアップロードし、それを取り込んでいます。特に深い意図はないです。)
Agent の Cortex Search Service 設定時に WEB_URL を ID Column に設定したため、回答にはファイルのURLのハイパーリンクも表示されており、これをクリックすることで SharePoint のドキュメントを直接閲覧することもできます。
まとめ
Openflow の SharePoint コネクタを使って、SharePoint サイトのドキュメントを Snowflake に取り込み、Snowflake Intelligence から問い合わせるまでの流れを紹介しました。
設定の大半は Entra ID 側の Graph アプリ登録とサイト権限付与です。ここさえ押さえれば Openflow 側の設定はスムーズに進むと思います。Openflow の基本セットアップやコネクタのパラメータ詳細は、冒頭で紹介した関連記事も合わせて参照してください。
それではまた次の記事でお会いしましょう。
参考







