Aller au contenu
English

Résidence des données et questions contractuelles

  • Leçon 12
  • 45 min
  • Module 4 : Vie privée et gouvernance des données

Ce que vous saurez faire

Recueillez les faits que votre architecture peut prouver au sujet des données d’un client. Confiez ensuite les questions juridiques à un réviseur qualifié, plutôt que d’y répondre vous-même.

Avant de commencerCe qu’il faut savoir et avoir sous la mainEnviron 45 minutes

Ce que vous devez savoir

Ce qu’il vous faut sur votre ordinateur

  • Le projet à la fin de ce module, avec son environnement virtuel activé. python -m pytest affiche 48 passed (48 tests réussis).
  • Cette leçon n’ajoute aucun code. Vous exécutez un court script pour recueillir des preuves.

Testé avec Python 3.12.13 sur macOS. Les commandes PowerShell pour Windows n’ont pas été testées.

Avant d’acheter une maison, vous faites venir une inspectrice. Elle écrit : « Le toit fuit au-dessus de la cuisine. Le câblage de la cave a 50 ans. La chaudière a été entretenue l’an dernier; voici le reçu. » Chaque phrase présente un fait qu’elle peut démontrer.

Elle n’écrit pas « vous pouvez annuler la vente » ni « le vendeur a enfreint la loi ». Ce sont des conclusions juridiques, et c’est un avocat qui les formule. L’avocat a besoin du rapport de l’inspectrice pour le faire. Sans le rapport, l’avocat doit deviner. Sans l’avocat, l’acheteur doit deviner.

Une équipe logicielle inspecte son propre système. Elle peut montrer où vont les données, combien de temps elles restent et ce qu’une suppression atteint. C’est à l’avocat de déterminer si cela est permis.

Le problème : « nous avons suivi la liste de vérification »

Section intitulée « Le problème : « nous avons suivi la liste de vérification » »

Ines possède Bramble Books, la deuxième boutique sur la plateforme. Elle pose une question simple à Omar : « L’assistant respecte-t-il les règles de protection de la vie privée? » Omar consulte l’équipe. Tomás répond tout de suite :

« Oui. Nous avons suivi la liste de vérification : nous avons un inventaire des données, nous réduisons les exécutions stockées, nous purgeons après 30 jours, et forget (oublier) supprime un client. Donc, nous sommes conformes. »

Chaque élément de sa liste est vrai. Regardez toutefois ce que les deux leçons précédentes ont montré :

  • Après forget, trois requêtes de Priti restent chez le fournisseur du modèle. Personne dans l’équipe n’a lu ce que les conditions du fournisseur en disent.
  • L’équipe a choisi trente jours. Personne n’a vérifié combien de temps la boutique doit conserver les commandes et les remboursements. Personne n’a vérifié si 30 jours est trop long pour les exécutions stockées.
  • forget « anonymise » la fiche du client : le nom devient [deleted] (supprimé). Mais son identifiant, C-50533, relie encore la fiche à sa commande. « Anonymisé » est le mot utilisé par le code. Le code ne peut pas déterminer ce qu’il signifie en droit.
  • Les clients de Larkfield vivent dans plusieurs endroits : les données d’exercice comprennent Mississauga, Montréal, Québec, Vancouver et d’autres villes. Déterminer quelles règles s’appliquent à chaque client est une question juridique.

La liste de vérification décrit l’architecture. « Conforme » est une conclusion juridique. Tomás est passé de l’une à l’autre, et Omar allait répéter cette conclusion à une cliente.

L’idée : les preuves d’abord, les conclusions d’un réviseur ensuite

Section intitulée « L’idée : les preuves d’abord, les conclusions d’un réviseur ensuite »

Une preuve d’architecture est un fait sur votre système que vous pouvez montrer à quelqu’un, qui peut le vérifier à nouveau. Le code, la configuration, la sortie d’une commande, un test et un contrat reçu sont tous des preuves. « RETENTION_DAYS = 30, et le test test_purge_deletes_only_what_is_past_its_end_date réussit » est une preuve.

Une conclusion juridique indique si les faits respectent une loi ou un contrat. « Trente jours est permis » est une conclusion juridique. Un réviseur qualifié la formule pour votre boutique, selon les lois qui s’y appliquent. Il s’agit généralement d’un avocat ou d’un professionnel de la protection de la vie privée.

Deux types de questions nécessitent souvent ce réviseur :

  • La résidence des données désigne l’endroit où les données personnelles sont stockées et traitées : dans quel pays ou quelle région. Chaque étape d’une requête peut traverser une frontière.
  • Les questions contractuelles portent sur ce que chaque sous-traitant peut faire avec les données. La partie d’un contrat qui le précise s’appelle souvent un accord de traitement des données. Elle couvre l’utilisation, les sous-traitants ultérieurs (les propres fournisseurs du sous-traitant), la conservation, la suppression et les mesures après une atteinte.

