Lección 12 — Guides pas à pas

10-11. Les droits : les voir et les donner dans la console, un par un

8 min de lectura

Este contenido aún no está traducido. Se muestra la versión original.

Ce guide répond à : quels droits le projet 10 utilise-t-il, et pourquoi ? Comment voir chacun dans la console, en lecture seule, sans rien changer ? Comment le donner (ou le retirer) en clics, et quelle est la commande ou la ressource Terraform qui fait la même chose ?

Testé en vrai (14 octobre 2026, projets de test) : tous ces droits ont été donnés par script et par Terraform, puis vérifiés par des appels réels. Par exemple, le compte du projet de l'app reçoit 403 sans le droit ①, et passe avec. Les écrans sont ceux de la console utilisés au projet 09 et sur l'instance Acme.


1. Tous les droits, sur une page

Exemple Acme :

  • projet des agents : aiml-gemini-ent-exp-0zga (n° 433175138344) ;
  • projet de l'app : acme-gemini-prod (n° 523307489860) ;
  • compte de l'app : service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com.
#QuiRôleSur quoiPourquoiNécessaire pour
Asheets-build-saStorage Object Viewer, Artifact Registry Writer, Logs Writerprojet des agentsConstruire les images (Cloud Build)Déployer
Bsheets-mcp-saAucun–Le serveur n'agit qu'avec le jeton de l'utilisateur–
Csheets-agent-saVertex AI User, Logs Writerprojet des agentsL'agent appelle Gemini, écrit ses journauxChemin 2 (agent)
Dsheets-agent-saCloud Run Invokerservice sheets-mcp et slides-mcpL'agent appelle le serveur MCPChemin 2 (agent)
①acompte de l'appCloud Run Invokerservice sheets-mcp et slides-mcp (si Slides est déployé)Le connecteur « Custom MCP Server » appelle le serveurChemin 1 (connecteur)
①bcompte de l'appCloud Run Invokerservice sheets-agentL'app appelle l'agent A2AChemin 2, A2A
②compte de l'appDiscovery Engine Service Agentprojet des agentsL'app appelle l'agent Agent RuntimeChemin 2, Agent Runtime
Eles utilisateurs (un groupe)Agent Userl'agent, dans l'appVoir et utiliser l'agent dans le chatChemin 2
Fl'admin de l'appDiscovery Engine Editor (ou Admin)projet de l'appCréer le connecteur et ajouter l'agentChemins 1 et 2
Gl'admin de l'organisationOrganization Policy Administratorprojet de l'appLes règles d'organisation (10-5, étape 2)Chemin 1

Ce qui n'est PAS un droit IAM : l'accès aux classeurs. Il vient du consentement de chaque utilisateur (« Autoriser ») et de ses propres partages Drive. Aucun compte de service n'a accès aux Sheets.

2. Voir, en lecture seule

2.1 Les droits sur un service Cloud Run (D, 1a, 1b)

Projet des agents → 🔎 Cloud Run → cliquez sur le service (sheets-mcp, puis sheets-agent) → onglet Security (Sécurité).

Attendu sur sheets-mcp :

  • Authentication : Require authentication (le service est privé) ;
  • dans la liste des droits, une rubrique Cloud Run Invoker avec :
    • sheets-agent-sa@… (D) ;
    • service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com (①a).

Attendu sur sheets-agent : Cloud Run Invoker avec le compte de l'app (①b).

Autre écran, même information : liste Cloud Run → cochez la case du service → Permissions (panneau de droite).

En commande, en lecture seule :

gcloud run services get-iam-policy sheets-mcp --region=europe-west1 --project=aiml-gemini-ent-exp-0zga
gcloud run services get-iam-policy sheets-agent --region=europe-west1 --project=aiml-gemini-ent-exp-0zga

2.2 Les droits sur le projet (A, C, 2)

Projet des agents → 🔎 IAM → onglet View by principals (Afficher par compte principal).

  1. Cochez « Include Google-provided role grants » (Inclure les attributions de rôles fournies par Google). Sans cette case, le compte de l'app est caché : c'est un compte de service géré par Google.
  2. Filtre : sheets- → sheets-build-sa (A) et sheets-agent-sa (C), avec leurs rôles.
  3. Filtre : gcp-sa-discoveryengine → le compte de l'app, avec Discovery Engine Service Agent (②).

En commande :

gcloud projects get-iam-policy aiml-gemini-ent-exp-0zga --flatten="bindings[].members" \
  --filter="bindings.members~(sheets-|gcp-sa-discoveryengine)" --format="table(bindings.members,bindings.role)"

2.3 « Ce compte a-t-il vraiment le droit ? » : Policy Troubleshooter

🔎 Policy Troubleshooter (Outil de dépannage des stratégies) :

  • Principal : le compte, par exemple service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com ;
  • Resource : //run.googleapis.com/projects/aiml-gemini-ent-exp-0zga/locations/europe-west1/services/sheets-mcp ;
  • Permission : run.routes.invoke.

