Projet final : analyse de risques d'un assistant IA client
Le cas : « Léa », l'assistante de la boutique
Une enseigne fictive de vente en ligne d'électroménager déploie Léa, un assistant sur son site et dans son application.
| Élément | Description |
|---|---|
| Utilisateurs | Clients connectés et visiteurs anonymes |
| Plateforme | Gemini Enterprise (agent) ; une variante interne pour les conseillers sur watpilot |
| Sources RAG | FAQ publique, fiches produits (dont certaines rédigées par des vendeurs partenaires), conditions générales, et un dossier « procédures internes SAV » ajouté « pour améliorer les réponses » |
| Outils | get_orders(customer_id), create_return(order_ref), issue_voucher(amount) sans plafond, send_email(to, body) |
| Pièces jointes | Les clients peuvent déposer photos et factures PDF |
| Journaux | Conversations complètes conservées sans durée définie |
| Interface | Le widget rend le Markdown, images comprises |
| Information | Aucune mention indiquant qu'il s'agit d'une IA |
flowchart LR C["Client ou visiteur"] --> W["Widget (rendu Markdown + images)"] W --> A["Agent Léa"] A --> R["RAG : FAQ, fiches vendeurs, CGV, procédures internes"] A --> T1["get_orders(customer_id)"] A --> T2["create_return"] A --> T3["issue_voucher sans plafond"] A --> T4["send_email vers toute adresse"] C -->|"pièces jointes"| A A --> L["Journaux complets, durée illimitée"]
Étape 1 : identifier les risques
Listez au moins huit risques, chacun relié à une catégorie OWASP ou à une exigence RGPD / AI Act.
Quel élément du cas crée la combinaison la plus dangereuse pour une exfiltration par injection indirecte ?
Contenu non fiable (fiches vendeurs, pièces jointes), données sensibles (commandes) et canal de sortie (e-mail libre, images) : la « lethal trifecta » est réunie.
Étape 2 : coter et construire la matrice
Échelle proposée : probabilité de 1 (rare) à 4 (très probable), impact de 1 (faible) à 4 (critique). Criticité = probabilité × impact. Seuils, par exemple : 1–4 faible, 5–8 moyen, 9–16 élevé.
| Impact 1 | Impact 2 | Impact 3 | Impact 4 | |
|---|---|---|---|---|
| Probabilité 4 | 4 | 8 | 12 | 16 |
| Probabilité 3 | 3 | 6 | 9 | 12 |
| Probabilité 2 | 2 | 4 | 6 | 8 |
| Probabilité 1 | 1 | 2 | 3 | 4 |
Un risque coté probabilité 2 et impact 4 a une criticité de 8. Avec les seuils proposés, comment le traiter ?
Le score seul ne suffit pas : un impact critique (fuite massive, perte financière) appelle généralement une mesure même si la probabilité est modérée. Les seuils sont un outil d'aide à la décision, pas un automatisme.
Étape 3 : conformité
Répondez : base légale des traitements, AIPD nécessaire ou non, contrat de sous-traitance, durée de conservation, catégorie AI Act et obligation de transparence.
Étape 4 : plan d'actions
Pour chaque risque élevé ou moyen : une action, un type (déterministe ou probabiliste), un propriétaire, une échéance, un indicateur de vérification.
Votre livrable
Un document (ou un fichier YAML/tableur) contenant : la description, la matrice cotée avant et après actions, le volet conformité, le plan d'actions. Faites-le, puis comparez avec le corrigé.
Voir la solution
Matrice des risques (avant actions)
| ID | Risque | Réf. | P | I | Criticité |
|---|---|---|---|---|---|
| R1 | Injection indirecte via fiche vendeur ou PDF, puis exfiltration par e-mail ou image | LLM01, LLM05, LLM02 | 3 | 4 | 12 |
| R2 | Accès aux commandes d'un autre client (customer_id fourni par le modèle) | LLM06, LLM02 | 3 | 4 | 12 |
| R3 | Bons d'achat émis sans plafond | LLM06 | 3 | 3 | 9 |
| R4 | Procédures internes SAV révélées au public via le RAG | LLM08 | 4 | 2 | 8 |
| R5 | Engagement inventé (garantie, délai, prix) | LLM09 | 3 | 3 | 9 |
| R6 | Journaux complets sans durée : non-conformité et surface de fuite | RGPD art. 5.1.e, 32 | 4 | 3 | 12 |
| R7 | Absence d'information « vous parlez à une IA » | AI Act art. 50, RGPD art. 13 | 4 | 2 | 8 |
| R8 | Abus de volume par visiteurs anonymes (coûts, déni de service) | LLM10 | 2 | 2 | 4 |
| R9 | Données de santé spontanées dans le chat (ex. « appareil pour mon handicap ») | RGPD art. 9 | 2 | 3 | 6 |
quadrantChart title Matrice avant actions x-axis Impact faible --> Impact critique y-axis Probabilite faible --> Probabilite forte quadrant-1 Traiter en priorite quadrant-2 Surveiller et reduire quadrant-3 Accepter quadrant-4 Proteger par mesure deterministe R1 injection: [0.9, 0.7] R2 autre client: [0.88, 0.72] R3 bons d achat: [0.65, 0.68] R4 procedures internes: [0.4, 0.9] R5 engagement invente: [0.62, 0.66] R6 journaux: [0.66, 0.9] R7 transparence: [0.38, 0.88] R8 volume: [0.35, 0.35] R9 donnees sante: [0.62, 0.35]
Conformité
- Rôles : l'enseigne est responsable de traitement ; le fournisseur cloud est sous-traitant (contrat art. 28, région de traitement documentée, pas d'entraînement sur les données).
- Base légale : exécution du contrat pour le suivi de commandes ; intérêt légitime pour l'assistance aux visiteurs ; toute réutilisation pour améliorer le modèle = finalité distincte.
- AIPD : à mener par prudence (technologie innovante, grande échelle, clients) ; à confirmer avec le DPO.
- AI Act : obligations de transparence (art. 50) ; non haut risque pour cet usage ; maîtrise de l'IA (art. 4) pour les conseillers.
Plan d'actions
| Action | Risques | Type | Propriétaire | Échéance | Vérification |
|---|---|---|---|---|---|
Remplacer get_orders(customer_id) par get_my_orders() lié à la session | R2 | Déterministe | Tech lead | Avant prod | Test RT-03 à 0 % |
Remplacer send_email par une réponse dans le fil client uniquement | R1 | Déterministe | Tech lead | Avant prod | Revue de code + RT-02 |
| Rendu sans images externes ni HTML, liens en liste blanche | R1 | Déterministe | Front | Avant prod | Test RT-06 |
Plafond sur issue_voucher + confirmation conseiller au-delà | R3 | Déterministe | Produit | Avant prod | Journaux de la passerelle |
| Retirer les procédures internes du corpus public ; index séparé pour l'assistant conseillers | R4 | Déterministe | Data | Avant prod | Test RT-07 |
| Filtre d'injection et de données sensibles (ex. Model Armor) en entrée et sortie | R1, R9 | Probabiliste | Sécurité | Avant prod | Taux de détection sur jeu de test |
| Réponses ancrées avec sources, refus si pas de source ; CGV comme référence | R5 | Probabiliste | Produit | Avant prod | Échantillon relu chaque mois |
| Durée de conservation définie, masquage, accès restreint aux journaux | R6, R9 | Déterministe | DPO + Ops | 30 jours | Purge automatique vérifiée |
| Mention « assistant automatisé » + lien vers un conseiller et vers la notice | R7 | Déterministe | Produit | Avant prod | Capture d'écran en revue |
| Quotas par session, captcha pour anonymes, alerte budgétaire | R8 | Déterministe | Ops | 30 jours | Test de charge |
| Red teaming complet puis revue des risques | Tous | — | Sécurité | Avant prod puis tous les 6 mois | Rapport |
Matrice cible (après actions, à confirmer par les tests)
R2 et R3 passent à une probabilité de 1 (contrôles déterministes) ; R1 passe à 2 × 3 = 6 grâce au retrait du canal d'e-mail et du rendu d'images ; R4, R6, R7 deviennent faibles. Le risque résiduel principal reste R5 (désinformation) : il est accepté par le porteur métier, avec une surveillance mensuelle.
Grille d'auto-évaluation
Comptez 1 point par critère rempli. 12 points ou plus : objectif atteint. 8 à 11 : reprenez les leçons liées aux critères manqués. Moins de 8 : refaites le projet après les modules 1 et 2.
| # | Critère | Leçon de référence |
|---|---|---|
| 1 | J'ai identifié au moins 8 risques distincts | 1.1 |
| 2 | Chaque risque est relié à une catégorie OWASP ou à un article précis | 1.1, 3.1, 3.2 |
| 3 | J'ai repéré la chaîne d'injection indirecte (contenu tiers → données → sortie) | 1.2 |
| 4 | J'ai signalé le customer_id fourni par le modèle | 2.1 |
| 5 | J'ai traité le rendu Markdown et les images comme un risque de sortie | 1.3, 2.2 |
| 6 | J'ai repéré les procédures internes dans le corpus public | 1.3 |
| 7 | Ma matrice utilise une échelle définie et des seuils explicites | Projet |
| 8 | J'ai privilégié des mesures déterministes pour les risques à impact critique | 2.1 |
| 9 | Chaque action a un propriétaire, une échéance et un moyen de vérification | 4.2 |
| 10 | J'ai défini une durée de conservation et un masquage des journaux | 2.2, 3.1 |
| 11 | J'ai traité base légale, AIPD et contrat de sous-traitance | 3.1 |
| 12 | J'ai identifié l'obligation de transparence de l'AI Act | 3.2 |
| 13 | J'ai prévu un red teaming et une revue périodique | 2.3, 4.2 |
| 14 | J'ai documenté au moins un risque résiduel accepté, avec son propriétaire | 4.2 |
Je sais faire
- Décrire un assistant IA sous forme de schéma de flux exploitable pour l'analyse de risques
- Coter des risques en probabilité × impact et construire une matrice
- Produire le volet conformité RGPD et AI Act d'un cas d'usage
- Rédiger un plan d'actions priorisé, attribué et vérifiable
- Présenter une matrice avant / après et justifier le risque résiduel