L’équipe doit rendre les preuves complètes et faciles à vérifier. Le réviseur doit formuler la conclusion. Indiquez chaque endroit où le rôle de l’un s’arrête et celui de l’autre commence.

Suivez le message de Priti depuis son clavier jusqu’à la dernière copie. L’image montre chaque endroit où il passe, la preuve qui situe cet endroit et la question pour le réviseur.

Quatre endroits sur une ligne, reliés par des flèches. Le client, à Mississauga, en Ontario, dans les données d'exercice; preuve : la fiche du client; question : quelles lois sur la vie privée s'appliquent à ces clients? Le serveur de l'application, là où vous la déployez; l'application d'exercice tourne sur votre ordinateur; preuve : les paramètres d'hébergement; question : peut-on stocker les données dans cette région? Le fournisseur du modèle, la région du déploiement du modèle; preuve : ASSISTANT_BASE_URL et la console du fournisseur; question : peut-on y envoyer les requêtes, et le fournisseur les conserve-t-il? Les sauvegardes, là où se trouve leur stockage; preuve : les paramètres de sauvegarde; question : les sauvegardes peuvent-elles être dans une autre région? Sous la ligne : chaque flèche peut traverser une frontière; l'architecture montre où, et une révision qualifiée doit déterminer si cela est permis.
Le trajet du message d'un client, la preuve pour chaque endroit et la question qui nécessite une révision qualifiée.
Description textuelle du diagramme

Quatre endroits, dans l’ordre :

  1. Le client : Mississauga, en Ontario, dans les données d’exercice. Preuve : la fiche du client. Question à réviser : quelles lois sur la vie privée s’appliquent à ces clients?
  2. Le serveur de l’application : là où vous la déployez. L’application d’exercice tourne sur votre ordinateur. Preuve : les paramètres d’hébergement. Question : peut-on stocker les données dans cette région?
  3. Le fournisseur du modèle : la région du déploiement du modèle. Preuve : ASSISTANT_BASE_URL et la console du fournisseur. Question : peut-on y envoyer les requêtes, et le fournisseur les conserve-t-il?
  4. Les sauvegardes : là où se trouve leur stockage. Preuve : les paramètres de sauvegarde. Question : les sauvegardes peuvent-elles être dans une autre région?

Chaque flèche peut traverser une frontière. L’architecture montre où; une révision qualifiée doit déterminer si cela est permis.

Certaines preuves sont dans le code, d’autres non. Exécutez d’abord les trois billets de soutien de Priti avec secure sur une nouvelle base de données d’exercice. Suivez l’étape 10 de la leçon précédente. Enregistrez ensuite ce script sous evidence.py dans le dossier du projet, puis exécutez python evidence.py :

evidence.py
from support_assistant.config import Settings
from support_assistant.inventory import summary
from support_assistant.storage import RETENTION_DAYS
from support_assistant.systems import World
settings = Settings.from_env()
print("model provider:", settings.provider, "| model:", settings.model,
"| endpoint:", settings.base_url or "none (recorded decisions, nothing leaves this computer)")
print("stored runs kept for:", RETENTION_DAYS, "days (minimized storage)")
s = summary(World(), "C-50533")
for r in s["rows"]:
print(f" {r['where']}: {r['count']} -> {r['reach']}")
model provider: mock | model: chat-small | endpoint: none (recorded decisions, nothing leaves this computer)
stored runs kept for: 30 days (minimized storage)
database: customers: 1 -> anonymized
database: orders: 1 -> kept for the accounts
database: tickets: 3 -> deleted
database: conversations: 3 -> deleted
audit log: 3 -> kept: append-only
model provider: 3 -> not reached
files: attachments: 2 -> deleted
backups: 1 -> not reached

Avec le simulateur, la preuve honnête est « rien ne quitte cet ordinateur ». Configurez maintenant un fournisseur réel dans l’environnement. Le point de terminaison ci-dessous est inventé, et le script ne fait aucun appel. Sur macOS ou Linux :

Fenêtre de terminal
ASSISTANT_PROVIDER=openai_compatible ASSISTANT_BASE_URL=https://larkfield-ai.example/v1 python evidence.py

Sur Windows, dans PowerShell, définissez les deux variables, exécutez le script, puis supprimez-les :

