Pour qui : admins Gemini Enterprise, sécurité, équipes métier et « builders » qui veulent connecter leurs agents. Question : un utilisateur peut-il connecter lui-même un agent à notre app, depuis l'interface web Gemini Enterprise, sans accès à la console GCP et sans notre aide ? Ou faut-il que l'équipe admin le fasse dans la console ?
1. Réponse courte
Ça dépend du type d'agent.
| Ce que l'utilisateur veut faire | Seul, dans l'app web ? | Qui doit intervenir |
|---|---|---|
| Créer un agent sans code (instructions, sources, étapes, planification) avec Workflow Builder / Agent Designer | ✅ Oui | Personne, si la fonctionnalité est activée |
| Utiliser dans cet agent les connecteurs (Drive, Jira…) et serveurs MCP déjà en place | ✅ Oui | L'admin les a ajoutés avant |
| Réutiliser un agent ADK ou A2A déjà publié dans l'app, comme une étape de son workflow | ✅ Oui | L'admin l'a publié avant |
| Partager son agent avec des collègues ou des groupes | ✅ Oui, ou ⏳ après validation | L'admin valide, si la validation est activée |
| Connecter un agent qui tourne ailleurs (Agent Runtime, Cloud Run / A2A, autre projet GCP) | ❌ Non | Un admin GE, ou un builder délégué (§4) |
| Connecter son propre serveur MCP | ❌ Non | Un admin (source de données « MCP personnalisé ») |
En une phrase : l'app web permet de construire et de composer des agents avec ce qui existe déjà. Faire entrer quelque chose de nouveau (un agent de code, un serveur MCP, une source) passe par la configuration de l'app, c'est-à-dire la console GCP ou l'API.
Google l'écrit ainsi : « les actions et outils disponibles pour un agent ou un workflow sont limités aux connecteurs, outils et autorisations mis en place par l'administrateur Gemini Enterprise. »
2. Les trois niveaux d'autonomie
Niveau 1 : UTILISATEUR Niveau 2 : BUILDER DÉLÉGUÉ Niveau 3 : ADMIN GEMINI ENTERPRISE
(app web uniquement) (rôle limité aux agents) (console GCP du projet de l'app)
───────────────────────── ───────────────────────── ─────────────────────────────────
• crée des agents sans code • publie SES agents ADK / A2A • tout : connecteurs, MCP, sécurité,
• compose avec les agents et (Agent Runtime, Cloud Run, Model Armor, Agent Gateway, agents
outils déjà publiés autre projet) dans l'app • valide les partages
• partage (avec ou sans validation) • gère qui peut les utiliser • contrôle tout le reste
✗ ne fait rien entrer de neuf ✗ ne touche pas à la sécurité
Rôle : Gemini Enterprise User Rôle : Agent Admin (+ Viewer) Rôle : Gemini Enterprise Admin
| Rôle IAM (projet de l'app) | Accès console GCP ? | Ce qu'il ne peut pas faire | |
|---|---|---|---|
| 1. Utilisateur | roles/discoveryengine.agentspaceUser (Gemini Enterprise User) | Non | Ajouter un agent externe, un MCP, une source ; changer un réglage |
| 2. Builder délégué | roles/discoveryengine.agentAdmin (Agent Admin : 15 permissions, uniquement sur les agents) + roles/discoveryengine.agentspaceViewer pour voir l'app en console | Oui, en lecture + agents | Model Armor, connecteurs, identité, CMEK, réglages de l'app, Agent Gateway |
| 3. Admin | roles/discoveryengine.agentspaceAdmin (Gemini Enterprise Admin, 472 permissions) | Oui | — |
Rôles et permissions vérifiés dans IAM. Agent Admin contient discoveryengine.agents.create / update / delete / manage / setIamPolicy, et rien d'autre de significatif. C'est exactement « ajouter et partager des agents ».
3. Niveau 1 : ce que l'utilisateur fait seul, dans l'app web
3.1 Créer un agent sans code
- Ouvrir l'app web Gemini Enterprise → Agents → Créer un agent (Workflow Builder).
- Décrire l'agent en langage naturel (« un agent qui résume chaque lundi les tickets Jira de mon équipe ») : le concepteur propose les instructions et les étapes.
- Ajouter des sources et outils : uniquement ceux déjà connectés par l'admin (Drive, Jira, serveurs MCP…).
- Ajouter une étape « agent existant » : choisir un agent ADK ou A2A déjà publié dans l'app (ex. « Stock magasin (Supply) »). C'est ainsi qu'un utilisateur compose avec les agents de code, sans les connecter lui-même.
- Tester → Publier → le partager (personnes ou groupes).
Limites à connaître :
- d'après la documentation Google, le sélecteur d'« agent existant » n'affiche pas les agents d'autres projets. Un agent cross-project doit donc d'abord être publié dans l'app (niveau 2 ou 3) ; il apparaît alors comme un agent de l'app (point à vérifier en recette) ;
- si l'agent réutilisé demande une connexion OAuth, l'utilisateur doit s'authentifier avant de lancer le workflow.
3.2 Les réglages admin qui ouvrent ou ferment ce niveau
Console → Gemini Enterprise → l'app → Configurations → fonctionnalités de l'app web :
| Réglage | Effet | Recommandation Acme |
|---|---|---|
| Enable chat agents (création d'agents) | Les utilisateurs peuvent construire des agents | ✅ Activé (pilote), pour un groupe d'abord |
| Enable agent sharing | Les utilisateurs peuvent partager leurs agents | ✅ Activé |
| Enable agent sharing without admin approval | Partage sans validation | ❌ Désactivé : l'admin valide chaque partage (disable-agent-sharing du projet 08 va dans ce sens) |
| Enable End Users to share with Groups | Partage à des groupes entiers | Avec validation uniquement |
| Enable Agent Gallery | Galerie des agents disponibles | ✅ Activé (c'est la vitrine) |
| Enable skills / skill sharing | Compétences réutilisables | Partage sur approbation |
Avec la validation activée, l'admin traite les demandes dans app → Agents → colonne Autorisations utilisateur → Examiner la demande de partage (Review share request).
4. Niveau 2 : le « builder délégué », la bonne réponse pour les équipes qui ont des agents de code
Le besoin : une équipe (ex. Supply) a son agent sur Agent Runtime, dans son projet, et veut le connecter à l'app sans ouvrir un ticket à chaque version.
La solution : lui donner le rôle Agent Admin sur le projet de l'app. Elle peut alors ajouter, modifier, retirer et partager des agents, sans pouvoir toucher à la sécurité de l'app.
4.1 Ce que l'admin fait une fois
Projet A (app) → 🔎 « IAM » → Accorder l'accès → groupe ge-builders-supply@acme.example → rôles :
- Agent Admin (
roles/discoveryengine.agentAdmin) ; - Gemini Enterprise Viewer (
roles/discoveryengine.agentspaceViewer), pour ouvrir l'app en console.
Recommandé : une condition IAM de date d'expiration (accès revu chaque trimestre).
4.2 Ce que l'équipe builder fait ensuite, seule
- Dans son projet B : déployer l'agent (tutoriel 03, méthode 1 ou 2) et donner au compte de Gemini Enterprise du projet A le droit cross-project (Discovery Engine Service Agent ou Cloud Run Invoker). Elle peut le faire : c'est son projet.
- Dans le projet A : console → Gemini Enterprise → l'app → Agents → Ajouter un agent → Agent Runtime ou A2A
(tutoriel 02, étape 6 ; A2A : tutoriel 03, M2.4). Ou en ligne de commande :
./scripts/add_agent_to_ge.sh adk|a2a …. - Onglet Autorisations utilisateur de l'agent → donner Agent User au groupe cible.
À valider en recette : que la page Agents de la console s'ouvre bien avec ces deux rôles seulement. Repli : l'équipe passe par l'API ou le script, qui n'ont besoin que d'Agent Admin.
4.3 Les garde-fous qui rendent la délégation acceptable
| Garde-fou | Pourquoi | Comment |
|---|---|---|
| Le builder ne peut pas désactiver Model Armor, la passerelle, les connecteurs | Séparation des rôles | Agent Admin ne contient pas ces permissions |
| Charte builder signée : Model Armor dans l'agent, identité dédiée, confirmation humaine des écritures, données en UE | Model Armor de l'app ne filtre pas les agents ajoutés | Modèle agents/specialist ; checklist §6 |
| Alerte à chaque ajout ou modification d'agent | La sécurité voit tout, sans bloquer | Journal d'audit discoveryengine, méthodes CreateAgent / UpdateAgent (§6) |
| Partage aux groupes validé par l'admin | Le builder ne s'ouvre pas tout Acme seul | Réglage §3.2 |
| Revue trimestrielle des builders et de leurs agents | Les droits ne s'accumulent pas | Condition IAM d'expiration |
5. Niveau 3 : l'admin, ou la PR Terraform
Pour tout ce qui fait entrer du neuf autre qu'un agent (serveur MCP, source de données, Agent Gateway, Model Armor), et
pour les équipes qui ne sont pas builders : l'admin Gemini Enterprise, dans la console du projet de l'app (tutoriels 02 et 03), ou une
PR dans external_adk_agents (Terraform, README §4). La PR est le mode recommandé en production : relue, tracée, réversible.
6. Le circuit que nous recommandons pour Acme
| Phase | Qui ajoute les agents de code | Utilisateurs |
|---|---|---|
| Pilote (maintenant) | Admin uniquement (console ou PR) | Niveau 1 pour un groupe pilote, partage avec validation |
| Généralisation | Builders délégués pour 2-3 équipes certifiées (Supply, Magasins…) + PR pour les autres | Niveau 1 pour tous, partage avec validation |
| Cible | Builders + Agent Registry / Agent Gateway : seuls les agents du registre sont joignables | Niveau 1 pour tous |
Checklist avant d'accepter un agent (admin ou builder) :
- Hébergé en
europe-*(appeu), sur Agent Runtime de préférence - Model Armor dans l'agent (refuse de démarrer sans)
- Identité dédiée, droits minimum
- Les actions qui modifient demandent une confirmation humaine
- Description claire (c'est elle qui fait choisir l'agent)
- Partagé à un groupe précis, pas à toute l'entreprise
- Propriétaire et contact indiqués (label
owner)
Voir qui ajoute quoi (Logs Explorer, projet de l'app) :
logName:"cloudaudit.googleapis.com%2Factivity"
protoPayload.serviceName="discoveryengine.googleapis.com"
protoPayload.methodName=~"(Create|Update|Delete)Agent"
Pour en faire une alerte e-mail : métrique basée sur les journaux + règle d'alerte, même modèle que l'alerte
« Shadow AI » du projet 08 (75_shadow_ai.tf).
7. Questions fréquentes
| Question | Réponse |
|---|---|
| Un utilisateur sans accès GCP peut-il coller l'URL de son agent dans l'app web ? | Non. Il n'existe pas de bouton « connecter un agent externe » côté utilisateur. Il passe par un builder ou un admin. |
| Un utilisateur peut-il utiliser un agent de code dans son propre agent sans code ? | Oui, s'il est déjà publié dans l'app et partagé avec lui (étape « agent existant »). |
| Le builder délégué peut-il casser la sécurité de l'app ? | Non : Agent Admin ne donne accès qu'aux agents. Il peut publier un agent mal conçu, d'où la checklist et l'alerte. |
Le rôle « Gemini Enterprise User » contient pourtant agents.create ? | Oui : c'est ce qui permet à chacun de créer ses agents sans code dans l'app. Ce rôle sert aux agents de l'utilisateur, pas à connecter un agent externe à toute l'app ; ne pas s'appuyer dessus pour ça. |
| Faut-il donner l'accès au projet B (celui de l'agent) aux utilisateurs ? | Non. Les utilisateurs n'ont besoin que de l'app. C'est le compte de service de Gemini Enterprise qui appelle l'agent. |
| Et pour un serveur MCP ? | Toujours l'admin (source de données « MCP personnalisé »). Une fois en place, les utilisateurs l'utilisent dans leurs agents sans code. |
Sources
- Workflow Builder (création d'agents sans code)
- Ajouter un agent existant dans un workflow
- Connecter des serveurs MCP dans Workflow Builder
- Gérer les fonctionnalités de l'app web
- Partager un agent
- Rôles IAM vérifiés avec
gcloud iam roles describe(octobre 2026)