Cortex Agents pour Microsoft Teams et Microsoft 365 Copilot¶
Introduction¶
Pour la plupart des équipes, accéder à des informations pertinentes en temps opportun implique de passer d’une plateforme d’analyse dédiée à un outil de communication, ce qui entraîne des retards et une baisse de productivité. L’intégration d’un système AI agentique dans Microsoft Teams peut apporter les réponses directement à l’endroit où les conversations et les décisions se produisent, accélérant ainsi le flux d’informations dans votre entreprise. Mais mettre en place une solution d’analyse sécurisée, intégrée au chat, à la fois puissante et intuitive, représente un défi de taille. Heureusement, Snowflake en a créé une pour vous.
L’intégration Snowflake Cortex Agents pour Microsoft Teams et Microsoft 365 Copilot intègre les agents AI conversationnels de Snowflake sur votre plateforme de communication professionnelle. Les équipes commerciales et les utilisateurs non techniciens peuvent interagir avec leurs données structurées Snowflake à l’aide d’un langage simple et naturel, et obtenir des réponses directes et des visualisations sans quitter leurs chats Teams ou l’écosystème Microsoft 365 au sens large. L’intégration est disponible via Microsoft AppSource pour un déploiement fluide.
Fonctionnalités clés¶
Analyses transparentes via le langage naturel. Réjouissez les décideurs de votre entreprise en leur permettant d’obtenir eux-mêmes des informations dans les interfaces Microsoft Teams et Microsoft 365 Copilot. Les utilisateurs peuvent poser des questions de manière conversationnelle et recevoir des réponses précises, alimentées par le LLM, sous forme de texte, de tableau ou de graphique à la volée, ce qui accélère considérablement la prise de décision basée sur les données.
Interfaces doubles pour des flux de travail complets. Les Cortex Agents pour Microsoft Teams proposent deux interfaces distinctes pour prendre en charge différents besoins commerciaux. Utilisez l’application Teams standard pour une analyse approfondie et dédiée dans le cadre d’une conversation avec l’application chat Teams Bot, ou tirez parti de Microsoft 365 Copilot Agent pour intégrer des informations Snowflake ciblées dans votre flux de travail conversationnel plus large au sein de l’écosystème Microsoft 365 Copilot.
Alimentée par les Snowflake Cortex Agents. Cette intégration est alimentée par l’API Snowflake Cortex Agents, qui prend en charge les complexités de la génération d’informations précises et fiables à partir de vos données. Le système agentique interprète intelligemment les requêtes des utilisateurs et génère des réponses, ce qui évite ainsi à vos équipes d’avoir à construire des modèles conversationnels AI complexes ou à gérer des modèles sous-jacents.
Sécurité et gouvernance de niveau entreprise. Construite sur la base de confidentialité de Snowflake, l’intégration vous permet d’explorer en toute confiance les cas d’utilisation axés sur l’AI. Cela signifie que :
Vos données restent dans les limites de gouvernance de Snowflake. Les invites des utilisateurs sont envoyées à l’API Cortex Agents, mais les données sous-jacentes interrogées pour générer une réponse ne quittent jamais l’environnement sécurisé de Snowflake. La requête SQL qui en résulte est exécutée dans votre entrepôt virtuel Snowflake.
Intégration transparente avec les fonctionnalités de confidentialité et de gouvernance de Snowflake. L’intégration respecte pleinement le contrôle d’accès basé sur les rôles de Snowflake (RBAC). Toutes les requêtes exécutées pour le compte d’un utilisateur respectent ses autorisations établies, ce qui garantit que les utilisateurs ne peuvent voir que les données auxquelles ils sont autorisés à accéder.
Configurer l’intégration¶
L’intégration Microsoft Teams de Cortex Agent permet aux administrateurs d’organisation de connecter plusieurs comptes Snowflake aux espaces de travail Teams et Copilot de leur organisation. La configuration de l’intégration nécessite quelques étapes simples, résumées ci-dessous :
Configuration à l’échelle du client par l’administrateur Azure. L’intégration nécessite une configuration unique par un administrateur Microsoft Azure pour accorder l’autorisation à l’application Snowflake dans le locataire Azure Active Directory (AAD). Cette étape active l’authentification sécurisé OAuth 2.0 pour l’intégration.
Intégration de sécurité Snowflake. Une fois que l’administrateur Azure a terminé la configuration à l’échelle du client, un administrateur Snowflake doit configurer une intégration de sécurité pour chaque compte Snowflake individuel qu’il souhaite se connecter à l’application Microsoft Teams ou à M365 Copilot. Cette étape garantit que l’intégration peut accéder en toute sécurité aux données nécessaires dans chaque compte Snowflake.
Liaison des comptes au bot. Une fois l’intégration de sécurité configurée, l’administrateur Snowflake peut lier le compte Snowflake au bot Microsoft Teams ou à celui de M365 Copilot. Cette étape permet au bot d’accéder aux données et aux fonctionnalités du compte Snowflake, ce qui permet aux utilisateurs d’interagir directement avec leurs données dans Teams ou Copilot.
Conditions préalables¶
Avant de commencer le processus d’intégration, assurez-vous d’avoir mis en place les éléments suivants :
Accès administrateur. La configuration nécessite un accès administratif à la fois sur Snowflake et sur votre client Microsoft.
Région du compte Snowflake : votre compte Snowflake doit être hébergé dans la région Azure US Est 2. Snowflake a l’intention de prendre en charge d’autres régions au fur et à mesure de la progression de cette prévisualisation.
Privilèges administratifs Snowflake : votre utilisateur Snowflake doit avoir accès au rôle ACCOUNTADMIN ou SECURITYADMIN. Ces autorisations sont nécessaires pour créer l’objet d’intégration de sécurité nécessaire dans votre compte Snowflake.
Privilèges d’administrateur Microsoft : votre utilisateur Azure doit disposer des privilèges d’administrateur global (ou un rôle équivalent) pour votre client ID Microsoft Entra. Ces privilèges sont nécessaires pour accorder le consentement administratif requis à l’échelle du client pour l’application.
ID client Microsoft : vous avez besoin de l’ID client Microsoft de votre organisation pour configurer l’intégration de sécurité Snowflake. Pour plus d’informations sur la recherche de l’ID client de votre organisation, voir Trouver l’abonnement et les IDs client dans le portail Azure.
Comptes d’utilisateur individuels : chaque utilisateur final doit avoir ses propres comptes d’utilisateur Microsoft et Snowflake.
Limitation de l’utilisateur final : les utilisateurs doivent disposer des licences Microsoft appropriées pour accéder à Microsoft Teams. Une licence Copilot est également nécessaire si vous prévoyez d’utiliser l’intégration avec Microsoft 365 Copilot.
Étape 1 : Configuration de l’ID Entra à l’échelle du client¶
Pour activer l’authentification sécurisée pour les Cortex Agents, un administrateur Microsoft Azure doit donner son accord pour deux applications hébergées dans le client Snowflake, en créant un principal de service pour chaque application de votre client ID Entra. Les deux applications sont les suivantes :
Ressource OAuth du bot Cortex Agents : représente l’API Snowflake protégée et définissent les autorisations d’accès (champs d’application) pour les applications clientes.
Client OAuth Snowflake du Bot Cortex Agents : représente l’application cliente, dans ce cas le service back-end de l’application Teams, qui appelle l’API Snowflake après avoir demandé un jeton d’accès.
Les instructions pour donner son accord à ces demandes sont fournies ci-dessous. Le processus est très similaire pour les deux applications, mais les autorisations et les champs d’application spécifiques diffèrent légèrement.
Donner son accord pour le principal de ressource OAuth¶
Pour donner votre accord au principal de service de l’application de ressource OAuth du Bot Cortex Agents :
Dans votre navigateur, accédez à
https://login.microsoftonline.com/<id-client>/adminconsent?client_id=5a840489-78db-4a42-8772-47be9d833efe
, oùtenant-id
est le client Microsoft de votre organisation ID.Si vous n’êtes pas encore connecté, vous serez invité à le faire.
Une boîte de dialogue Permission requested apparaît, indiquant l’autorisation dont l’application a besoin.
Sélectionner Accept pour accorder l’autorisation demandée.
Donner son accord pour le principal du client OAuth¶
Ce processus affiche deux boîtes de dialogue. Chacun est similaire à celui de le principal de ressource OAuth, mais les autorisations demandées sont différentes.
Pour donner votre accord au principal de service de l’application client OAuth Snowflake du Bot Cortex Agents :
Dans votre navigateur, accédez à
https://login.microsoftonline.com/<id-client>/adminconsent?client_id=bfdfa2a2-bce5-4aee-ad3d-41ef70eb5086
, oùtenant-id
est le client Microsoft de votre organisation ID.Une boîte de dialogue Permissions requested (1 of 2) apparaît, montrant un ensemble d’autorisations dont l’application a besoin.
Sélectionner Accept pour accorder les autorisations demandées.
La deuxième boîte de dialogue d’autorisation apparaît (Permissions requested (2 of 2)).
Sélectionner Accept pour accorder les autorisations demandées.
Important
Vous pouvez voir un message d’erreur indiquant qu’un paramètre de chaîne de requête requis était manquant, comme ce qui suit.
{
"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>"
}
}
Vous pouvez ignorer cette erreur en toute sécurité. L’accord a encore été donné avec succès. Pour en être sûr, confirmez que les autorisations ont été accordées en suivant les instructions de la section suivante.
Confirmation des accords d’autorisations¶
Après avoir accordé le consentement pour les deux applications, vous pouvez confirmer que les autorisations ont été accordées correctement en vérifiant la section Enterprise applications du portail ID Microsoft Entra.
Connectez-vous au Centre d’administration Microsoft Entra si nécessaire.
Naviguez jusqu’aux applications d’entreprise en saisissant « applications d’entreprise » dans le champ de recherche, puis en sélectionnant Enterprise applications dans les résultats.
Dans la liste All applications, cherchez les deux applications pour lesquelles vous venez de donner votre accord : Ressource OAuth du Bot Snowflake Cortex Agents et Client OAuth du Bot Snowflake Cortex Agents. Un moyen simple de le faire est de rechercher « Snowflake Cortex Agent ».
Si les deux applications apparaissent dans la liste, les autorisations ont été correctement accordées. S’il manque l’une ou les deux applications, essayez à nouveau de donner votre accord.
Étape 2 : Intégration de sécurité Snowflake¶
L’intégration de Snowflake avec Microsoft Teams requiert une intégration de sécurité qui établit une confiance cryptographique entre votre compte Snowflake et votre client ID Entra. Ce processus nécessite :
L’activation de l’ID Entra en tant que fournisseur OAUth externe dans Snowflake.
La préparation de la définition de Cortex Agent et des autres objets requis.
De s’assurer que les utilisateurs qui utiliseront l’agent ont l’autorisation d’accéder aux objets Snowflake de l’agent.
L’activation de l’ID Entra en tant que fournisseur OAuth externe¶
Un objet d’intégration de sécurité Snowflake représente une intégration avec un fournisseur OAuth externe, en l’occurrence l’ID Microsoft Entra. Cette intégration permet à Snowflake d’authentifier les utilisateurs qui sont connectés à Microsoft Teams ou Copilot.
L’instruction SQL qui suit est un modèle annoté pour la création de l’intégration. Cette commande doit être exécutée par un rôle doté de privilèges ACCOUNTADMIN. Remplacer les espaces tenant-id
réservés avec votre ID client Microsoft.
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'
Voir CREATE SECURITY INTEGRATION (External OAuth) pour une référence complète des paramètres disponibles pour cette commande.
Ensemble, les paramètres EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM et EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE lient une identité ID Entra avec une identité Snowflake. Pour que l’authentification réussisse, la valeur de la demande spécifiée dans le JWT doit correspondre exactement à la valeur de l’attribut spécifié sur un objet utilisateur dans Snowflake. Les deux principales configurations recommandées par Snowflake sont les suivantes :
Mappage par nom d’utilisateur principal (UPN) : Définissez le paramètre EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM sur “upn” et le paramètre EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE sur “LOGIN_NAME”.
Mappage par adresse e-mail : Définissez le paramètre EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM sur “email” et le paramètre EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE sur “EMAIL_ADDRESS”.
L’exemple d’instruction ci-dessus utilise la configuration de mappage des adresses e-mail, mais spécifie également l’UPN dans le paramètre EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM, ce qui vous permet de modifier la méthode de mappage en modifiant uniquement le EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE.
L’instruction d’exemple permet également d’effectuer des EXTERNAL_OAUTH_ANY_ROLE_MODE, de sorte que le rôle par défaut de l’utilisateur soit utilisé.
Pour plus d’informations sur les champs d’application OAuth, voir Champs d’application.
Préparer la définition de l’Agent Cortex¶
Une fois l’intégration de sécurité configurée, vous devez préparer l’environnement de l’agent et la définition dans Snowflake. Cela implique la création des objets de base de données nécessaires et la définition de la logique de l’agent dans un seul objet JSON. La définition spécifie les instructions de l’agent, ses outils (tels que Cortex Analyst et Cortex Search) et les ressources de ces outils. La définition du schéma suit le :ref:` schéma du corps de la requête APICortex Agent <label-cortex-agent-rest-api-request_body>` avec quelques ajouts. Voici la structure de premier niveau de l’objet JSON :
{
"model": ...,
"response_instruction": ...,
"experimental": ...
"tools": ...
"tool_resources": ...
"tool_choice": ...
"starter_prompts": ...
}
Téléchargez la définition de l’agent dans une zone de préparation Snowflake et assurez-vous qu’elle soit accessible à tous les utilisateurs finaux qui utiliseront l’agent.
Vous pouvez améliorer l’expérience utilisateur en définissant deux champs facultatifs pour les résultats de la recherche et le guide conversationnel :
Les citations de recherche peuvent être accompagnées d’un titre lisible par l’utilisateur et d’un lien direct vers le document source en renseignant deux champs facultatifs dans la définition
tool_resources
de l’outil de recherche :title_column
est une colonne qui contient le titre lisible par l’utilisateur d’un document.id_column
est une colonne qui contient un identificateur unique pour le document, identificateur que Cortex Search utilise pour construire un lien vers le document.
Des invites de démarrage peuvent être fournies pour aider les utilisateurs à formuler leurs questions dans le champ
starter_prompts
au niveau supérieur de la définition de l’agent.{ .... "starter_prompts": ["prompt #1", "prompt #2", ...], ... }
Accorder les privilèges requis aux utilisateurs finaux¶
Pour que les utilisateurs finaux interagissent correctement avec un Cortex Agent dans Teams, leur rôle Snowflake par défaut (ou un autre rôle désigné) doit disposer de privilèges accordés sur tous les objets sous-jacents :
Tous les accords répertoriées dans la section des exigences de contrôle d’accès de la rubrique Cortex Agents
Accès READ à la zone de préparation contenant la définition de l’agent JSON
USAGE sur l’entrepôt affecté à l’agent
Étape 3 : Configuration de l’application Teams et connexion à votre compte Snowflake¶
La dernière étape du processus d’intégration consiste à configurer l’application Microsoft Teams et à la connecter aux utilisateurs de Snowflake qui l’utiliseront. Cela vous oblige à effectuer les tâches suivantes :
Installez l’application Cortex Agents depuis Teams Store
Connectez votre compte Snowflake à l’application Teams
Installez l’application depuis Teams Store¶
Tous les utilisateurs doivent installer l’application Cortex Agents à partir de Microsoft Teams Store. Pour installer l’application, recherchez « Snowflake Cortex Agents » dans Teams Store, puis cliquez sur Add pour installer l’application.
Note
Selon les politiques Microsoft Teams de votre organisation, un administrateur Teams peut avoir besoin d’approuver l’application avant qu’elle ne soit disponible pour les utilisateurs. Voir Vue d’ensemble de la gestion et de la gouvernance des applications dans le centre d’administration Teams pour obtenir des instructions.
Connecter votre compte Snowflake à l’application Teams¶
Le premier utilisateur qui interagit avec l’application Cortex Agents dans Teams est invité à connecter son compte Snowflake à l’application. Cet utilisateur doit disposer du rôle ACCOUNTADMIN ou SECURITYADMIN dans Snowflake pour passer cette étape.
Pour récapituler, le rôle par défaut de chaque utilisateur dans Snowflake doit disposer des privilèges requis pour accéder aux objets de l’agent, comme décrit dans la section Exigences de contrôle d’accès de la rubrique Cortex Agents, ainsi qu’un accès READ à la zone de préparation contenant la définition de l’agent JSON et USAGE sur l’entrepôt de l’agent. (Le rôle par défaut de l’utilisateur est spécifié par le paramètre DEFAULT_ROLE dans le profil de l’utilisateur).
Les intégrations de sécurité bloquent par défaut les rôles administratifs principaux de Snowflake. Par conséquent, vous ne pouvez pas utiliser des rôles administratifs tels que ACCOUNTADMIN comme rôle par défaut pour l’utilisateur qui configurera le bot Teams. Pour plus d’informations sur cette restriction, voir BLOCKED_ROLES_LIST dans la rubrique CREATE SECURITY INTEGRATION.
Snowflake vous recommande de créer un rôle dédié, non administratif, avec les autorisations requises et de le définir par défaut pour l’utilisateur en charge de la configuration. Vous pouvez également utiliser le mécanisme SECONDARY ROLES pour accorder les autorisations supplémentaires sans modifier le rôle principal par défaut de l’utilisateur, comme suit :
GRANT ROLE <integration_specific_role> TO USER <user_name>;
ALTER USER <user_name> SET DEFAULT_SECONDARY_ROLES = ('<integration_specific_role>');
Pour configurer le bot Teams, suivez les étapes suivantes :
Cliquez sur I’m the Snowflake administrator, sous l’avertissement indiquant qu’un administrateur doit configurer Snowflake pour l’exécution Teams, pour démarrer le processus.
Indiquez l’URL de votre compte Snowflake à l’endroit indiqué.
Pour trouver cette URL, connectez-vous à Snowsight et cliquez sur le sélecteur de compte dans le coin inférieur gauche de la page. La partie nom d’hôte de l’URL s’affiche en haut du menu et se présente sous le format
your-organization-your-account
. L’URL complète estyour-organization-your-account.snowflakecomputing.com
.L’assistant de configuration vérifie que l’URL conduit à une instance de Snowflake valide dans la Région Est 2 Azure US et confirme que votre utilisateur y a accès tout en disposant des privilèges administratifs requis.
Note
Vous pouvez voir un avertissement vous demandant de vous assurer que l’intégration de sécurité utilise le « jeton d’accès à la plateforme d’identité Microsoft v2.0 ». Vous pouvez ignorer cet avertissement sans problème. Le format du jeton d’intégration de sécurité Snowflake est compatible.
Une fois cette vérification passée, un formulaire apparaît et demande les détails de configuration suivants :
Alias de compte : un nom convivial pour ce compte Snowflake qui apparaît dans l’interface Teams, par exemple : « Analyse des ventes ».
Chemin de définition de l’agent : le chemin complet vers le fichier de définition JSON de l’agent dans une zone de préparation Snowflake, au format
@stage_name/path_to_definition_file
, comme@my_cortex_agents/my_agent.json
.Entrepôt par défaut : nom de l’entrepôt Snowflake que l’agent utilise pour exécuter les requêtes.
Saisissez ces informations, puis cliquez sur Finalize account configuration.
Une fois la configuration validée, l’application Teams est connectée à votre compte Snowflake et l’agent est prêt à être utilisé.
Astuce
Une fois votre compte Snowflake connecté à l’application Cortex Teams, vous pouvez connecter d’autres comptes Snowflake à la même application en vous connectant à l’application Teams avec un utilisateur disposant des privilèges nécessaires et en exécutant la commande « ajouter un nouveau compte » dans le chat.
Utilisation de Cortex Agent¶
Une fois l’intégration configurée, le bot apparaît dans l’interface Microsoft Teams, ce qui permet à vos utilisateurs d’interagir avec lui dans un chat privé. Les utilisateurs posent des questions dans un langage naturel et le bot répond avec des réponses basées sur les données Snowflake.
Dans Microsoft 365 Copilot, vos utilisateurs peuvent interagir avec l’agent dans le contexte de leur flux de travail plus large, poser des questions et recevoir des réponses sur leurs données Snowflake dans l’interface Copilot.
Remarques relatives à la sécurité¶
L’intégration Cortex Agents pour Microsoft Teams est conçue dans un souci de sécurité, en tirant parti des fonctions de sécurité existantes de Snowflake et de Capacités d’authentification de l’ID Microsoft Entra. L’intégration garantit que les données des utilisateurs restent sécurisées et que l’accès est contrôlé par le contrôle d’accès basé sur les rôles du système (RBAC) de Snowflake.
Flux d’authentification de bout en bout¶
Pour comprendre les implications en matière de sécurité liées à l’utilisation de l’intégration Cortex Agents pour Microsoft Teams, il est important de comprendre le flux d’authentification de bout en bout. Ce processus comprend les étapes suivantes :
Interaction utilisateur : un utilisateur envoie un message au bot Snowflake Cortex Agents dans Microsoft Teams.
Déclencheur d’authentification : le service backend du bot (l’application « client ») lance un flux OAuth 2.0, qui redirige l’utilisateur vers l’ID Microsoft Entra.
Authentification de l’utilisateur : l’utilisateur se connecte à son compte Microsoft avec ses identifiants de connexion d’entreprise, ce qui satisfait chaque MFA ou les politiques d’accès conditionnel appliquées par leur client.
Émission de jetons : l’ID Entra fournit un code d’autorisation de courte durée. Le backend du bot échange ce code en toute sécurité contre un jeton d’accès JWT.
Appel API vers Snowflake : le back-end du bot appelle l’API Snowflake Cortex Agents, en incluant le jeton d’accès dans l’en-tête
Authorization: Bearer
.Validation du jeton Snowflake : le service Snowflake reçoit la requête et valide le JWT conformément à la politique définie dans l’objet d’intégration de sécurité Snowflake.
Contrôle d’accès basé sur les rôles¶
Parce qu’il utilise l’API Cortex Agents sous un rôle d’utilisateur spécifique, l’intégration Teams exécute les requêtes des agents Cortex avec les privilèges exacts du rôle Snowflake désigné pour l’utilisateur. L’agent hérite de tous les contrôles existants de la gouvernance des données, y compris :
Contrôle d’accès basé sur les rôles : l’agent ne peut accéder qu’aux bases de données, schémas, tables et entrepôts que le rôle de l’utilisateur lui permet d’utiliser.
Politiques de masquage des données : l’agent respecte les politiques de masquage dynamique des données et n’accorde l’accès que lorsque le rôle de l’utilisateur l’autorise.
Politiques d’accès au niveau des lignes : l’agent applique des politiques de sécurité au niveau des lignes.
L’agent ne peut contourner aucun contrôle de sécurité Snowflake existant et les utilisateurs ne peuvent pas accéder aux données qu’ils ne sont pas déjà autorisés à voir.
Limites actuelles¶
Ces limitations s’appliquent à l’intégration Cortex Agents pour la version en phase de prévisualisation de Microsoft Teams. Snowflake a l’intention de les résoudre dans les prochaines versions.
- Le fournisseur d’identité OAuth doit être l’ID Entra
L’intégration prend exclusivement en charge l’ID Microsoft Entra comme fournisseur d’identité pour l’authentification et nécessite un mappage direct une à une entre les utilisateurs ID Entra et les utilisateurs Snowflake. Les organisations utilisant d’autres IdPs (par exemple, Snowflake ou Okta) ne peuvent pas actuellement utiliser cette intégration.
- Dépendance par défaut au rôle utilisateur
La fonctionnalité de l’intégration est liée au rôle Snowflake par défaut de chaque utilisateur en raison d’une contrainte architecturale de l’API Cortex Agents, qui détermine les autorisations de session en fonction du contexte de rôle établi lors de l’authentification. Par conséquent, le rôle par défaut de l’utilisateur doit se voir accorder tous les privilèges nécessaires sur les objets sous-jacents pour que l’agent fonctionne correctement. Alors que la fonctionnalité SECONDARY ROLES de Snowflake peut aider à élargir l’accès aux données, le contexte d’exécution principal est régi par le rôle par défaut de l’utilisateur.
- Une définition d’agent par compte Snowflake
L’intégration fournit un mappage individuel entre une instance d’intégration Teams et une définition unique de Cortex Agent par compte Snowflake. Vous ne pouvez actuellement pas exposer plusieurs agents distincts à partir d’un seul compte Snowflake.
- Pas de contexte à plusieurs niveaux
L’intégration ne prend actuellement pas en charge le contexte conversationnel à plusieurs niveaux. Chaque requête d’un utilisateur Teams est une transaction discrète, sans état. L’agent ne se souvient pas du contexte des questions précédentes, ce qui oblige les utilisateurs à être explicites dans chaque requête.
Résolution des problèmes¶
Si vous rencontrez des problèmes avec l’intégration Cortex Agents pour Microsoft Teams, consultez les sections ci-dessous pour connaître les solutions possibles.
Problèmes de privilège et d’accès¶
Le rôle par défaut de l’utilisateur doit disposer des privilèges requis pour accéder aux objets utilisés par l’agent ou auxquels il accède. Les messages d’erreur causés par des problèmes d’accès comprennent généralement la phrase « l’objet de la base de données n’existe pas ou n’est pas autorisé ».
Le dépannage de ces problèmes implique de vérifier les éléments suivants :
Le rôle par défaut de l’utilisateur est défini sur un rôle qui possède les privilèges requis.
Le rôle par défaut de l’utilisateur possède les privilèges requis sur les objets de l’agent, y compris la zone de préparation contenant la définition JSON de l’agent et l’entrepôt attribué à l’agent.
Paramètre de rôle par défaut¶
La première étape de la résolution des problèmes d’accès consiste à vérifier le paramètre de rôle par défaut de l’utilisateur. Pour vérifier ce paramètre, exécutez la commande DESCRIBE USER et vérifiez la propriété DEFAULT_ROLE dans la sortie. Si le rôle par défaut de l’utilisateur est incorrect, modifiez-le à l’aide de la commande ALTER USER.
ALTER USER <user_name> SET DEFAULT_ROLE = '<correct_role>';
Si le rôle principal DEFAULT_ROLE de l’utilisateur n’est pas réalisable, vous pouvez utiliser le mécanisme de rôles secondaires de Snowflake. Un utilisateur peut effectuer des actions en utilisant les privilèges combinés de ses rôles primaire et secondaire actif. Cela vous permet d’attribuer un rôle supplémentaire spécifique à l’intégration à l’utilisateur sans modifier son rôle principal.
Pour ajouter un rôle secondaire à l’intégration Cortex Agents, utilisez les commandes SQL comme les suivantes. Pour vous assurer que vous ne supprimez pas les rôles secondaires déjà attribués à l’utilisateur, prenez note de la propriété DEFAULT_SECONDARY_ROLES dans la sortie de DESCRIBE USER. Incluez ces rôles préexistants lors de l’ajout du rôle spécifique à l’intégration.
DESCRIBE USER <user_name>; -- take note of DEFAULT_SECONDARY_ROLES
GRANT ROLE <integration_specific_role> TO USER <user_name>;
ALTER USER <user_name> SET DEFAULT_SECONDARY_ROLES = ('<pre_existing_role_1>', ....,
'<integration_specific_role>');
Autorisations requises¶
Le rôle par défaut de l’utilisateur (ou un rôle secondaire par défaut) doit posséder les privilèges décrits ci-dessous.
Accès à la fonction Cortex AI via le rôle SNOWFLAKE.CORTEX_USER. Par défaut, ce rôle est accordé au rôle PUBLIC, pour que tous les utilisateurs puissent accéder aux fonctions Cortex AI. Si votre organisation a supprimé SNOWFLAKE.CORTEX_USER de PUBLIC, vous devez l’accorder explicitement au rôle sous lequel l’agent s’exécute.
Si l’agent utilise l’outil Cortex Analyst, le rôle doit également disposer des privilèges suivants :
USAGE sur l’ensemble des bases de données et schémas référencés dans le modèle sémantique
SELECT sur toutes les tables et vues référencées dans le modèle sémantique
Accès READ à la zone de préparation contenant le(s) fichier(s) de modèle sémantique
Si l’agent utilise un service Cortex Search, le rôle doit avoir USAGE sur le service spécifique utilisé.
Problèmes d’ntégration de sécurité¶
Une intégration de sécurité Snowflake connecte le client Microsoft Entra ID vers le compte Snowflake. Les problèmes de cette section sont liés à l’intégration de la sécurité.
Jeton d’accès OAuth non valide (code d’erreur 390303)¶
Cette erreur peut indiquer qu’une ou plusieurs valeurs de propriété dans l’intégration de sécurité sont incorrectes, ce qui empêche Snowflake de valider le jeton d’accès reçu de Entra ID. Pour y remédier, vérifiez les champs suivants dans l’intégration de sécurité. En particulier, assurez-vous que le client ID est correct dans le URLs.
EXTERNAL_OAUTH_ISSUER : doit être réglé sur la bonne URL émettrice d’ID Entra, qui est au format
https://login.microsoftonline.com/<tenant-id>/v2.0
, oùtenant-id
est le client Microsoft de votre organisation ID.EXTERNAL_OAUTH_JWS_KEYS_URL : doit être réglé sur la bonne URL de clés JWS, qui est au format
https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys
, oùtenant-id
est le client Microsoft de votre organisation ID.EXTERNAL_OAUTH_AUDIENCE_LIST : doit inclure l’audience correcte pour le bot de l’application de ressources OAuth Cortex Agents, qui est l’application ID
5a840489-78db-4a42-8772-47be9d833efe
.
Mettre à jour les valeurs incorrectes à l’aide de la commande ALTER SECURITY INTEGRATION.
Nom d’utilisateur ou mot de passe incorrect (code d’erreur 390304)¶
Ce message d’erreur indique une erreur entre l’identificateur de l’utilisateur envoyé par ID Entra et l’enregistrement de l’utilisateur correspondant dans Snowflake, généralement parce que l’ID Entra ne mappe pas exactement un utilisateur de Snowflake. Cela peut se produire lorsque l’utilisateur Snowflake n’existe pas (ou l’UPN mappé ou l’adresse e-mail est incorrecte), ou lorsque le mappage se résout en plusieurs utilisateurs Snowflake (par exemple, si le mappage est effectué en utilisant une adresse e-mail et que plusieurs utilisateurs partagent la même adresse).
Le message d’erreur comprend l’UPN et l’e-mail de l’utilisateur qui tente de se connecter. Utilisez ces informations pour vérifier la configuration de l’utilisateur concerné à l’aide de la commande DESCRIBE USER. Assurez-vous que la propriété NAME ou EMAIL de l’utilisateur correspond à la valeur de la même propriété dans l’ID Entra pour l’utilisateur correspondant. Si vous utilisez le mappage des adresses e-mail, assurez-vous que l’adresse e-mail est unique pour tous les utilisateurs du compte Snowflake.
Rôle non répertorié dans le jeton d’accès ou filtré (code d’erreur 390317)¶
Cette erreur se produit lorsque Snowflake ne peut pas attribuer un rôle à l’utilisateur sur la base des informations contenues dans le jeton d’accès OAuth. Le jeton d’accès est configuré avec le champ d’application session:role-any
, qui permet à l’utilisateur d’assumer n’importe lequel des rôles qui lui sont assignés dans Snowflake. Toutefois, l’intégration de sécurité doit être explicitement configurée pour autoriser ce comportement.
Utilisez la commande DESCRIBE SECURITY INTEGRATION pour vérifier la valeur de la propriété EXTERNAL_OAUTH_ANY_ROLE_MODE, puis remplacez-la par ENABLE
ou 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';
Le rôle spécifié dans la chaîne de connexion n’est pas attribué à cet utilisateur (code d’erreur 390186)¶
Cette erreur se produit lorsque l’intégration de sécurité Snowflake n’autorise pas le rôle par défaut de l’utilisateur à utiliser l’intégration de sécurité.
Pour résoudre ce problème, vérifiez les propriétés suivantes dans la sortie de DESCRIBE SECURITY INTEGRATION :
EXTERNAL_OAUTH_ALLOWED_ROLES_LIST : Si le paramètre est activé, vérifiez qu’il contient le rôle par défaut de l’utilisateur.
EXTERNAL_OAUTH_BLOCKED_ROLES_LIST : Si le paramètre est activé, vérifiez qu’il ne contient pas le rôle par défaut de l’utilisateur.