Fenêtre de terminal
$env:ASSISTANT_PROVIDER = "openai_compatible"; $env:ASSISTANT_BASE_URL = "https://larkfield-ai.example/v1"
python evidence.py
Remove-Item Env:ASSISTANT_PROVIDER, Env:ASSISTANT_BASE_URL

Les deux premières lignes de la sortie sont :

model provider: openai_compatible | model: chat-small | endpoint: https://larkfield-ai.example/v1
stored runs kept for: 30 days (minimized storage)

Le code connaît l’adresse du point de terminaison. Il ne connaît ni la région du déploiement derrière cette adresse ni ce que le fournisseur conserve. Ces preuves se trouvent dans la console du fournisseur et dans ses conditions. L’équipe doit les recueillir là et les joindre, avec la date de lecture. Certains fournisseurs conservent les requêtes un certain temps, par exemple pour détecter les abus. D’autres proposent de ne rien conserver. Les conditions précisent ce qui s’applique, et elles peuvent changer.

Kwame transforme les preuves en demande de révision pour le conseiller en protection de la vie privée de la boutique. Chaque ligne contient une question, les preuves et la question ouverte pour le réviseur. L’image montre les quatre lignes principales.

Trois colonnes : la question, les preuves d'architecture que l'équipe peut montrer avec le code, la configuration et les exécutions, et les points qui nécessitent une révision qualifiée, où un avocat ou un professionnel de la protection de la vie privée décide. Ligne 1 : où va le message d'un client? Preuves : l'inventaire, 8 endroits après trois exécutions; le point de terminaison dans ASSISTANT_BASE_URL; la région du déploiement. Révision : peut-on l'envoyer à ce fournisseur, dans cette région? La boutique doit-elle en informer ses clients? Ligne 2 : combien de temps est-il conservé? Preuves : RETENTION_DAYS = 30 et le test de purge; le paramètre d'expiration des sauvegardes; la durée de conservation publiée par le fournisseur. Révision : combien de temps faut-il conserver les commandes et les remboursements? Est-ce que 30 jours convient aux exécutions stockées? Ligne 3 : peut-on supprimer les données d'un client? Preuves : la sortie de forget; après son exécution, 8 copies dans 4 endroits; le test de suppression qui examine chaque table. Révision : anonymisé signifie-t-il anonyme en droit? Le journal d'audit peut-il conserver son identifiant? Qu'en est-il de la copie du fournisseur? Ligne 4 : qui les traite pour la boutique? Preuves : le fournisseur du modèle, l'hébergeur, le stockage des sauvegardes, selon la carte des flux de données. Révision : chaque contrat couvre-t-il l'utilisation, les sous-traitants ultérieurs, la conservation et l'avis d'atteinte? Sous le tableau : les preuves vont au réviseur; la conclusion revient du réviseur, pas du code.
La demande de révision de Kwame : ce que l'architecture peut prouver et ce que seul un réviseur qualifié peut décider.
Description textuelle du diagramme

Quatre questions, chacune avec les preuves et la question ouverte à réviser.

  1. Où va le message d’un client? Preuves : l’inventaire (8 endroits après trois exécutions), le point de terminaison dans ASSISTANT_BASE_URL, la région du déploiement. À réviser : peut-on l’envoyer à ce fournisseur, dans cette région? La boutique doit-elle en informer ses clients?
  2. Combien de temps est-il conservé? Preuves : RETENTION_DAYS = 30 et le test de purge, le paramètre d’expiration des sauvegardes, la durée de conservation publiée par le fournisseur. À réviser : combien de temps faut-il conserver les commandes et les remboursements? Est-ce que 30 jours convient aux exécutions stockées?
  3. Peut-on supprimer les données d’un client? Preuves : la sortie de forget; après son exécution, 8 copies dans 4 endroits; le test de suppression qui examine chaque table. À réviser : « anonymisé » signifie-t-il anonyme en droit? Le journal d’audit peut-il conserver son identifiant? Qu’en est-il de la copie du fournisseur?
  4. Qui les traite pour la boutique? Preuves : le fournisseur du modèle, l’hébergeur et le stockage des sauvegardes, selon la carte des flux de données. À réviser : chaque contrat couvre-t-il l’utilisation, les sous-traitants ultérieurs, la conservation et l’avis d’atteinte?

Les preuves vont au réviseur. La conclusion revient du réviseur, pas du code.

Kwame rédige la demande en phrases simples. Remarquez les indications : chaque phrase est soit une preuve vérifiable, soit une question pour le réviseur.

Preuve. Après trois exécutions et forget C-50533, 8 copies restent dans 4 endroits. Il s’agit de la commande (1), du journal d’audit avec les identifiants seulement (3), du fournisseur du modèle (3) et des sauvegardes (1). Pièce jointe : la sortie de inventory C-50533, avec le projet à la fin du module 4.

