Aller au contenu principal

Mode d'isolation

L'écran Mode d'isolation permet de lire et de régler le mode d'isolation du tenant ou d'un projet : connected, local_only ou air_gapped. Quand le mode n'est pas connected, la passerelle refuse toute route externe et tout appel sortant vers un hôte qui n'est ni local ni déclaré interne. Chemin dans le portail : /llm/isolation. Il est utilisé par les administrateurs du tenant et les responsables sécurité. L'écran est construit dans portal/src/screens/kit-data.tsx (Isolation, isolationCfg).

Ce que montre l'écran​

  • La section Mode actuel (« Laissez le projet vide pour le mode du locataire. ») : le champ Projet avec Appliquer, puis le mode effectif en badge (neutre pour connected, avertissement sinon) et le JSON {"project_id", "mode", "internal_hosts"} lu par GET /v1/llm/isolation. Le mode effectif est la ligne du projet si elle existe, sinon celle du tenant, sinon connected.
  • Le panneau Définir le mode d'isolation (« S'applique au locataire ou à un projet. ») : les champs Mode (connected, local_only, air_gapped, obligatoire), Projet (vide : le tenant) et Hôtes internes (séparés par des virgules, par exemple <vllm-host>, <ollama-host>), le bouton Exécuter et le Résultat JSON.

En local_only et air_gapped, un modèle n'est routable que si son fournisseur est un moteur local (vllm, ollama, lm_studio) ou si son adresse fait partie des Hôtes internes ; la barrière de sortie laisse aussi passer 127.0.0.1, localhost et les services d'exploitation comme le proxy LiteLLM.

Actions​

Bouton ou actionCe qu'il faitAppel d'APIRôles
Appliquer (Mode actuel)Lit le mode effectif du projet saisi, ou du tenant si le champ est vide.GET /v1/llm/isolationtenant_admin, platform_admin, security_officer, finops, developer, auditor, viewer
Exécuter (Définir le mode d'isolation)Après la confirmation « Définir le mode d'isolation ? Cette action sensible est consignée dans le journal d'audit. », écrit le mode et les hôtes internes du tenant ou du projet.PUT /v1/llm/isolationportail : tenant_admin, security_officer ; serveur : tenant_admin, platform_admin, security_officer

Rôles​

  • Lecture GET /v1/llm/isolation : les rôles READ de services/control-plane/src/eai/domains/llm/lifecycle.py : tenant_admin, platform_admin, security_officer, finops, developer, auditor, viewer.
  • Écriture PUT /v1/llm/isolation : ADMIN plus security_officer dans le même fichier (tenant_admin, platform_admin, security_officer). Le portail affiche le formulaire aux ROLES.isolationWriters de portal/src/lib/kit.ts (tenant_admin, security_officer) ; les autres rôles voient « Nécessite l'un de ces rôles ».
  • Chaque changement est enregistré dans le journal d'audit (llm.isolation.set). Les routes demandent un tenant (tenant_required sinon).

Tâches courantes​

Passer un projet en mode local uniquement​

  1. Lire le mode actuel. Saisissez le projet dans Projet et cliquez sur Appliquer, pour savoir d'où vous partez. Résultat attendu : le badge montre le mode effectif, connected si rien n'est réglé. En cas d'échec : un panneau d'erreur avec Réessayer donne la cause.
  2. Déclarer les hôtes internes. Dans Définir le mode d'isolation, choisissez Mode local_only, saisissez le même Projet, et listez les Hôtes internes qui servent les modèles locaux (hôte ou host:port, par exemple <vllm-host>:8000). Résultat attendu : le formulaire est valide. En cas d'échec : Obligatoire sous Mode.
  3. Appliquer le mode. Cliquez sur Exécuter et confirmez. Résultat attendu : le Résultat montre le mode et les hôtes triés, en minuscules. En cas d'échec : « Le paramètre internal_hosts est invalide. » signifie qu'un hôte a un mauvais format.
  4. Vérifier l'effet. Appelez un modèle externe depuis le Playground passerelle avec ce projet. Résultat attendu : « Mode local_only : le modèle <model_id> du fournisseur <fournisseur> est externe et ne peut pas être routé. » En cas d'échec : le modèle est peut-être local ou servi par un hôte interne, ce qui est permis.

Revenir en mode connecté​

  1. Régler le mode. Dans Définir le mode d'isolation, choisissez Mode connected, saisissez le Projet (ou laissez vide pour le tenant), cliquez sur Exécuter et confirmez. Résultat attendu : le Résultat montre connected. En cas d'échec : « Nécessite l'un de ces rôles » signifie que votre rôle ne peut pas changer le mode.
  2. Le relire. Cliquez sur Appliquer dans Mode actuel. Résultat attendu : le badge montre connected. En cas d'échec : une ligne de projet l'emporte sur celle du tenant ; réglez le projet lui-même.

Dépannage​

SymptômeCauseCorrection
« Le paramètre mode est invalide. » (parameter_invalid, 422)Mode hors de connected, local_only, air_gapped.Choisissez l'une des trois valeurs.
« Le paramètre internal_hosts est invalide. » (parameter_invalid, 422)Un hôte contient un schéma, un chemin ou des caractères autres que lettres, chiffres, point et tiret : le format est host ou host:port.Saisissez seulement le nom d'hôte et le port facultatif.
« Mode <mode> : le modèle <model_id> du fournisseur <fournisseur> est externe et ne peut pas être routé. » (isolation_external_route, 403) à l'appelLe mode refuse les fournisseurs externes.Utilisez un modèle local, ajoutez son hôte aux Hôtes internes, ou revenez à connected.
« Mode <mode> : appel sortant vers <hôte> refusé, seuls les points d'accès locaux et internes sont autorisés. » (isolation_egress_denied, 403)L'adresse sortante du modèle n'est pas interne.Ajoutez l'hôte aux Hôtes internes.
« Cette opération nécessite un contexte de locataire. » (tenant_required, 400)Pas de tenant.Connectez-vous sur un tenant.
Le mode du tenant est réglé mais un projet reste connectedLe projet a sa propre ligne.Réglez aussi le mode du projet.

Pages liées​