→ Check access. Attendu : Has access (A l'accès), avec le rôle qui le donne. C'est la réponse sûre : elle tient compte des groupes, des conditions et des règles héritées.

2.4 Dans l'app (E)

Projet de l'app → Gemini Enterprise → l'app → Agents → l'agent → User permissions : la liste des groupes ou personnes avec Agent User.

2.5 Les règles d'organisation (G)

Projet de l'app → 🔎 Organization Policies → filtrez « custom MCP » : Disable custom MCP server connector for Gemini Enterprise doit être Not enforced ; puis « egress » : les 3 domaines (10-5, étape 2).

3. Donner, en clics

Faites-le dans cet ordre. Après chaque droit, attendez 2 à 3 minutes avant de tester : c'est le temps de propagation.

3.1 A et C : les rôles des comptes du projet (avant de déployer)

Projet des agents → IAM → Grant access (Accorder l'accès) :

  • New principals : sheets-build-sa@aiml-gemini-ent-exp-0zga.iam.gserviceaccount.com ;
  • Role : Storage Object Viewer → + Add another role → Artifact Registry Writer → + Add another role → Logs Writer ;
  • Save.

Recommencez pour sheets-agent-sa@…, avec Vertex AI User et Logs Writer.

(Les comptes eux-mêmes se créent dans IAM & Admin → Service Accounts : 10-4, étape 2.)

3.2 D : l'agent peut appeler le serveur MCP

Cloud Run → sheets-mcp → onglet Security → Add principal. La fenêtre « Grant access to "sheets-mcp" » s'ouvre :

  • New principals : sheets-agent-sa@aiml-gemini-ent-exp-0zga.iam.gserviceaccount.com (une ligne, sans espace) ;
  • Select a role : tapez Cloud Run Invoker → Cloud Run Invoker (Demandeur Cloud Run). Pas Cloud Run Admin, ni un rôle « ACM… » ;
  • pas de condition ;
  • Save.

Attendu : dans la liste, Cloud Run Invoker (1) avec sheets-agent-sa@….

3.3 Droit 1a : le connecteur peut appeler le serveur MCP

Même écran, sur sheets-mcp → Add principal :

  • New principals : service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com ;
  • Role : Cloud Run Invoker → Save.

Attendu : Cloud Run Invoker (2), avec sheets-agent-sa@… et service-100000000003@….

Ce compte n'existe que si Gemini Enterprise est activé dans le projet de l'app (c'est le cas chez Acme). Sinon, l'enregistrement est refusé avec « … does not exist ».

Google Slides : refaites 3.2 et 3.3 sur le service slides-mcp (même écran, mêmes comptes).

3.4 Droit 1b : l'app peut appeler l'agent A2A

Cloud Run → sheets-agent → Security → Add principal → le compte de l'app → Cloud Run Invoker → Save.

3.5 Droit 2 : l'app peut appeler l'agent Agent Runtime

Projet des agents → IAM → Grant access :

  • New principals : service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com ;
  • Role : tapez Discovery Engine Service Agent → Discovery Engine Service Agent ;
  • Save.

Si ce rôle n'apparaît pas dans la liste (la console masque parfois les rôles d'agent de service, vu au projet 09), une seule commande :

gcloud projects add-iam-policy-binding aiml-gemini-ent-exp-0zga --condition=None \
  --role=roles/discoveryengine.serviceAgent \
  --member=serviceAccount:service-100000000003@gcp-sa-discoveryengine.iam.gserviceaccount.com

Vérifier : partie 2.2, avec la case « Include Google-provided role grants » cochée.

3.6 E : les utilisateurs voient l'agent

Projet de l'app → Gemini Enterprise → l'app → Agents → l'agent → User permissions → Add → le groupe (par exemple equipe-agents@acme.example) → rôle Agent User → Save.

Le connecteur « Google Sheets » (chemin 1) n'a pas besoin de ce droit. Il est disponible pour tous les utilisateurs de l'app une fois branché (10-5, étape 6).

4. Retirer

DroitConsoleCommande
D, ①a, ①bCloud Run → le service → Security → la ligne du compte → icône corbeille (Remove principal) → Confirmgcloud run services remove-iam-policy-binding <service> --region=europe-west1 --role=roles/run.invoker --member=serviceAccount:<compte>
A, C, ②IAM → la ligne du compte → crayon (Edit principal) → corbeille sur le rôle → Savegcloud projects remove-iam-policy-binding <projet> --role=<rôle> --member=serviceAccount:<compte> --condition=None
EApp → l'agent → User permissions → retirer–
Tout–./scripts/deployer.sh nettoyer (le projet des agents)

Couper l'accès en urgence : retirez ①a et ①b. L'app ne peut plus rien appeler, avec un effet en 1 à 2 minutes.

5. Les mêmes droits par script ou Terraform

DroitScriptTerraform (terraform/main.tf)
A, C./scripts/deployer.sh preparergoogle_project_iam_member.build, .agent
D./scripts/deployer.sh agent (ou agent-runtime)google_cloud_run_v2_service_iam_member.mcp (membre : compte de l'agent)
①a, ①b, ②./scripts/deployer.sh droits-app (affiche le plan, puis confirmation)google_cloud_run_v2_service_iam_member.mcp, .agent, google_project_iam_member.ge_runtime (si NUM_APP est rempli)
E, F, Gconsole seulement–

Vous pouvez mélanger les méthodes : par exemple, tout déployer par script et donner ①, ② dans la console pour voir chaque écran. Le résultat est le même. Évitez seulement de gérer le même droit à la fois par Terraform et à la main : Terraform remettrait son état.

Siguiente