Preuve. Les exécutions stockées ne conservent aucun texte de message et expirent après 30 jours. Code : RETENTION_DAYS = 30 dans storage.py. Test : test_purge_deletes_only_what_is_past_its_end_date, réussi.

Nécessite une révision qualifiée. La boutique peut-elle conserver la commande et les événements d’audit avec l’identifiant du client après une demande de suppression? Pendant combien de temps?

Nécessite une révision qualifiée. Les conditions du fournisseur, lues à la date jointe, décrivent sa conservation des requêtes. Respectent-elles les obligations de la boutique envers ses clients?

Kwame n’écrit pas « c’est conforme » ni « ce n’est pas conforme ». La réponse du conseiller retourne dans le tableau d’inventaire comme décision, avec le nom du conseiller et la date. Elle devient alors une preuve, elle aussi.

Quand demander une révision qualifiée, et ce qu’elle coûte

Section intitulée « Quand demander une révision qualifiée, et ce qu’elle coûte »

Demandez-la avant le premier vrai client. Demandez-la à nouveau quand les preuves changent. Par exemple : un nouveau sous-traitant, une nouvelle région, un nouveau type de données personnelles, un nouvel endroit pour les copies ou de nouvelles conditions du fournisseur. Demandez-la aussi quand vous ne pouvez pas répondre entièrement à la demande d’un client. C’est le cas d’une suppression qui ne peut pas atteindre le fournisseur. Le module 6 ajoute un autre moment : un incident.

Vous n’avez pas besoin d’un réviseur pour les choix d’ingénierie qui restent dans le domaine des preuves. « Stocker moins » et « supprimer plus tôt » sont des choix par défaut sûrs que tout réviseur peut resserrer ou assouplir.

Les coûts :

  • Temps. Une révision prend des jours ou des semaines. De bonnes preuves la raccourcissent : le réviseur lit les faits au lieu de les demander.
  • Argent. La révision qualifiée est un travail rémunéré. Une demande claire pose seulement les questions importantes.
  • Les preuves deviennent périmées. Les conditions d’un fournisseur, une région ou un paramètre de conservation peuvent changer. Datez chaque preuve et vérifiez-la à nouveau selon un calendrier.

Erreur courante

Nous avons suivi la liste de vérification, donc nous sommes conformes

Symptôme : un membre de l’équipe dit à un client, ou une page de vente affirme, que l’assistant « est conforme » ou « respecte les règles de protection de la vie privée ». L’affirmation repose sur une liste de vérification : inventaire, minimisation, conservation et suppression, tous cochés.

Cause : une liste de vérification énumère des mesures techniques. C’est une preuve d’architecture. « Conforme » est une conclusion juridique sur des lois et des contrats précis, pour des clients précis. Personne de qualifié ne l’a formulée. La liste de Tomás ne couvrait pas les trois requêtes chez le fournisseur, la conservation légale des commandes ni le sens d’« anonymisé ».

Diagnostic : pour chaque phrase de l’affirmation, demandez-vous : « Puis-je le montrer avec du code, une configuration, une sortie ou un document que j’ai? » Si oui, c’est une preuve. Si la phrase dit « permis », « obligatoire », « conforme » ou « légal », c’est une conclusion. Demandez ensuite qui l’a formulée.

Correction : remplacez l’affirmation par des preuves et des questions ouvertes, comme dans la demande de révision de Kwame. Envoyez les questions à un réviseur qualifié. En attendant la réponse, décrivez ce que fait le système, pas ce que la loi en dit. Par exemple : « Les exécutions stockées ne conservent aucun texte de message et sont supprimées après 30 jours. »

Faire le bilan du module : chaque copie et son retrait

Section intitulée « Faire le bilan du module : chaque copie et son retrait »

Voici la vérification de fin de module. Pour chaque endroit où se trouvent les données de Priti, vous pouvez maintenant situer la copie et expliquer son retrait :

Endroit Copies après trois exécutions (minimisées) Comment la copie est retirée Question pour une révision qualifiée
Fiche du client 1 forget l’anonymise Est-elle anonyme en droit?
Billets et fichiers joints 3 et 2 forget les supprime aucune provenant de l’architecture
Exécutions stockées 3, résultat seulement la purge après 30 jours, ou forget Est-ce que 30 jours convient?
Commandes 1 conservée, notes effacées Combien de temps faut-il les conserver?
Journal d’audit 3, identifiants seulement conservées, ajout seulement Peut-il conserver l’identifiant, et pendant combien de temps?
Fournisseur du modèle 3 l’application ne les atteint pas Que permettent les conditions du fournisseur?
Sauvegardes 1 expire; exécutez forget à nouveau après une restauration Où sont-elles, et pendant combien de temps?

