Lesson 14 — Mise en œuvre de la note

07. Mesure par mesure : ce que la note demande, ce que nous faisons

8 min read

This content is not translated yet. Showing the original version.

Pour qui : tous, et l'audit. Pour chaque mesure : la demande, la réponse native (phase 1), la réponse Terraform / code (phase 2), la preuve (test et journal), le pourquoi, et ce qui reste.

La note est classée « Secret & Internal » : ce document la résume sans la reproduire. Les corrections apportées à la note sont détaillées dans docs/05 §2.

#MesureNatifTerraform / codePreuve
1Agents sur Agent RuntimePlancher Agent Platform30, 90T08–T10
2Shadow AIAsset Inventory, politiques d'org, SCC75, inventaireT18, T19
3Model ArmorTemplates, app, plancher30, 50T01–T07
4Journaux, AxT, Access Approval, SIEMAudit Logs, AxT, AA, routeur70, 80, 85T21
5Filtrage de sortieAgent Gateway, IP fixes60, 90, 95T13
6RAGConnecteurs fédérés40, scannerT14, T15
7VPC-SCDry-run, niveau d'accès60T22
8Identité, domaines, rôlesIdP, groupes10, envs/T16, T17
9Validation humaineConfirmations GEagent, MCPT11, T12
10Agent Registry, partageRegistre, partage désactivé90, 50T19

1. Agents sur Agent Runtime (ex-Agent Engine)

