Microsoft TeamsおよびMicrosoft 365 Copilot対応のCortex Agents¶
概要¶
ほとんどのチームにとって、データインサイトに適宜アクセスすることは、専用の分析プラットフォームと通信ツール間でコンテキストスイッチが起こることを意味し、遅延や生産性の低下を引き起こします。エージェント AI システムをMicrosoft Teamsに統合することで、会話や意思決定が行われる場に直接回答を得られるため、ビジネス全体の情報の流れを加速させることができます。しかし、パワフルで直感的でありながら安全なチャット内分析ソリューションを構築することは極めて大変です。そこで役立つのがSnowflakeです。
Snowflake Cortex AgentsはMicrosoft TeamsおよびMicrosoft 365 Copilotとの統合に対応し、Snowflakeの会話型 AI エージェントをビジネスコミュニケーションプラットフォームに組み込むことができます。ビジネスチームや非技術系ユーザーは、シンプルな自然言語を使用してSnowflakeの構造化データと非構造化データとやり取りし、Teamsチャットやより広範なMicrosoft 365エコシステムを離れることなく、直接的な回答や可視化を受け取ることができます。統合は Microsoft AppSource 経由で使用でき、シームレスにデプロイできます。
主要な機能¶
- 自然言語によるシームレスな分析。 Microsoft TeamsおよびMicrosoft 365 Copilotインターフェース内でインサイトを得られるようにすることで、ビジネスの意思決定者を支援します。技術的な専門知識やカスタムダッシュボードの構築を待つことなく、傾向を発見し、データを分析することができます。ユーザーは会話形式で質問し、LLM を活用した正確な回答をテキスト、表形式、チャート形式で即座に受け取り、データ主導の意思決定を劇的に加速させることができます。 
- 包括的なワークフローのためのデュアルインターフェース。 Microsoft Teams向けのCortex Agentは、さまざまなビジネスニーズをサポートするために、2つの異なるインターフェースを提供します。標準のTeams Applicationでは、Teams Botアプリケーションのチャット内で専用の詳細分析を得られます。また、Microsoft 365 Copilot Agentでは、Microsoft 365 Copilotエコシステム内のより幅広い会話型ワークフロー内で、ターゲットを絞ったSnowflakeのインサイトにアクセスできます。 
- Snowflake Cortex Agentsを活用。 この統合は、Snowflake Cortex Agents API を活用し、データから正確で信頼性の高いインサイトを生成するための複雑な作業に対応します。エージェントシステムは、ユーザーリクエストをインテリジェントに解釈して応答を生成するため、チームは複雑な会話の AI パターンを構築したり、基礎となるモデルを管理したりする必要がなくなります。Snowflake Intelligence で使用したのと同じエージェントを再利用でき、構成とガバナンスの作業の重複を避けられます。 
- エンタープライズグレードのセキュリティとガバナンス。 この統合はSnowflakeのプライバシー重視の基礎に基づいているため、安心して AI 駆動型のユースケースを利用できます。これは次のことを意味します。 - データはSnowflakeのガバナンス境界内に留まります。 ユーザープロンプトはCortex Agents API に送信されますが、回答を生成するために照会されるデータがSnowflakeの安全な環境の外に送信されることはありません。結果として生じる SQL クエリはSnowflake仮想ウェアハウス内で実行されます。 
- Snowflakeのプライバシーおよびガバナンス機能とのシームレスな統合。 統合は、Snowflakeのロールベースのアクセス制御(RBAC)を尊重しています。ユーザーの代わりに実行されるすべてのクエリは、確立された権限を遵守し、ユーザーに対してはアクセス許可のあるデータのみが表示されるようにします。 
 
