درس 5 — Tutoriels pas à pas

05. Droits et régions : qui donne quel droit, à qui, où

5 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Pour qui : DevOps, sécurité, équipes qui publient ou consomment des agents.

Règle générale : le droit est toujours donné par le projet de la ressource appelée, à l'identité qui appelle. L'équipe propriétaire garde donc la main : c'est elle qui ouvre l'accès à son agent.

C'est la référence unique des droits. Les tutoriels (02, 03) et le parcours « agent déjà dans un registre » (04) appliquent cette matrice.


1. La matrice des droits

#ScénarioIdentité qui appelleRôlePosé surCommande
0L'app GE utilise un agent Agent Runtime du MÊME projetcompte de Gemini Enterprise(aucun à ajouter) : roles/discoveryengine.serviceAgent déjà attribué par Google sur son projet——
0 bisL'app GE utilise un agent A2A sur Cloud Run du MÊME projetcompte de Gemini Enterpriseroles/run.invokerLe service Cloud Runcomme 2
1L'app GE (projet A) utilise un agent ADK Agent Runtime du projet Bservice-NUM_A@gcp-sa-discoveryengine.iam.gserviceaccount.comroles/discoveryengine.serviceAgentProjet Bgcloud projects add-iam-policy-binding B --role=roles/discoveryengine.serviceAgent --member=serviceAccount:service-NUM_A@gcp-sa-discoveryengine.iam.gserviceaccount.com
2L'app GE (A) utilise un agent A2A sur Cloud Run du projet Bmême compte GEroles/run.invokerLe service Cloud Run (projet B)gcloud run services add-iam-policy-binding SERVICE --region=R --project=B --role=roles/run.invoker --member=…
3Un agent du projet A appelle un agent Agent Runtime du projet Bcompte de service de l'agent Aroles/aiplatform.viewerL'agent B (ressource)Terraform google_vertex_ai_reasoning_engine_iam_member
4L'agent A cherche dans l'Agent Registry du projet Bcompte de service de l'agent Aroles/agentregistry.viewerProjet Bgcloud projects add-iam-policy-binding B --role=roles/agentregistry.viewer --member=serviceAccount:…
5L'agent A appelle un agent A2A sur Cloud Run du projet Bcompte de service de l'agent Aroles/run.invokerLe service (B)comme 2
6Un agent utilise un template Model Armor d'un projet C (projet sécurité)compte de service de l'agentroles/modelarmor.userProjet Cfait par modules/adk_agent
7Agent Gateway laisse passer vers un serveur MCP / agent du registreidentité qui appelle (GE ou agent)roles/iap.egressorLa ressource du registregoogle_iap_agent_registry_*_iam_member (projet 08)
8Une personne explore le registre d'une autre équipegroupe de l'utilisateurroles/agentregistry.viewerProjet B—
9Des utilisateurs GE voient l'agent dans l'appgroupeAgent UserL'agent, dans l'apponglet Autorisations utilisateur

Ce qu'on ne fait jamais : donner roles/aiplatform.user ou roles/editor sur le projet d'en face « pour que ça marche ». Cela permettrait de modifier ou de supprimer tous ses agents.


2. Les règles de région

App Gemini EnterpriseAgents Agent RuntimeAgent GatewayRegistre (import)
eueurope-*europe-west1europe-west1 ou eu
usus-*us-central1us-central1 ou us
globaltoutesus-central1us-central1, us ou global

Un agent en us-central1 ne peut pas être ajouté à une app eu. Pour Acme (données en UE) : tout en europe-west1.


3. Si VPC Service Controls est appliqué (projet 08)

Un périmètre autour du projet GE bloque les appels vers un projet hors du périmètre, et inversement. Trois options :

OptionQuand
Mettre les deux projets dans le même périmètreÉquipes de même niveau de sensibilité (le plus simple)
Règle de sortie (egress) du périmètre GE vers le projet B, pour aiplatform.googleapis.com, limitée aux comptes des agentsProjet B hors périmètre, appels sortants seulement
Règle d'entrée (ingress) dans le périmètre de BProjet B dans un autre périmètre

Toujours tester en dry-run : les violations apparaissent dans les journaux VPC-SC avec le service et l'identité exacts à autoriser.


4. Ce que Terraform fait pour vous (ce projet)

FichierDroits posés
modules/adk_agentIdentité dédiée de chaque agent + rôles sur son projet + modelarmor.user sur le projet des templates (#6)
20_orchestrator.tf#3 (aiplatform.viewer sur stock-agent) et #4 (agentregistry.viewer sur le projet agents)
30_gemini_enterprise.tf#1 pour chaque projet qui héberge un agent publié (agent stock + external_adk_agents)
01-bis-cloud-run-a2a/terraformIdentité dédiée par agent, #6, et #0 bis / #2 (run.invoker sur chaque service Cloud Run)
02-bis-agent-runtime/terraformIdentité dédiée par agent (modules/adk_agent), #6, et #1 si le projet des agents n'est pas celui de l'app

Le compte qui exécute Terraform doit avoir resourcemanager.projectIamAdmin (ou équivalent) sur les deux projets. En CI, c'est souvent la limite : chaque équipe pose les droits de son projet dans son dépôt, et ce dépôt-ci ne fait que la publication. Les commandes de la matrice servent alors de « demande d'accès » à transmettre.


5. Diagnostiquer un refus

SymptômeCause probableVérification
Gemini Enterprise : « agent indisponible » sur un agent d'un autre projet#1 manquantgcloud projects get-iam-policy B --flatten=bindings --filter="bindings.role:discoveryengine.serviceAgent"
L'orchestrateur répond « Agent stock indisponible : 403 … reasoningEngines.query »#3 manquantAPI : curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" https://europe-west1-aiplatform.googleapis.com/v1/projects/B/locations/europe-west1/reasoningEngines/ID:getIamPolicy
« 'stock-agent' absent de l'Agent Registry »#4 manquant, mauvaise région, ou nom affiché différentpython scripts/registry.py B europe-west1 avec le compte de l'agent
Ajout refusé : régionApp eu et agent hors europe-*Redéployer l'agent en europe-west1
PERMISSION_DENIED avec vpcServiceControlsUniqueIdentifierPérimètre VPC-SC§3
التالي