La note demandeHéberger les agents sur la plateforme gérée de Google plutôt que sur des serveurs « maison »
Natif (console)Agent Runtime ; plancher Model Armor appliqué à Agent Platform (phase 1, étape 4)
Terraform / code90_agents_registry.tf : agent sur Agent Runtime (google_vertex_ai_reasoning_engine), identité dédiée, ModelArmorPlugin en mode fermé, refus de démarrer sans Model Armor, sortie via Agent Gateway. 30_ai_guardrails.tf : integrated_services = ["AI_PLATFORM"]
PreuveT08 (jailbreak bloqué par l'agent), T09–T10 (plancher), verify_controls.sh
PourquoiHéberger sur Agent Runtime ne filtre rien en soi. Plugin (par conception) + plancher (filet de sécurité) : deux protections indépendantes
Reste / limiteException encadrée pour les serveurs MCP sur Cloud Run, recommandés par Google pour Gemini Enterprise : privés, enregistrés, déployés par la CI. Migration des agents existants (inventaire §2)

2. Shadow AI

La note demandeRepérer et mettre en quarantaine les IA non gouvernées ; posture de sécurité IA
Natif (console)Cloud Asset Inventory ; politiques d'organisation ; Security Command Center AI Protection
Terraform / code75_shadow_ai.tf : Cloud Run non public (run.allowedIngress), partage limité au domaine (iam.allowedPolicyMemberDomains), UE (gcp.resourceLocations) ; alerte « service public / agent créé ». scripts/shadow_ai_inventory.sh mensuel
PreuveT18 (allUsers refusé ou alerte), T19 (agent hors CI détecté), inventaire archivé
PourquoiEmpêcher coûte moins cher que détecter ; détecter rattrape ce qui passe ; l'inventaire prouve l'état au comité
Reste / limiteQuarantaine réseau et Wiz : décisions d'organisation, hors périmètre de l'app

3. Model Armor (Inspect & Block, URL, données sensibles)

La note demandeFiltrer prompts et réponses, bloquer, détecter les données sensibles
Natif (console)Templates, réglage Model Armor de l'app, plancher
Terraform / code30_ai_guardrails.tf : deux templates INSPECT_AND_BLOCK ; détecteurs DLP France (NIR, CNI, passeport, IBAN…) ; multilingue. 50_app.tf : failure_mode = "FAIL_CLOSED"
PreuveT01–T07 ; scripts/test_model_armor.sh
PourquoiPlus strict que la note : sortie filtrée aussi, mode fermé, détecteurs français. Le filtre « de base » ne voit ni IBAN ni NIR

4. Journaux, Access Transparency, Access Approval, SIEM

La note demandeJournaux d'accès aux données (dont Vertex AI), AxT, Access Approval, envoi au SIEM
Natif (console)Audit Logs ; Access Transparency (organisation) ; Access Approval ; routeur de journaux
Terraform / code70_detection.tf : audit étendu à aiplatform et agentregistry. 80_logging.tf : buckets UE (365 j sécurité, 90 j usage, accès restreint). 85_siem_access.tf : Pub/Sub vers le SIEM ; Access Approval sur tous les services éligibles
PreuveT21 (changement visible côté SIEM) ; journal quotidien ; verify_controls.sh
PourquoiAccess Approval couvre Gemini Enterprise, Agent Runtime, Model Armor et Cloud KMS (GA) : aucun ingénieur Google n'accède aux données sans accord
Reste / limiteAccess Transparency : activation par l'équipe Cloud centrale (support Enhanced / Premium)

5. Filtrage de sortie

La note demandeContrôler les destinations Internet appelées par l'IA (Secure Web Proxy)
Natif (console)Agent Gateway (sortie gouvernée, refus par défaut) ; IP fixes des connecteurs ; politiques d'org sur les destinations
Terraform / code60_advanced.tf : Agent Gateway ; 90_agents_registry.tf : agent relié à la passerelle ; 95_secure_web_proxy.tf : SWP optionnel avec liste blanche
PreuveT13 (lien externe inconnu) ; journaux de la passerelle et du proxy
PourquoiGemini Enterprise est un SaaS : il ne sort pas par le VPC Acme. Le SWP filtre nos charges ; Agent Gateway filtre GE et les agents (fiche 05)

6. RAG : droits et contenu indexé

La note demandeRespecter les droits des sources ; éviter l'empoisonnement des documents
Natif (console)Connecteurs fédérés : les droits de la source s'appliquent à chaque requête
Terraform / code40_connectors.tf (fédéré par défaut). scripts/scan_before_ingest.py : Model Armor analyse PDF, Word, Excel, PowerPoint, CSV, texte ; quarantaine ; fail closed
PreuveT14 (A ne voit pas le fichier de B), T15 (PDF piégé en quarantaine)
PourquoiModel Armor filtre la question et la réponse, pas les documents récupérés : l'analyse en amont ferme cette porte pour les dépôts que l'on alimente
Reste / limiteSources fédérées (Drive, SharePoint) : protection par les droits, le filtre de sortie et la confirmation humaine

Utiliser le scanner dans un circuit de publication :

gcloud storage rsync gs://depot-a-publier ./a_publier
python3 scripts/scan_before_ingest.py --template projects/P/locations/eu/templates/ge-prompt-shield \
  --src ./a_publier --clean ./publie --quarantine ./quarantaine > rapport.csv
gcloud storage rsync ./publie gs://bucket-indexe-par-ge     # seul ce bucket est connecté à Gemini Enterprise

7. VPC Service Controls

La note demandePérimètre anti-exfiltration autour des services IA
Natif (console)Périmètre en dry-run ; niveaux d'accès
Terraform / code60_advanced.tf : discoveryengine, aiplatform, agentregistry, modelarmor, dlp, cloudkms, secretmanager ; niveau d'accès IP Acme ; vpc_sc_enforce
PreuveT22 (accès hors réseau Acme journalisé, puis refusé)
PourquoiLe dry-run évite la coupure ; le niveau d'accès évite de bloquer les utilisateurs
Reste / limitePassage en appliqué après deux semaines ; niveau « appareil géré » si Endpoint Verification est déployé

8. Identité, un projet par domaine, séparation des rôles

La note demandeFédération d'identité, isolation par domaine, rôles séparés
Natif (console)Fournisseur d'identité de l'app ; groupes
Terraform / code10_identity_access.tf : rôles par groupes ; sécurité seule maître des filtres, clés et journaux. Un tfvars et un état par domaine (fiche 06 §4)
PreuveT16 (hors groupe refusé), T17 (admin GE ne touche pas aux filtres) ; contrôle « aucun utilisateur individuel »
PourquoiUn domaine compromis n'expose pas les autres ; un administrateur ne peut pas désactiver sa propre sécurité
Reste / limiteDécision IdP : avec Entra / Okta, pas de connecteurs Workspace ; changer plus tard efface l'historique

9. Validation humaine des actions

La note demandeUn humain confirme toute action qui modifie des données
Natif (console)Gemini Enterprise demande confirmation pour les actions et les outils MCP marqués destructifs
Terraform / codeAgent : require_confirmation sur les outils d'écriture (fiche 08) ; MCP : annotations destructiveHint (projet 04)
PreuveT11 (remboursement confirmé ou refusé), T12 (outil MCP destructif)
PourquoiDernier rempart contre l'injection indirecte : même manipulé, l'agent ne peut rien modifier sans accord

10. Agent Registry et partage

La note demandeCatalogue central des agents ; partage encadré
Natif (console)Agent Registry ; partage d'agents désactivé ; skills sur approbation
Terraform / code90_agents_registry.tf : lecture pour les utilisateurs, publication pour les développeurs. 50_app.tf : fonctionnalités de l'app (disable-agent-sharing, partage des skills sur approbation)
Preuveverify_controls.sh ; T19
PourquoiCe qui n'est pas au registre n'est pas gouverné ; avec Agent Gateway, il n'est même pas joignable
Next