Formation

Projet 08 : Gemini Enterprise conforme à la note de sécurité Acme

Une note de sécurité d'entreprise appliquée : console d'abord, puis Terraform par paliers, plan de tests et exploitation quotidienne.

Avancé 30 leçons 6h
Commencer la formation
Progression 0% · 0/30

Pour qui : toute l'équipe projet. Développeurs, DevOps / plateforme, chefs de projet, sécurité, DPO. Objectif : appliquer les 10 mesures de la Security Advice Note Acme à l'application Gemini Enterprise. D'abord avec ce que Google Cloud offre nativement (console, quelques clics, effet immédiat), puis en Terraform (reproductible, relu, auditable).

Ce projet part du projet 06 (le socle : identité, CMEK, connecteurs, Model Armor, journaux). Le socle reste valable et il est documenté dans docs/00-socle-securite.md. Ce README ne décrit que ce qui change pour la note et comment procéder.


Sommaire

  1. En une page
  2. Qui fait quoi
  3. Les 10 mesures et notre réponse
  4. Comment procéder : 4 phases
  5. Ce que le projet contient
  6. Démarrage rapide
  7. Pourquoi d'abord la console, puis Terraform ?
  8. Corrections à apporter à la note
  9. Vérifié / à valider
  10. Documentation détaillée

1. En une page

Le constat. La note Acme fixe 10 mesures pour l'IA générative. Le socle 06 en couvrait le cœur (Model Armor, audit, identité). Il manquait la protection des agents personnalisés, la lutte contre le Shadow AI, l'export SIEM, Access Approval, l'analyse des documents avant indexation, le contrôle de sortie, le niveau d'accès VPC-SC et l'usage réel d'Agent Registry.

Ce que fait le projet 08.