統合の設定¶
Cortex AgentのMicrosoft Teams統合により、組織の管理者は複数のSnowflakeアカウントを組織内のTeamsおよびCopilotワークスペースに接続できます。統合の設定では、以下にまとめられたいくつかの簡単なステップを行います。
- Azure管理者によるテナント全体の設定。 統合では、Microsoft Azure管理者による1回限りの設定が必要で、Microsoft Entra ID(以前の Azure Active Directory)テナント内のSnowflakeアプリケーションに同意を付与します。このステップでは、統合に対して安全な OAuth 2.0 認証を有効にします。 
- Snowflakeセキュリティ統合。 Azure管理者がテナント全体の設定を完了した後、Snowflake管理者は、Microsoft TeamsまたはM365 Copilotアプリケーションに接続させたい各Snowflakeアカウントのセキュリティ統合を構成する必要があります。このステップにより、統合は各Snowflakeアカウント内の必要なデータに安全にアクセスできるようになります。 
- アカウントをボットにリンク。 セキュリティ統合が構成されると、Snowflake管理者はSnowflakeアカウントをMicrosoft TeamsまたはM365Copilotボットにリンクできます。このステップにより、ボットはSnowflakeアカウントのデータと機能にアクセスできるようになり、ユーザーはTeamsまたはCopilot内で直接データを操作できるようになります。 
前提条件¶
統合プロセスを開始する前に、以下が確立されていることを確認してください。
- 管理者アクセス: この設定では、SnowflakeとMicrosoftテナント両方の管理アクセスが必要です。 
- Snowflakeアカウントのリージョン: Snowflakeアカウントは、Azure US 東部2リージョンでホストされている必要があります。Snowflakeは、将来さらに多くのリージョンをサポートする予定です。 
- Snowflakeの管理者権限: Snowflakeユーザーは、ACCOUNTADMIN または SECURITYADMIN ロールにアクセスできる必要があります。これらの権限は、Snowflakeアカウントで必要なセキュリティ統合オブジェクトを作成するために必要です。 
- Microsoftの管理者権限: Azureユーザーは、Microsoft Entra ID テナントのグローバル管理者権限(または同等のロール)を持っている必要があります。これらの権限は、アプリケーションに必要なテナント全体の管理者の同意を付与するために必要です。 
- Microsoftテナント ID: Snowflake セキュリティ統合を構成するために、組織のMicrosoftテナント ID が必要です。組織のテナント ID の確認については、Azureポータルでのサブスクリプションとテナント IDs の取得 をご参照ください。 
- 個々のユーザーアカウント: すべてのエンドユーザーは、自分のMicrosoftおよびSnowflakeのユーザーアカウントを持っている必要があります。 
- エンドユーザーライセンス: ユーザーは、Microsoft Teamsにアクセスするために、適切なMicrosoftライセンスを持っている必要があります。Microsoft 365 Copilotとの統合を使用する場合は、Copilotライセンスも必要です。 
ステップ1:テナント全体のEntra ID 設定¶
Cortex Agentsの安全な認証を有効にするには、Microsoft Azure管理者が、Snowflakeのテナントでホストされている2つのアプリケーションに対して同意を付与し、Entra ID テナント内のアプリケーションごとに*サービスプリンシパル*を作成する必要があります。2つのアプリケーションは次のとおりです。
- Cortex Agents Bot OAuth リソース: 保護されたSnowflake API を表し、クライアントアプリケーションのアクセス許可(スコープ)を定義します。 
- **Cortex Agents Bot Snowflake OAuth クライアント:**アクセストークンをリクエストした後にSnowflake API を呼び出すクライアントアプリケーションを表します。この場合はTeamsアプリケーションバックエンドサービスを指します。 
これらのアプリケーションに対して同意を付与するための手順は以下のとおりです。プロセスはどちらのアプリケーションも非常によく似ていますが、具体的な権限とスコープは若干異なります。
OAuth リソースプリンシパルへの同意の付与¶
Cortex Agents Bot OAuth リソースアプリケーションのサービスプリンシパルに同意を付与するには、以下を実行します。
- ブラウザーで、 - https://login.microsoftonline.com/<tenant-id>/adminconsent?client_id=5a840489-78db-4a42-8772-47be9d833efeにナビゲートします。この場合、- tenant-idは組織のMicrosoftテナント ID です。- まだサインインしていない場合は、サインインするよう求められます。 - Permission requested ダイアログが表示され、アプリケーションが必要とする権限が表示されます。 
- Accept を選択し、リクエストされた権限を付与します。 
OAuth クライアントプリンシパルへの同意の付与¶
このプロセスは、2つのダイアログを表示します。どちらも OAuth リソースプリンシパルのものと似ていますが、リクエストされる権限は異なります。
Cortex Agents Bot Snowflake OAuth クライアントアプリケーションのサービスプリンシパルに同意を付与するには、以下を実行します。
- ブラウザーで、 - https://login.microsoftonline.com/<tenant-id>/adminconsent?client_id=bfdfa2a2-bce5-4aee-ad3d-41ef70eb5086にナビゲートします。この場合、- tenant-idは組織のMicrosoftテナント ID です。- Permissions requested (1 of 2) ダイアログが表示され、アプリケーションが必要とする権限のセットが 1 つ表示されます。 
- Accept を選択して、リクエストされた権限を付与します。 - 2 つ目の権限ダイアログが表示されます(Permissions requested (2 of 2))。 
- Accept を選択して、リクエストされた権限を付与します。 
重要
次のような、「必要なクエリ文字列パラメーターがありません」というエラーメッセージが表示される場合があります。
{
  "error": {
    "code": "ServiceError",
    "message": "Missing required query string parameter: code. Url = https://unitedstates.token.botframework.com/.auth/web/redirect?admin_consent=True&tenant=<TENANT-ID>"
  }
}
このエラーが表示された場合でも、同意は正常に付与されているため、無視しても大丈夫です。念のため、次のセクションの手順に従って、権限が正常に付与されたことを確認します。
権限の付与の確認¶
両方のアプリケーションに同意を付与した後、Microsoft Entra ID ポータルの Enterprise applications セクションを確認すると、権限が正常に付与されたことを確認できます。
- 必要に応じて、Microsoft Entra管理者センター にログインします。 
- 検索ボックスに「enterprise applications」と入力し、検索結果の Enterprise applications を選択してエンタープライズアプリケーションに移動します。 
- All applications リストに、同意を付与したばかりの2つのアプリケーション(Snowflake Cortex Agents Bot OAuth リソースとSnowflake Cortex Agents Bot OAuth クライアント)があります。これを簡単に行うには、「Snowflake Cortex Agent」を検索します。 - 両方のアプリケーションがリストに表示されれば、権限は正しく付与されています。アプリケーションの1つまたは両方が見つからない場合は、再度同意を付与してみてください。 
ステップ2:Snowflakeセキュリティ統合¶
SnowflakeをMicrosoft Teamsと統合するには、SnowflakeアカウントとEntra ID テナント間で暗号化の信頼を確立する セキュリティ統合 が必要です。このプロセスには以下が必要です。
- Entra ID をSnowflakeの外部 OAuth プロバイダーとして有効化する。 
- 統合用に少なくとも1つのCortex Agentオブジェクトを選択または作成する。 
- 必要なロールと権限を付与して、意図したユーザーがエージェントを呼び出せるようにする。 
Entra ID を外部 OAuth プロバイダーとして有効化する¶
Snowflakeセキュリティ統合オブジェクトは、外部 OAuth プロバイダー(この場合はMicrosoft Entra ID)との統合を表しています。この統合により、SnowflakeはMicrosoft TeamsまたはCopilotにログインしているユーザーを認証できるようになります。
次の SQL ステートメントは、統合を作成するための注釈付きのテンプレートです。このコマンドは、ACCOUNTADMIN 権限を持つロールによって実行する必要があります。tenant-id プレースホルダーをMicrosoft Tenant ID に置き換えます。
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'
このコマンドで使用可能なパラメーターの完全なリファレンスについては、CREATE SECURITY INTEGRATION (外部 OAuth) をご参照ください。
また、 EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM および EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE パラメーターはEntra ID IDをSnowflake IDにリンクさせます。認証が成功するようにするには、JWT で指定されたクレームの値がSnowflakeのユーザーオブジェクトで指定された属性の値と完全に一致する必要があります。Snowflakeが推奨する2つの主な構成は次のとおりです。
- ユーザープリンシパル名によるマッピング(UPN):EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM パラメーターを 'upn' に設定し、EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE パラメーターを 'LOGIN_NAME' に設定します。 
- メールアドレスによるマッピング:EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM パラメーターを 'email' に設定し、EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE パラメーターを 'EMAIL_ADDRESS' に設定します。 
上記のステートメント例では、メールアドレスのマッピング構成を使用していますが、EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM パラメーターで UPN も指定しています。これにより、EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE を変更するだけでマッピングメソッドを変更できます。
ステートメント例は、ユーザーの既定のロールが使用されるように EXTERNAL_OAUTH_ANY_ROLE_MODE も有効にしています。
OAuth スコープの詳細については、スコープ をご参照ください。
ユーザープロビジョニング要件¶
前述のマッピング構成を使用して認証を成功させるには、確実に以下の要件が満たされているようにします。
- Entra ID ユーザーとSnowflake ユーザーとの間に厳密な1対1のマッピングが存在すること。統合を使用するすべてのEntra ID ユーザーに対し、Snowflakeユーザーを指定または作成します。 
- 各Entra ID ユーザーを正確に1つのSnowflakeユーザーにマッピングすること。メールマッピングの場合、Entra ID プライマリメールはSnowflakeユーザーの EMAIL_ADDRESS と正確に一致する必要があります。UPN マッピングの場合、Entra ID UPN はSnowflakeユーザーの LOGIN_NAME と正確に一致する必要があります。 
手動の管理作業を削減するために、オプションで、Entra ID からSnowflakeへの自動ユーザープロビジョニングとデプロビジョニングを構成できます。`自動プロビジョニングの構成 <https://learn.microsoft.com/en-us/entra/identity/saas-apps/snowflake-provisioning-tutorial>`__をご参照ください。
Cortex Agentを作成して構成する¶
セキュリティ統合を作成した後、TeamsまたはMicrosoft 365 Copilot統合が使用するSnowflakeアカウントに1つ以上の:doc:Cortex Agent オブジェクト </user-guide/snowflake-cortex/cortex-agents-rest-api> があることを確認します。
使用したいエージェントがすでに機能している場合は、このステップにこれ以上のアクションは必要ありません。
新しいエージェントを作成するには、次の:ref:`指示 <label_snowflake_agents_create>`に従います。
注釈
すでにSnowflake Intelligenceを使用しており、そのエクスペリエンス用にエージェントを作成している場合は、それらのエージェントを Microsoft Teams および Microsoft 365 Copilot統合で再利用できます。再作成または再構成する必要はありません。エージェントに加えた変更(指示、ツール、基になるオブジェクト、権限など)は、3つのインターフェースすべてにすぐに反映されます。
ユーザーに必要な権限を付与する¶
それにより統合を実行するロール(各ユーザーの既定のロールまたは許可されたセカンダリロール)に、アクセス制御の要件のセクション で説明されている付与があることを確認します。
ステップ3:Teamsアプリを設定し、Snowflakeアカウントを接続する¶
統合プロセスの最後のステップは、Microsoft Teamsアプリケーションを設定し、それを使用するSnowflakeユーザーに接続することです。これには次のタスクを完了する必要があります。
- TeamsストアからCortex Agentアプリをインストールする 
- SnowflakeアカウントをTeamsアプリケーションに接続する 
Teamsストアからアプリをインストールする¶
すべてのユーザーは、Microsoft TeamsストアからCortex Agentアプリをインストールする必要があります。アプリをインストールするには、Teamsアプリストアで「Snowflake Cortex Agents」を検索し、Add をクリックします。
注釈
組織のMicrosoft Teamsポリシーによっては、ユーザーがアプリを利用するには、Teams管理者がアプリを承認する必要がある場合があります。手順については、Teams管理者センターのアプリ管理とガバナンスの概要 をご参照ください。
SnowflakeアカウントをTeamsアプリに接続する¶
TeamsでCortex Agentアプリを操作する最初のユーザーは、Snowflakeアカウントをアプリに接続するよう促されます。このステップを成功させるために、このユーザーはSnowflakeで ACCOUNTADMIN または SECURITYADMINロールを持っている必要があります。
要約すると、Snowflakeの全ユーザーの既定のロールは、Cortex Agentsトピックの アクセス制御要件セクション で説明されているように、エージェントのオブジェクトにアクセスするために必要な権限を持っている必要があります。
セキュリティ統合は、デフォルトで主要なSnowflake管理者ロールをブロックします。したがって、Teams Botを設定するユーザーに既定のロールとして ACCOUNTADMIN などの管理者ロールを使用することはできません。この制限の詳細については、CREATE SECURITY INTEGRATION トピックの BLOCKED_ROLES_LIST をご参照ください。
Snowflakeでは、必要な権限を持つ専用の非管理者ロールを作成し、セットアップユーザーのデフォルトとして設定することを推奨します。もしくは以下のように SECONDARY ROLES メカニズムを使用して、ユーザーが持つプライマリの既定のロールを変更することなく、追加の権限を付与します。
GRANT ROLE <integration_specific_role> TO USER <user_name>;
ALTER USER <user_name> SET DEFAULT_SECONDARY_ROLES = ('ALL');
Teams Botを設定するには、以下の手順に従います。
- プロセスを開始するには、 :ui:`I'm the Snowflake administrator`をクリックします。これは、管理者がTeams用にSnowflakeを構成する必要があることを知らせる通知の下にあります。 
- 示されているSnowflakeアカウント URL を提供し、Connect Snowflake account を選択します。 - アカウント URL を見つけるには、Snowsightにログインし、ページの左下隅にあるアカウントセレクターをクリックします。URL のホスト名部分はメニューの上部に - your-organization-your-account形式で表示されます。完全な URL は- your-organization-your-account.snowflakecomputing.comです。- 設定ウィザードは URL がAzure US 東部2リージョンの有効なSnowflakeインスタンスにつながっていることを検証し、ユーザーがそのインスタンスへのアクセスを持ち、必要な管理者権限を持っていることを確認します。 
設定が最終検証に合格すると、TeamsアプリがSnowflakeアカウントに接続され、エージェントを使用できるようになります。
Tip
SnowflakeアカウントをCortex Teamsアプリに接続したら、必要な権限を持つユーザーでTeamsアプリにログインし、チャットで「新しいアカウントを追加」コマンドを実行することで、同じアプリに追加のSnowflakeアカウントを接続できます。
Cortex Agentsを使用する¶
統合を設定した後、Microsoft Teamsインターフェースにボットが表示され、ユーザーはプライベートチャットでボットと対話できるようになります。ユーザーは自然言語で質問でき、ボットはSnowflakeデータに基づいた回答を返します。
Microsoft 365 Copilotでは、ユーザーはより広範なワークフローのコンテキストでエージェントと対話することができ、Copilotインターフェース内でSnowflakeデータに関する質問や回答をやり取りすることができます。
回答に関するフィードバック(Teamsのみ)¶
ユーザーは、Microsoft Teamsインターフェースでエージェントの応答に関する定性的なフィードバックを直接提供できます(たとえば、回答を役に立つかどうかをマークし、オプションでコメントを追加するなど)。ユーザーは、以前に送信したフィードバックを精査することもできます。手順については、 エージェントのユーザーフィードバックを表示する をご参照ください。
注釈
フィードバック機能はMicrosoft Teamsでのみ利用可能であり、Microsoft 365 Copilotエクスペリエンスではサポートされていません。
アカウントとエージェントの切り替え¶
複数のSnowflakeアカウントを統合に接続できます。接続された各アカウントは、1つ以上のCortex Agentを公開できます。アカウントが接続された後、ユーザーは1回クリックすることで、Teams UI でアカウントとエージェントを切り替えることができます。再認証したり、接続の詳細を再入力したりする必要はありません。アカウントとエージェントを切り替えることで、各ユーザーのセキュリティコンテキストを維持しながら、ビジネスドメイン全体でインサイトを簡単に比較できます(セールスとマーケティングの比較など)。
Tip
UI ではなくコマンドでのやり取りを希望する場合は、会話的にアカウント内のエージェント間で切り替えることもできます(「エージェントを選択」と入力するなど)。
セキュリティに関する考慮事項¶
Microsoft TeamsのCortex Agents統合は、Snowflakeの既存のセキュリティ機能とMicrosoft Entra ID の認証機能を活用して、セキュリティを念頭に置いて設計されています。統合により、ユーザーデータは安全に保たれ、アクセスはSnowflakeのロールベースのアクセス制御(RBAC)システムによって制御されます。
エンドツーエンドの認証フロー¶
Microsoft TeamsにCortex Agents統合を使用する際のセキュリティ上の影響を理解するには、エンドツーエンドの認証フローを理解することが重要です。このプロセスには次のステップが含まれます。
- ユーザーインタラクション: ユーザーは、Microsoft TeamsのSnowflake Cortex Agentsボットにメッセージを送信します。 
- 認証トリガー: ボットのバックエンドサービス(「クライアント」アプリ)が OAuth 2.0フローを開始し、ユーザーはMicrosoft Entra ID にリダイレクトされます。 
- ユーザー認証: ユーザーは、企業の認証情報を使用してMicrosoftアカウントにサインインし、MFA またはテナントによって適用される条件付きアクセスポリシーを満たします。 
- トークン発行: Entra ID は、有効期間が短い認証コードを提供します。ボットのバックエンドは、JWT アクセストークンとこのコードを安全に交換します。 
- Snowflakeへの API 呼び出し: ボットバックエンドは、 - Authorization: Bearerヘッダーのアクセストークンなど、Snowflake Cortex Agents API を呼び出します。
- Snowflakeトークンの検証: Snowflakeサービスはリクエストを受信し、Snowflakeセキュリティ統合オブジェクトで定義されたポリシーと照らし合わせて JWT を検証します。 
ロールベースのアクセス制御¶
Teams統合は特定のユーザーロールのもとでCortex Agent API を使用するため、ユーザーの指定されたSnowflakeロールが持つ正確な権限を使用してCortex Agentsリクエストを実行します。エージェントは、以下を含むすべての既存のデータガバナンス制御を継承します。
- ロールベースのアクセス制御: エージェントは、ユーザーのロールが使用を許可するデータベース、スキーマ、テーブル、ウェアハウスにのみアクセスできます。 
- データマスキングポリシー: エージェントは動的データマスキングポリシーを尊重し、ユーザーのロールで許可されている場合にのみアクセスを付与します。 
- 行レベルのアクセスポリシー: エージェントは行レベルのセキュリティポリシーを適用します。 
エージェントは既存のSnowflakeセキュリティ制御をバイパスできず、ユーザーはまだ表示を許可されていないデータにアクセスできません。
現在の制限¶
- OAuth IDプロバイダーはEntra ID である必要があります
- 統合は、認証用のIDプロバイダーとしてMicrosoft Entra ID のみをサポートし、Entra ID ユーザーとSnowflakeユーザー間で1対1の直接的なマッピングを要求します。別のプライマリ IdP(たとえば、Oktaまたは別の SAML/OIDC プロバイダー)を使用している組織は、そのプロバイダーとMicrosoft Entra ID との間の標準IDフェデレーションを構成することで、この統合を有効にできます。このフェデレーションモデルでは、プライマリ IdP はユーザーのサインインを処理し、その後、Entra ID が統合によって必要な最終トークンを発行します。 
- デフォルトのユーザーロールの依存関係
- Cortex Agents API のアーキテクチャ上の制約により、統合の機能は各ユーザーのデフォルトのSnowflakeロールに関連付けられています。これにより、認証中に確立されたロールコンテキストに基づいてセッションの権限が決まります。したがって、ユーザーの既定のロールには、エージェントが正しく機能するための基礎となるオブジェクトで必要なすべての権限が付与されている必要があります。Snowflakeの SECONDARYROLES 機能はデータアクセスを広げるのに役立ちますが、プライマリ実行コンテキストはユーザーの既定のロールによって管理されます。 
トラブルシューティング¶
Microsoft TeamsのCortex Agent統合で問題が発生した場合は、次のセクションで考えられる解決策を確認してください。
権限とアクセスの問題¶
ユーザーの既定のロールは、エージェントが使用またはアクセスするオブジェクトにアクセスするために必要な権限を持っている必要があります。アクセスの問題によるエラーメッセージには通常、「データベースオブジェクトが存在しないか、許可されていません」というフレーズが含まれます。
このような問題のトラブルシューティングでは、ユーザーの既定のロールが、必要な権限を持つロールに設定されていることを確認する必要があります。
既定のロールの設定¶
アクセスの問題をトラブルシューティングするには、まずユーザーの既定のロール設定を確認します。この設定を確認するには、DESCRIBE USER コマンドを使用します。出力の DEFAULT_ROLE プロパティをチェックします。ユーザーの既定のロールが正しくない場合は、ALTER USER コマンドを使用して変更します。
ALTER USER <user_name> SET DEFAULT_ROLE = '<correct_role>';
ユーザーのプライマリ DEFAULT_ROLE の変更ができない場合は、Snowflakeのセカンダリロールメカニズムを使用します。ユーザーは、プライマリロールとアクティブなセカンダリロールの権限を組み合わせてアクションを実行できます。これにより、ユーザーのプライマリロールを変更することなく、統合固有の追加ロールをユーザーに付与できます。
Cortex Agent統合のセカンダリロールを追加するには、以下のように SQL コマンドを使用します。
GRANT ROLE <integration_specific_role> TO USER <user_name>;
ALTER USER <user_name> SET DEFAULT_SECONDARY_ROLES = ('ALL');
必要な権限¶
それにより統合を実行するロール(各ユーザーの既定のロールまたは許可されたセカンダリロール)に、アクセス制御の要件のセクション で説明されている付与があることを確認します。
セキュリティ統合の問題¶
Snowflakeセキュリティ統合は、Microsoft Entra ID テナントをSnowflakeアカウントに接続します。このセクションでの問題は、セキュリティ統合に関連しています。
無効な OAuth アクセストークン(エラーコード390303)¶
このエラーは、セキュリティ統合の1つ以上のプロパティ値が正しくなく、SnowflakeがEntra ID から受信したアクセストークンの検証を妨げていることを示している可能性があります。これを修正するには、セキュリティ統合の以下のフィールドをチェックします。特に、URLs のテナント ID が正しいか確認します。
- EXTERNAL_OAUTH_ISSUER: これは正しいEntra ID 発行者 URL に設定する必要があります。形式は - https://login.microsoftonline.com/tenant-id/v2.0で、- tenant-idは組織のMicrosoftテナント ID です。
- EXTERNAL_OAUTH_JWS_KEYS_URL: これは正しい JWS キー URL に設定する必要があります。形式は - https://login.microsoftonline.com/tenant-id/discovery/v2.0/keysで、- tenant-idは組織のMicrosoftテナント ID です。
- EXTERNAL_OAUTH_AUDIENCE_LIST: これには、Cortex Agents Bot OAuth リソースの正しいオーディエンスが含まれている必要があります。これはアプリケーション ID - 5a840489-78db-4a42-8772-47be9d833efeです。
ALTER SECURITYINTEGRATION コマンドを使用して誤った値を更新します。
ユーザー名またはパスワードが正しくありません(エラーコード390304)¶
このエラーメッセージは、Entra ID によって送信されたユーザー識別子とSnowflakeの対応するユーザーの記録が一致していないことを示しています。この原因は通常、Entra ID ユーザーIDがSnowflakeユーザーに正確にマッピングされていないことです。これは、Snowflakeユーザーが存在しない場合や、マップされた UPN またはメールアドレスが正しくない場合、またはマッピングが複数のSnowflakeユーザーに解決される場合(例:マッピングがメールアドレスを使用して実行され、複数のユーザーが同じアドレスを共有している場合)に起こることがあります。
エラーメッセージには、ユーザーがログインしようとしている UPN とメールアドレスが含まれます。この情報を使用し、DESCRIBE USER コマンドを使用して影響を受けるユーザーの設定を確認します。ユーザーの NAME または EMAIL プロパティが、Entra ID の対応するユーザーの同じプロパティ値と一致していることを確認します。メールアドレスマッピングを使用する場合、統合を使用するSnowflakeアカウントの各ユーザーは、一意のメールアドレスを持っている必要があります。
ロールがアクセストークンにリストされていないか、除外されました(エラーコード390317)¶
このエラーは、OAuth アクセストークンの情報に基づいて、Snowflakeがユーザーにロールを割り当てることができない場合に発生します。アクセストークンは session:role-any スコープで構成され、ユーザーはSnowflakeで割り当てられたロールを引き受けることができます。ただし、この動作を許可するようにセキュリティ統合を明示的に構成する必要があります。
DESCRIBE SECURITY INTEGRATION コマンドを使用して、EXTERNAL_OAUTH_ANY_ROLE_MODE プロパティの値を確認し、ENABLE または ENABLE_FOR_LOGIN に変更します。
DESCRIBE SECURITY INTEGRATION entra_id_cortex_agents_integration;
ALTER SECURITY INTEGRATION entra_id_cortex_agents_integration
    SET EXTERNAL_OAUTH_ANY_ROLE_MODE = 'ENABLE';
接続文字列で指定されたロールは、このユーザーに付与されていません(エラーコード390186)¶
このエラーは、Snowflakeセキュリティ統合が、ユーザーの既定のロールにセキュリティ統合の使用を許可していない場合に発生します。
この問題を解決するには、DESCRIBE SECURITY INTEGRATION の出力にある次のプロパティを確認します。
- EXTERNAL_OAUTH_ALLOWED_ROLES_LIST:パラメーターが有効になっている場合は、そのパラメーターにユーザーの既定のロールが含まれていることを確認します。 
- EXTERNAL_OAUTH_BLOCKED_ROLES_LIST:パラメーターが有効になっている場合は、そのパラメーターにユーザーの既定のロールが含まれていないことを確認します。