はじめに
Snowflake Cortex Agentsを利用して、Microsoft TeamsやMicrosoft 365 CopilotからSnowflake内のデータを直接参照・分析できるエージェント兼Teamsアプリ「Snowflake Cortex Agents」を試してみました。
一通り試してみて、なかなか日系企業での商用の利用はハードルが高いなあと感じました。ただ、その一方で学びが多いと思える部分もたくさんあったので、今回まとめてみます。
Snowflake初心者なので間違った部分などがあれば指摘ください<(_ _)>
どんなことができる?
一度設定すると、TeamsやCopilot Chat内でCortex Agentを利用できるようになります。
たとえば、、
- Snowsight等開かずに、あのデータどうだっけ、、、と聞いたり
- 出力された内容をWordでドキュメントにしたり
- 社内情報と混ぜ混ぜしながら成果物を作成することができます。
Snowflakeを基盤にデータ活用している会社はいちいちSnowsightを開かずに分析やデータ抽出等ができるので、非常に便利な機能だと思います。
ありがたいドキュメント
ありがたいことにSnowflake側でドキュメントとハンズオン(ちょっと雑)が用意されています。ハンズオンドキュメントは英語ですが、ブラウザの翻訳機能等で日本語にしましょう。
▼ドキュメント
▼ハンズオン
セットアップ自体はそのまま従えば進められますが、実際に動かすまでにはいくつか権限やリージョンに関する関門がありましたのでまとめてみました。
構築手順
ハマったポイントの前に構築の概要から共有します。
アカウントの準備
-
Snowflake側:今回の検証ではACCOUNTADMINを利用しました
DB作成や各種Cortex機能が使えるロール+SECURITY INTEGRATION オブジェクトを作成できるロール+後述しますがCortexの推論が有効なクロスリージョン設定が許可された環境も必要です。 -
Microsoftテナント側:今回の検証ではグローバル管理者で実施しました
Microsoft 365管理者相当(Entra管理センター・Teams管理センターもいじれる)の権限が必要です。
設定に利用する上記の2つのアカウントは、同じメールアドレスである必要があるので注意です。(ガイドラインに後出しで書いてある…)
今回は個人テナントでの検証なので、超強力権限同士で実施しましたが、商用で作成する場合はより細かい権限設計が必要かと思います。
環境構築のざっくり手順
-
Snowflake 側の準備: Cortex Search、Cortex Analyst、およびCortex Agent の作成。データ等はハンズオンで準備されています。
-
Microsoftテナントとの統合設定: Snowflake内でセキュリティ統合(External OAuth)を作成します。
-
Microsoftテナント側でのEntra ID管理センターでの同意: 管理者権限によるエンタープライズアプリ実行の許可。(ちょうど @Takashi_Masumori さんに別件で教えてもらった内容がでてきてびっくりしました!)
-
Teamsアプリのデプロイ:Teams管理センターから、アプリを展開します。管理者側でアプリの認証の実施。
詳しいやり方はハンズオンドキュメントをご覧ください。
ハマりどころまとめ
セットアップの際、特に以下の点で躓きやすいと感じました。
1. Cortexの推論にはクロスリージョン設定が必須
Snowflake Cortexのモデルは、すべてのリージョンでネイティブに動作しているわけではありません。特に日本リージョンの場合、設定なしではモデルを呼び出せません。
クロスリージョン設定していないと、推論を必要とする部分で以下のようなエラーが出ます(ドキュメントつきでエラー出してくれるのありがたい…)
そのため、以下のコマンドを実行して、他リージョンでの推論を明示的に許可する必要があります。
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION';
▼クロスリージョンについて
▼対応リージョン状況
実際に企業で商用利用する場合は、海外のデータセンターを利用することになるため、導入のハードルは高そうです。(のちほど連携の部分で、AzureのほうでもUSリージョン挟む設定に同意する必要があります)
2. SnowflakeとMicrosoftのログインメールアドレスの一致
ここが地味に重要です。認証を正しく行うためには、Snowflakeと完全に一致している必要があります…。最初に別々のアドレスで実施していて、うまくいかず、やり直しました。
3. Microsoftテナントの管理者権限が必要
Snowflake側の設定だけでなく、Microsoftのテナント側での作業も発生します。今回私はグローバル管理者のロールで作業を実施しました。
Snowflakeアプリケーションに対して、テナント全体への同意を与える必要があります。読み取り内容については後述のスクショの通りですが、GraphAPIによるユーザー情報くらいです。
企業のポリシーによっては、この権限調整に時間がかかる可能性があるため、社内の情シス部門との事前調整が必須となります。
ちなみに認証を実施する際に、テナントIDを入力する部分がありますが、Entra管理センターのこちらから参照できます。
そして、ハンズオンの通り、連携の中でアクセス許可を実施すると…
Entra管理センターにアプリが表示されます。中身を確認すると、GraphAPIでユーザー情報の読み取り権限が与えられてることが確認できます。
4. Snowflake側での環境作成時の強い権限
今回私はACCOUNTADMINで実施しましたが、SECURITY INTEGRATIONオブジェクトを作成できる権限(CREATE INTEGRATION権限)を確保しておく必要があります。
CREATE OR REPLACE SECURITY INTEGRATION entra_id_cortex_agents_integration
TYPE = EXTERNAL_OAUTH
ENABLED = TRUE
EXTERNAL_OAUTH_TYPE = AZURE
EXTERNAL_OAUTH_ISSUER = 'https://login.microsoftonline.com/<TENANT-ID>/v2.0'
EXTERNAL_OAUTH_JWS_KEYS_URL = 'https://login.microsoftonline.com/<TENANT-ID>/discovery/v2.0/keys'
EXTERNAL_OAUTH_AUDIENCE_LIST = ('5a840489-78db-4a42-8772-47be9d833efe') EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = ('email', 'upn')
EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'email_address'
EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE'
この最後の
EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE'
がどうしても有効にならず、以下のDESCRIBEコマンドを打ちながら確認したところ、デフォルトでACCOUNTADMINはブロックリストに入っているため、ENABLEにできないようでした
DESCRIBE SECURITY INTEGRATION entra_id_cortex_agents_integration
対処法としてブロックリストを外してあげることで、対処できましたが。。。
ALTER ACCOUNT SET EXTERNAL_OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST = FALSE
商用で実施する場合は、あんまりよくない設定だとおもうのでACCOUNTADMIN相当の別のロールを作成して実施するのが良いかと思います。
5. Teamsアプリの設定説明が雑
Snowflakeのハンズオンであるため、Teamsからアプリを導入する部分の説明が手薄になっています。
Teams管理センターを開いた後、左ペインのアプリの管理から「Snowflake Cortex Agents」を検索し有効にします。
アプリを有効にする際、一部のメンバーのみに展開することもできるので、Snowflakeを利用している部署やプロジェクトのみ有効にすることも可能です。
実際にTeamsを開き、左ペインのアプリから先ほど有効にした「Snowflake Cortex Agents」アプリを検索し、有効にします。
「追加」を押すと、アプリの画面に遷移し英語で説明が配信されます。

「help」等のコメントを打つと、サインイン画面が出てくるので利用しているEntraIDでサインインします。失敗した場合、グレーアウトして再度押下できないため、もう一度なにかチャットを打って、再びサインイン画面を出すとよいです。

サインイン後はSnowflake管理者として認証が必要です。SnowflakeアカウントのURLを入力しましょう。(次に続く)

6. AzureのUS 2Region への接続同意
Teamsアプリ上で設定を進めていくと、データの処理プロセスの一部として Azure East US 2リージョン(赤枠の機能部分)を経由するデータ接続に関する同意が求められます。
先ほどのクロスリージョン推論同様に、日本国内だけで完結させたい要件がある場合は、この「US 2リージョンへの接続」が許容されるかを事前に検討しておく必要があります。Continueを押せば利用開始可能です!
まとめ
セットアップの鍵は
- つよつよ権限の確保
- リージョンの壁を越えてよいか事前に確認
- Snowの管理者とM365テナントの管理者のメアドを一致させる
設定だけでこんなに文章が長くなってしまったので、実際に使ってみた活用方法についてはまた次の記事で書きたいと思います。