Omar demande à l’équipe d’essayer un deuxième fournisseur de modèle pour les billets en français, avec ASSISTANT_BASE_URL. Ses serveurs sont dans un autre pays. Rédigez deux lignes pour la demande de révision de Kwame. Rédigez une ligne de preuves que l’équipe doit recueillir et une ligne de questions pour une révision qualifiée. N’écrivez pas de conclusion.

Afficher un exemple de réponse

Preuves à recueillir. L’adresse du nouveau point de terminaison dans l’environnement et la région du déploiement dans la console du fournisseur. Les conditions du fournisseur sur la conservation, les sous-traitants ultérieurs et l’utilisation des requêtes, avec leur date de lecture. Les billets qui lui sont envoyés : ceux en français, soit 3 des 26 tâches du jeu d’évaluation. Une nouvelle ligne dans l’inventaire : « fournisseur du modèle 2 ». La preuve que forget le signale encore comme non atteint.

Questions pour une révision qualifiée. Peut-on envoyer les messages des clients à un sous-traitant dans ce pays? La boutique doit-elle informer ses clients ou leur demander d’abord? Les conditions du fournisseur sur la conservation et les sous-traitants ultérieurs respectent-elles les obligations de la boutique? Que doit faire la boutique si un client demande de supprimer des données détenues par ce fournisseur?

La réponse ne nomme aucune loi et n’affirme pas que quelque chose est « permis » ou « conforme ». Elle donne au réviseur des faits et des questions.

Vérifiez votre compréhension

Classez ces quatre énoncés en preuves d'architecture ou en conclusions juridiques : (a) « Les exécutions stockées sont supprimées 30 jours après l'exécution. » (b) « Conserver le journal d'audit après une demande de suppression est permis. » (c) « forget laisse 8 copies dans 4 endroits. » (d) « La boutique doit conserver les commandes pour sa comptabilité. »

Afficher la réponse

Preuves : (a), démontré par RETENTION_DAYS et le test de purge; et (c), démontré par la sortie de l’inventaire. Conclusions : (b) et (d). Elles indiquent ce qui est permis ou exigé. Un réviseur qualifié doit donc les formuler. Le code peut seulement consigner « conservé pour la comptabilité » comme décision de la boutique.

Vérifiez votre compréhension

Pourquoi le code peut-il indiquer où se trouve le point de terminaison du modèle, mais pas où les données sont traitées?

Afficher la réponse

Le code connaît seulement l’adresse dans ASSISTANT_BASE_URL. La console du fournisseur indique la région du déploiement derrière cette adresse. Ses conditions précisent ce qu’il fait ensuite, comme conserver les requêtes ou faire appel à des sous-traitants ultérieurs. L’équipe doit recueillir ces preuves en dehors du code et les dater.

Vérifiez votre compréhension

Ines demande à Omar : « Pouvez-vous supprimer tout ce qui concerne un de mes clients? » À partir des preuves de ce module, rédigez une réponse courte et honnête.

Afficher la réponse

Par exemple : « L’application supprime ou anonymise la fiche du client, les billets, les fichiers, les exécutions stockées, les approbations et les courriels. Elle conserve la commande et les événements d’audit avec seulement des identifiants. Les copies chez notre fournisseur de modèle et dans les sauvegardes sont hors de portée de l’application. Les sauvegardes expirent, et notre conseiller en protection de la vie privée vérifie les conditions du fournisseur. »

Récapitulatif

  • Une preuve d’architecture est un fait que vous pouvez montrer et qu’une autre personne peut vérifier à nouveau : code, configuration, sortie, tests, contrats reçus.
  • Une conclusion juridique indique si les faits respectent une loi ou un contrat. Un réviseur qualifié la formule, pas le code ni une liste de vérification.
  • Résidence des données : chaque endroit où les données passent peut se trouver dans un autre pays. Le code connaît le point de terminaison; la région et la conservation chez le fournisseur proviennent de la console et des conditions.
  • Questions contractuelles : utilisation, sous-traitants ultérieurs, conservation, suppression et avis de violation, pour chaque responsable du traitement.
  • « Nous avons suivi la liste de vérification, donc nous sommes conformes » transforme des preuves en conclusion. Remplacez cette affirmation par des preuves et des questions ouvertes.
  • Vous pouvez maintenant indiquer où se trouve chaque copie des données d’un client et comment elle est retirée.

Leçon suivante : Impact et coût des erreurs