AjoutMesureComment
Model Armor sur tous les appels Gemini du projet, agents compris§1, §3Plancher Model Armor étendu à Agent Platform (AI_PLATFORM), en observation puis en blocage
Agent exemple sur Agent Runtime : identité dédiée, Model Armor, validation humaine des actions§1, §9agent/ + 90_agents_registry.tf
Shadow AI : empêcher (politiques d'org), détecter (alerte), inventorier (script)§275_shadow_ai.tf + scripts/shadow_ai_inventory.sh
Journaux aiplatform + agentregistry, export SIEM, Access Approval§470_detection.tf, 85_siem_access.tf
Secure Web Proxy (option) pour les agents qui sortent par le VPC§595_secure_web_proxy.tf
Analyse Model Armor des documents avant indexation (quarantaine)§6scripts/scan_before_ingest.py
VPC-SC : aiplatform et agentregistry dans le périmètre, niveau d'accès IP Acme§760_advanced.tf
Agent Registry : catalogue officiel, droits lecture / publication§1090_agents_registry.tf
Journal quotidien et contrôle de conformité automatiquesexploitationscripts/daily_report.sh, scripts/verify_controls.sh

Le principe. Chaque mesure est d'abord activée dans la console (phase 1) pour voir son effet sur des cas réels. Elle est ensuite reprise dans Terraform (phase 2), qui devient la seule source de vérité. Rien n'est construit « à côté » de Google : chaque brique est un service Google Cloud natif.


2. Qui fait quoi

RôleCe qu'il fait dans ce projetÀ lire en priorité
Chef de projet / PMPlanifie les 4 phases, obtient les décisions (DPO, SOC, identité), suit le tableau de conformité§1, §3, §4, docs/05
Sécurité (RSSI, SOC)Possède Model Armor, les clés, les journaux ; valide chaque PR sur les garde-fous ; reçoit les alertes et le flux SIEM§3, §8, docs/03, docs/04
DevOps / plateformeActive la phase 1, écrit et applique la phase 2 via la CI Terraform, importe ce qui a été créé en consoledocs/01, docs/phase2-terraform/
Développeurs d'agentsDéploient sur Agent Runtime, avec plugin Model Armor et confirmation humaine ; enregistrent dans Agent Registryagent/, fiche développeurs
DPODécide de la journalisation du contenu et des durées de conservationdocs/00 §10
Admins Google Workspace / EntraGroupes, ID client Workspace, fournisseur d'identitédocs/01 étape 0

Règle de séparation des rôles (mesure 8) : un administrateur Gemini Enterprise ne peut pas affaiblir Model Armor, toucher aux clés ou lire les journaux privés. Seul le groupe sécurité le peut.


3. Les 10 mesures et notre réponse

Légende : 🟢 natif console (phase 1), 🔷 Terraform (phase 2), 🧰 script fourni, ⚪ hors périmètre de l'app.

#Mesure de la noteNatif consoleTerraformScriptStatut
1Agents sur Agent Runtime (ex-Agent Engine)🟢 Plancher Model Armor Agent Platform🔷 90_agents_registry.tf, 30_ai_guardrails.tf✅
2Shadow AI : quarantaine + inventaire🟢 Politiques d'org, Asset Inventory, SCC AI Protection🔷 75_shadow_ai.tf🧰 shadow_ai_inventory.sh✅ (Wiz : ⚪)
3Model Armor Inspect & Block, URL, SDP🟢 Templates + réglage de l'app🔷 30_ai_guardrails.tf (DLP FR)🧰 test_model_armor.sh✅ plus strict que la note
4Journaux d'accès, AxT, Access Approval, SIEM🟢 Audit Logs, Access Transparency, Access Approval🔷 70_detection.tf, 80_logging.tf, 85_siem_access.tf🧰 daily_report.sh✅ (AxT : réglage d'org)
5Filtrage de sortie (SWP)🟢 Agent Gateway, IP fixes des connecteurs🔷 60_advanced.tf, 95_secure_web_proxy.tf✅ voir correction §8.6
6RAG : droits + analyse avant indexation🟢 Connecteurs fédérés🔷 40_connectors.tf🧰 scan_before_ingest.py✅
7VPC Service Controls🟢 Périmètre en dry-run🔷 60_advanced.tf (+ aiplatform, niveau d'accès)✅ dry-run → enforcement
8Identité (WIF), un projet par domaine, séparation des rôles🟢 Fournisseur d'identité de l'app🔷 10_identity_access.tf✅ (choix IdP : §8.7)
9Validation humaine des actions🟢 Confirmation des actions GE🔷 agent require_confirmation✅
10Agent Registry central, partage encadré🟢 Agent Registry, partage d'agents désactivé🔷 90_agents_registry.tf, 50_app.tf✅

Le détail mesure par mesure (ce que la note demande, ce qu'on fait, la preuve) est dans docs/05-correspondance-note.md.


4. Comment procéder : 4 phases

 Semaine 1         Semaine 2-3                 Semaine 3-4             Ensuite, chaque jour
┌──────────┐    ┌──────────────────┐    ┌─────────────────────┐    ┌────────────────────┐
│ PHASE 1  │───▶│ PHASE 2          │───▶│ PHASE 3             │───▶│ PHASE 4            │
│ Console  │    │ Terraform        │    │ Tests (recette)     │    │ Exploitation       │
│ natif    │    │ paliers A→D      │    │ 22 tests + preuves  │    │ journal quotidien  │
│ observer │    │ importer, figer  │    │ verify_controls.sh  │    │ revue mensuelle    │
└──────────┘    └──────────────────┘    └─────────────────────┘    └────────────────────┘
  Effet immédiat,   Seule source de       Chaque mesure prouvée    Détecter, réagir,
  sans risque       vérité ensuite        par un test et un log    prouver à l'audit

Phase 1 : activer le natif (console), semaine 1

But : obtenir tout de suite la protection que Google fournit, et observer avant de bloquer. Toutes ces actions sont réversibles et sans effet sur les utilisateurs, sauf mention contraire.

OrdreAction consoleMesureEffet
1Journaux d'audit « accès aux données » sur Gemini Enterprise, Agent Platform, Model Armor§4On voit qui fait quoi
2Templates Model Armor + Model Armor dans l'app GE§3Questions et réponses filtrées
3Plancher Model Armor, avec Agent Platform en inspection seule§1, §3On mesure ce qui serait bloqué dans les agents
4Agent Registry activé ; partage d'agents désactivé dans l'app§10Un seul catalogue
5Asset Inventory : lancer l'inventaire Shadow AI§2Liste des agents et services exposés
6Access Transparency (org) puis Access Approval (projet)§4Accès de Google tracés et soumis à accord
7VPC-SC en dry-run§7On voit ce qui serait bloqué, sans rien bloquer

Pas à pas, avec le chemin exact dans la console et la vérification : docs/01-phase1-console.md.

Phase 2 : figer en Terraform, semaines 2 et 3

But : tout ce qui a été activé à la main devient du code relu, déployé par la CI (même circuit que le projet 07 : PR → plan → validation sécurité → apply). Les réglages faits en console sont importés : Terraform les reprend sans les recréer.

PalierContenuPrérequis
A (projet seul)Socle 06 + aiplatform dans l'audit + plancher Agent Platform + Agent Registry + alerte Shadow AIDroits sur le projet
B (avec le SOC)Export SIEM Pub/SubLe SOC fournit l'identité de son connecteur
C (droits organisation)Politiques d'org, VPC-SC + niveau d'accès (dry-run, puis vpc_sc_enforce = true), Access ApprovalRôles org ; Access Transparency ; ID client Workspace
D (si agents dans le VPC)Secure Web ProxyRéseau, sous-réseaux, liste blanche validée

Détails, fichiers et commandes, une fiche par palier : docs/phase2-terraform/.

Phase 3 : prouver, semaines 3 et 4

22 tests, chacun avec le résultat attendu et le journal qui le prouve. Deux scripts automatisent l'essentiel :

./scripts/test_model_armor.sh       # filtrage : légitime accepté, attaques bloquées
./scripts/verify_controls.sh        # conformité : chaque mesure est-elle réellement en place ?

Plan complet : docs/03-plan-de-tests.md.

Phase 4 : exploiter, chaque jour

FréquenceQuiQuoiDurée
Chaque jourSécurité (ou SOC)./scripts/daily_report.sh : changements, blocages, Shadow AI, accès refusés10 min
Chaque semaineSécurité + plateformeFaux positifs Model Armor, agents ajoutés au registre, alertes reçues30 min
Chaque moisSécurité + PMverify_controls.sh + shadow_ai_inventory.sh archivés (preuve d'audit)1 h
Chaque trimestreSécurité + DPORevue des droits, de la liste blanche de sortie et des durées de conservation2 h

Où trouver chaque journal, requêtes prêtes à l'emploi, réponses aux incidents : docs/04-exploitation-journaliere.md.


5. Ce que le projet contient

08-gemini-enterprise-securite-acme/
├── README.md                      ← ce guide
├── docs/
│   ├── 00-socle-securite.md       le socle hérité du 06 (6 couches, détaillées)
│   ├── 01-phase1-console.md       activer le natif, pas à pas : clics, valeurs, gcloud, vérifier, annuler
│   ├── phase2-terraform/          8 fiches : import, paliers A→D, CI/CD, mesure par mesure, développeurs
│   ├── 03-plan-de-tests.md        22 tests + preuves
│   ├── 04-exploitation-journaliere.md  journal quotidien, requêtes, incidents
│   ├── 05-correspondance-note.md  les 10 mesures une par une + corrections
│   └── 06-dlp-cmek-agent-gateway.md  les 3 briques expliquées : console puis Terraform
├── terraform/                     socle 06 + fichiers 75, 85, 90, 95 (nouveaux)
│   └── docs/                      une fiche par fichier .tf (débutant)
├── agent/secure_agent/            agent exemple : Model Armor + validation humaine
├── scripts/
│   ├── test_model_armor.sh        recette du filtrage
│   ├── verify_controls.sh         contrôle de conformité (lecture seule)
│   ├── daily_report.sh            journal quotidien (Markdown)
│   ├── shadow_ai_inventory.sh     inventaire Shadow AI (Asset Inventory)
│   ├── scan_before_ingest.py      analyse des documents avant indexation
│   ├── register_agent.sh, pack.py publication de l'agent
│   └── build_pdf.py, build_pptx.js  génération du PDF et du deck
├── Gemini-Enterprise-Note-securite-Acme.pdf
└── Gemini-Enterprise-Note-securite-Acme.pptx

6. Démarrage rapide

cd terraform
cp terraform.tfvars.example terraform.tfvars    # projet, groupes, connecteurs, paliers
terraform init
terraform plan                                   # LIRE le plan
terraform apply

cd ..
./scripts/test_model_armor.sh
PROJECT_ID=... APP_ID=... ./scripts/verify_controls.sh
./scripts/daily_report.sh > rapport-$(date +%F).md

Agent exemple, en local (sans Model Armor) puis sur Agent Runtime :

cd agent && LOCAL_DEV=1 python secure_agent/agent.py      # autotest des outils
LOCAL_DEV=1 adk web .                                      # essai : « rembourse 10 € sur CMD-1002 »
# puis deploy_secure_agent = true dans terraform.tfvars et terraform apply

7. Pourquoi d'abord la console, puis Terraform ?

C'est la question qu'on nous posera. La réponse tient en quatre points :

  1. La protection n'attend pas le code. Activer les journaux d'audit ou Model Armor prend dix minutes en console. Attendre deux semaines de développement, c'est rester deux semaines sans protection.
  2. Observer avant de bloquer. Le plancher Agent Platform en mode inspection et VPC-SC en dry-run montrent ce qui serait bloqué. On règle les seuils sur des cas réels, sans casser un service en production.
  3. Le code ensuite, pour durer. Un réglage manuel se perd, se modifie sans trace, ne se reproduit pas dans le projet du domaine suivant. Terraform le rend relu (PR), traçable (Git), reproductible (un projet par domaine, mesure 8) et vérifiable (le plan montre toute dérive).
  4. Rien n'est perdu entre les deux. Les ressources créées en console sont importées dans Terraform (blocs import, fiche 01). Après la phase 2, plus aucun changement en console : l'alerte « garde-fou modifié » signale toute exception.

8. Corrections à apporter à la note

La note est solide sur le fond. Six points sont inexacts techniquement et méritent d'être corrigés avant qu'elle serve de référence d'audit. Le détail et les sources sont dans docs/05 §2.

#La note ditLa réalitéCe qu'on fait
8.1Exemple JSON Model ArmorNoms de champs invalides (enforcement, raiSettings.hateSpeech) : l'API le refuseSyntaxe correcte dans 30_ai_guardrails.tf
8.2basicConfig détecte les données AcmeDétecteurs orientés US : ni IBAN, ni NIR, ni CNIConfiguration avancée avec modèle DLP FR
8.3« Detect and redact »Dans Gemini Enterprise, une détection bloque : pas de masquageMessage clair à l'utilisateur, tests adaptés
8.4Le filtre d'URL couvre « Echo Leak »Il ne bloque que les URL connues comme malveillantesTest de recette dédié (T09) + contrôle de sortie
8.5Model Armor protège tous les modèlesDans GE, il ne filtre pas les agents personnalisésPlugin dans l'agent et plancher Agent Platform
8.6SWP filtre la sortie de l'IAGemini Enterprise est un SaaS : il ne sort pas par le VPC AcmeAgent Gateway + politiques d'org pour GE ; SWP pour les charges du VPC
8.7WIF Entra/Okta (mesure 8)Avec un IdP tiers, les connecteurs Workspace ne fonctionnent pas ; changer d'IdP efface l'historiqueDécision à prendre avant la production

9. Vérifié / à valider

Vérifié : terraform validate OK (provider hashicorp/google 8.5) ; tous les types et champs Terraform contrôlés dans le schéma du provider ; Access Approval couvre Gemini Enterprise, Agent Runtime, Model Armor et KMS (doc Google, GA) ; autotests de l'agent (secure_agent OK), du scanner (self-test OK) et du contrôle de conformité. Pas encore déployé sur un projet Acme.

À valider au premier déploiementRepli
Le Secure Web Proxy exige-t-il un certificat même sans inspection TLS ?Ajouter certificate_urls (Certificate Manager) si l'API le demande
Affichage de la demande de confirmation d'un agent ADK dans l'interface GESinon : confirmation dans l'agent par un message explicite (« répondez OUI »)
Taille maximale d'un document pour l'analyse Model ArmorLe script met en quarantaine au-delà de 4 Mo (revue manuelle)
Filtre de l'alerte Shadow AI (noms de méthodes exacts)Ajuster après le premier événement observé
Points du socle 06docs/00 §16

10. Documentation détaillée

DocumentPour
01 – Phase 1 : activer le natif dans la consoleDevOps, sécurité
Phase 2 : Terraform (dossier, 8 fiches)DevOps, sécurité, développeurs
03 – Plan de testsSécurité, PM, recette
04 – Exploitation journalière, journaux, incidentsSécurité, SOC
05 – Correspondance avec la note, mesure par mesureTous, audit
06 – DLP, CMEK, Agent Gateway : ce que c'est, comment les configurerTous
00 – Socle de sécurité (projet 06)Tous
terraform/docs/Débutants Terraform
PDF / PPTX à la racinePrésentation à l'équipe

Supports

pdfGemini Enterprise Note securite Acme160 Ko

Ressources

Tout télécharger (.zip)