Documentation Déploiement
Sur cette page

Déployer dans votre propre locataire

En mode intégré, l'invocation du persona s'exécute côté serveur auprès de votre déploiement Azure OpenAI, sous authentification Entra. C'est ce qui rend le squad accessible depuis Copilot Studio — et ce qui entraîne des coûts.

Cette page présente les grandes lignes du déploiement. La procédure de référence, avec toutes les commandes et tous les paramètres prêts à copier-coller, figure dans host/RUNBOOK.md. Suivez cette procédure ; utilisez d'abord cette page pour comprendre ce qu'implique le déploiement.

Ce que vous déployez#

  • Azure Container Apps — le serveur lui-même, capable de réduire le nombre de réplicas à zéro, avec une identité managée affectée par l'utilisateur.
  • Azure Container Registry — l'image, construite dans ACR à partir de host/Containerfile.
  • Azure Key Vault — les secrets de l'opérateur ; l'application les lit via son identité managée.
  • Azure OpenAI — le backend du modèle. C'est ici que les dépenses réelles commencent.
  • Une inscription d'application Entra — le serveur de ressources dont l'URI d'ID d'application devient l'audience du jeton.
  • En option, Azure Table Storage pour la persistance de l'état d'exécution, et Blob Storage pour les rendus et le stockage des contenus de mémoire dépassant la limite.

Tout est défini en Bicep dans host/infra/. Aucune procédure via une interface graphique n'est prévue.

Les étapes du déploiement#

  1. Déployez l'identité. Fédération OIDC pour la CI, ou az login en local pour une exécution manuelle.
  2. Inscrivez l'application Entra et exposez l'API. L'URI d'ID d'application est l'audience que le serveur exige pour chaque jeton. Exposez une étendue d'autorisation par outil, ainsi que le rôle d'application Squad.Operate pour l'opérateur chargé de débloquer les exécutions suspendues.
  3. Provisionnez Azure OpenAI. Les dépenses réelles commencent ici. Le point de terminaison doit figurer dans la liste des points de terminaison de modèles autorisés par le serveur ; sinon, celui-ci refuse de démarrer.
  4. Renseignez les paramètres de déploiement dans host/infra/main.bicepparam.
  5. Construisez l'image dans ACR et déployez l'application Container Apps, Key Vault et l'identité managée.
  6. Accordez à l'identité de l'application l'accès à Azure OpenAI — selon le principe du moindre privilège, sans clés dans la configuration.
  7. Importez le connecteur dans Copilot Studio depuis generated/copilot-studio-connector/, dont le contenu est généré et versionné dans le dépôt.

L'authentification n'est pas négociable#

L'interface distante applique le refus par défaut à trois niveaux indépendants ; chaque appel doit franchir les trois :

NiveauÉléments rejetés
Vérification de l'audienceUn jeton valide émis pour une autre ressource. Protection contre le problème de l'adjoint confus (confused deputy).
Étendue d'autorisation par outilUn jeton sans étendue explicite pour l'outil appelé.
Liste des origines autoriséesToute origine non explicitement répertoriée. * est rejeté au démarrage, et non lors d'une requête.

L'isolation des locataires s'ajoute à ces contrôles : chaque chemin de stockage est préfixé par le locataire de l'appelant et protégé contre les traversées de répertoires, de sorte qu'un locataire ne peut pas accéder aux exécutions, aux artefacts ou à la mémoire d'un autre. Les suites test/conformance/ servent précisément à signaler clairement toute régression de ces protections.

Débloquer une exécution suspendue#

squad_run suspend l'exécution à l'étape de validation humaine. La débloquer relève d'un opérateur, et non d'un appel d'outil : le détenteur du rôle d'application Squad.Operate envoie une requête POST hors bande à /admin/approve. L'approbation est enregistrée avec l'identité de l'approbateur et un horodatage, et sa portée est limitée au locataire. Aucun chemin d'exécution du code ne permet aux entrées de l'appelant ou aux sorties du modèle de débloquer un point de contrôle.

Si vous souhaitez que les exécutions exclusivement consultatives se poursuivent sans surveillance, une activation distincte et explicite est nécessaire (SQUAD_MCP_ADVISORY_AUTOPILOT_ENABLED) ; elle restreint le point de contrôle aux exécutions consultatives — sans jamais le supprimer pour les exécutions à impact. Voir Configuration.

Un ou plusieurs réplicas#

Le pipeline asynchrone nécessite un état d'exécution persistant ; le backend choisi détermine les possibilités de mise à l'échelle :

BackendRéplicasCompromis
fileun Un répertoire local. La solution la plus simple à mettre en place. L'approbation n'est visible que par le réplica qui détient le fichier ; l'ajout de réplicas empêche donc le déblocage sans signaler d'erreur.
tableplusieurs Azure Table Storage avec comparaison et échange (compare-and-swap) fondés sur les ETag. Rend le déblocage visible par tous les réplicas, ce qui permet de réduire leur nombre à zéro en toute sécurité.

Les exécutions de plus de quatre minutes environ dépassent la durée prise en charge par le traitement d'une requête. Activez le worker en arrière-plan (un job ACA) : l'interrogation de l'état devient alors une opération en lecture seule, tandis que le worker mène les exécutions approuvées à leur terme. Le worker nécessite le backend table, pour la même raison que l'ajout de réplicas.

Coût#

Le mode délégué est en pratique gratuit — c'est le propre modèle de l'appelant qui exécute l'inférence. En mode intégré, l'inférence côté serveur représente l'essentiel du coût. C'est pourquoi l'hébergement permet de réduire le nombre de réplicas à zéro, et pourquoi les limites d'exécutions simultanées et de coûts par locataire sont des paramètres essentiels, prévus dès la conception. Définissez SQUAD_MCP_TENANT_COST_CEILING_USD avant d'exposer le moindre service à de vrais utilisateurs.

Ce que ce déploiement ne fait délibérément pas#

  • Il n'écrit pas dans Azure DevOps, Jira ou GitHub. Jamais. Un connecteur natif certifié s'en charge.
  • Il n'exécute ni code ni déploiement. Le mode intégré est consultatif : du texte finalisé, ainsi qu'un rendu .pptx déterministe.
  • Il ne cible pas encore Microsoft 365 Copilot ni Cowork.
  • Il ne débloque automatiquement aucun point de contrôle, quelle que soit la configuration.

Intégration dans un locataire soumis à gouvernance#

Dans les locataires qui appliquent la gouvernance Agents 365, le serveur peut être enregistré dans le catalogue du locataire en tant qu'outil fourni par vos soins, approuvé dans le Centre d'administration Microsoft 365, puis utilisé depuis Copilot Studio en tant qu'outil approuvé. Le guide d'exploitation décrit l'enregistrement en ligne de commande, l'approbation par l'administrateur et l'étape d'utilisation.

Rechercher dans la documentation

Recherchez dans la documentation française. Appuyez sur Échap pour fermer.

Chargement de la recherche…