Inventaire des données
- Leçon 10
- 50 min
- Module 4 : Vie privée et gouvernance des données
Leçon 10 sur 18 · Sécurité de l'IA, vie privée et conception responsableInventaire des données
1. Cartographier le système et ses risques
2. Injection de requête et contenu non fiable
3. Sécuriser les outils et l'accès externe
4. Vie privée et gouvernance des données
5. Comportement responsable et supervision humaine
6. Tester, surveiller et réagir
Ce que vous saurez faire
Avant de protéger, de réduire ou de supprimer les données d’un client, vous devez savoir où se trouve chaque copie. Cette leçon construit cette liste pour une cliente de Larkfield.
Avant de commencerCe qu’il faut savoir et avoir sous la main
Ce que vous devez savoir
- La carte des flux de données et la frontière de confiance de l’assistant, dans La frontière de Larkfield, dans un fichier.
- Le journal d’audit,
redact()et la règle « aucun texte de message dans le journal », dans Un événement d’audit utile et non sensible. - Les locataires, les adhésions et les rôles, dans Utilisateurs et organisations, du cours sur l’authentification.
Ce qu’il vous faut sur votre ordinateur
- Le projet à la fin du module 3, avec son environnement virtuel activé.
python -m pytestaffiche41 passed(41 tests réussis). Si votre projet diffère, copiez l’instantanéend-of-m03du dépôt des laboratoires et partez de là. - Le dépôt des laboratoires
nextia-learning-labsà côté du dossier du projet.
Testé avec Python 3.12.13 sur macOS. Les commandes PowerShell pour Windows n’ont pas été testées.
Déménager
Section intitulée « Déménager »Vous déménagez dans un nouvel appartement. Vous voulez que votre courrier cesse d’arriver à l’ancienne adresse. Vous faites donc une liste : la banque, le médecin, le centre sportif, la compagnie de téléphone, une revue. Vous avisez chacun. Trois mois plus tard, une lettre arrive encore à l’ancienne adresse. Elle vient d’un magasin où vous avez acheté un sofa. Vous aviez oublié qu’il avait votre adresse.
Vous ne pouvez pas modifier ou supprimer ce que vous n’avez pas recensé. La copie du magasin n’était pas cachée. Elle ne figurait pas sur votre liste.
Le problème : « supprimez mes données » ne se règle pas en une suppression
Section intitulée « Le problème : « supprimez mes données » ne se règle pas en une suppression »Priti Shah est une cliente de Larkfield, C-50533. Comme toutes les données de ce cours, elle est fictive. Sa jardinière en cèdre est arrivée avec un panneau latéral fissuré. Elle a écrit trois billets de soutien à ce sujet. Plus tard, elle écrit encore : « Dites-moi ce que vous conservez à mon sujet, puis supprimez-le. »
Amira pense d’abord à la table customers. Priti y a une ligne : son nom, son courriel, son téléphone et sa ville. Mais l’assistant a déjà traité les trois billets de Priti. Voici les événements du journal d’audit après trois exécutions avec la conception faible start. C’est notre exécution, abrégée. Vous ferez les mêmes trois exécutions plus loin dans cette leçon, dans Mesurer : le point de départ faible conserve davantage :
usr-sam assistant run {'case': 'ATK-15', 'customer': 'C-50533', 'message': 'Damage report for my planter attached (order LK-640436).', ...}usr-sam send_email executed {'order_id': None}usr-sam assistant run {'case': 'TASK-24', 'customer': 'C-50533', 'message': 'How long do I have to report a damaged item?', ...}usr-sam assistant run {'case': 'TASK-02', 'customer': 'C-50533', 'message': "My cedar planter (order LK-640436) came with one side panel cracked right through. The box was crushed. ...", ...}usr-sam create_return_label executed {'order_id': 'LK-640436'}usr-sam send_email executed {'order_id': None}Les mots de Priti sont dans le journal. Ils sont aussi dans les billets, les conversations stockées et chaque requête envoyée au fournisseur du modèle. Si Amira supprime la ligne de la cliente, la plupart des données de Priti restent. Le modèle de menace du module 1 nommait ce risque T8. Il dit : « Le journal et les conversations stockées conservent chaque message et toutes les coordonnées pour toujours. » Ce module corrige ce problème, en commençant par une liste.
L’idée : un inventaire des données
Section intitulée « L’idée : un inventaire des données »Les données personnelles sont toute information concernant une personne qu’on peut identifier. Un nom et une adresse courriel identifient Priti directement. Son identifiant client, C-50533, l’identifie par un lien : toute personne ayant accès à la base de données peut la retrouver. Les spécialistes de la sécurité parlent souvent de PII, personally identifiable information (renseignements permettant d’identifier une personne), pour désigner cette idée.
Un inventaire des données liste tous les endroits qui contiennent des données personnelles. Comme votre liste de déménagement, il n’est utile que s’il est complet. Pour chaque endroit, il répond à cinq questions :
- Quelles données s’y trouvent, et en combien de copies?
- Pourquoi sont-elles là? C’est leur finalité. Une copie sans finalité ne devrait pas exister.
- Qui les traite pour le magasin? Un sous-traitant est une autre entreprise qui traite les données pour le compte du magasin. Le fournisseur du modèle en est un, car chaque requête lui est envoyée.
- Où sont-elles? Dans la base de données de l’application, un espace de fichiers, chez un fournisseur ou dans une sauvegarde.
- Qui peut les lire, et avec quel rôle : les membres de Larkfield, l’équipe de sécurité, l’équipe d’exploitation ou le fournisseur.
L’inventaire indique aussi comment chaque copie peut être retirée : supprimée, anonymisée, conservée volontairement ou hors de portée de l’application. La prochaine leçon agit sur cette colonne.
Un petit exemple : une cliente, toutes les valeurs
Section intitulée « Un petit exemple : une cliente, toutes les valeurs »Commencez avec une nouvelle base de données d’exercice, avant toute exécution de l’assistant. Les données de Priti sont à cinq endroits :
| Endroit | Copies | Contient le texte des messages ou des coordonnées |
|---|---|---|
| fiche cliente | 1 | oui : nom, courriel, téléphone, ville |
| commandes | 1 | non : articles et totaux, liés par son identifiant |
| billets | 3 | oui : ses trois messages |
| fichiers joints | 2 | oui : deux rapports de dommages |
| sauvegardes | 1 | oui : une copie de toute la base de données |
Cela donne 8 copies à 5 endroits, dont 7 contiennent du contenu. L’assistant s’exécute maintenant une fois sur chacun de ses trois billets. ATK-15 est un rapport de dommages avec un commentaire inséré, TASK-24 une question sur les délais, TASK-02 la jardinière fissurée. Chaque exécution crée de nouvelles copies. L’image montre où elles vont.
Description textuelle du diagramme
Priti Shah (cliente C-50533) écrit trois billets au sujet d’une jardinière en cèdre. Ses données se trouvent ensuite dans deux zones.
Dans l’application de soutien de Larkfield, une suppression peut atteindre cinq endroits :
- Fiche cliente, 1 copie : nom, courriel, téléphone, ville. Pourquoi : pour la contacter. Qui la lit : les membres de Larkfield.
- Billets, 3, et fichiers joints, 2 : ses messages et ses rapports de dommages. Pourquoi : pour lui répondre. Qui les lit : les membres de Larkfield et les outils de l’assistant.
- Commandes, 1 : articles et totaux. Pourquoi : la comptabilité du magasin. Qui la lit : les membres de Larkfield et l’outil get_order.
- Exécutions stockées, 3, avec stockage intégral : son message, le brouillon de réponse, son nom et son courriel. Pourquoi : pour revoir une exécution. Qui les lit : toute personne ayant accès à la base de données.
- Journal d’audit, 3 événements : qui a fait quoi et quand, seulement des identifiants, sans texte de message. Pourquoi : la sécurité. Qui le lit : l’équipe de sécurité.
Un encadré en pointillés indique ce que ces trois exécutions n’ont pas créé : approbations, courriels à son adresse, remboursements et étiquettes de retour. Une autre exécution peut en ajouter.
Hors de l’application, une suppression dans l’application ne peut pas atteindre deux endroits :
- Fournisseur du modèle, 3 exécutions : la requête avec ses messages, dans chacun des 14 appels au modèle. Pourquoi : pour rédiger le brouillon de réponse. Qui la lit : le fournisseur, selon ses conditions.
- Sauvegardes, 1 : une copie de toute la base de données. Pourquoi : la récupération après une panne. Qui la lit : l’équipe d’exploitation.
Après les trois exécutions : 17 copies à 8 endroits, dont 13 avec le texte de ses messages ou ses coordonnées.
Trois exécutions ont ajouté neuf copies à trois nouveaux endroits : trois exécutions stockées, trois événements d’audit et trois requêtes chez le fournisseur du modèle. Le fournisseur du modèle est l’endroit le plus souvent oublié. Durant ces trois exécutions, l’assistant a fait 14 appels au modèle. Chaque appel a envoyé de nouveau le message de Priti.
Dans vos exercices, le simulateur rejoue des décisions enregistrées. Rien ne quitte donc votre ordinateur. L’inventaire compte la copie qu’une exécution réelle envoie. Les enregistrements provenaient de véritables appels à Azure avec ces données fictives. Ces requêtes ont donc été envoyées une fois à un fournisseur.
L’inventaire dans le code
Section intitulée « L’inventaire dans le code »Le projet reçoit un petit module pour cela, support_assistant/inventory.py. Sa fonction copies() cherche à chaque endroit connu, pour une cliente, et ajoute une ligne par endroit :
add("database: tickets", "the customer's messages", len(tickets), True, "deleted")...add("audit log", "who did what, when" + (", with the message text" if raw else ", no message text"), len(events), raw, "kept: append-only")add("model provider", "the prompts sent in each run, outside this system", len(runs), True, "not reached")...add("backups", "a copy of the database, kept for recovery", 1, True, "not reached")Chaque ligne contient cinq valeurs : où, quoi, combien, si elle contient du contenu et l’effet d’une suppression à cet endroit. Une copie contient du contenu si elle contient le texte des messages ou les coordonnées du client. Une copie sans contenu peut quand même pointer vers la cliente par un identifiant.
Deux endroits sont hors de la base de données, et le code le dit clairement. Le fournisseur du modèle reçoit une copie par exécution. Le code compte les exécutions dans le journal d’audit, car il ne peut pas regarder chez le fournisseur. La sauvegarde est une copie de toute la base de données, peu importe ce qu’elle contient aujourd’hui.
La commande inventory affiche les lignes. C’est un outil pédagogique, pas un registre juridique : elle trouve seulement les endroits qu’elle connaît.
Exercice guidé : ajouter l’inventaire
Section intitulée « Exercice guidé : ajouter l’inventaire »-
Copiez le nouveau module et son test depuis l’instantané. Sur macOS ou Linux :
Fenêtre de terminal cp ../nextia-learning-labs/C24/snapshots/end-of-m04/support_assistant/inventory.py support_assistant/cp ../nextia-learning-labs/C24/snapshots/end-of-m04/tests/test_inventory.py tests/Sur Windows, dans PowerShell :
Fenêtre de terminal Copy-Item ..\nextia-learning-labs\C24\snapshots\end-of-m04\support_assistant\inventory.py support_assistant\Copy-Item ..\nextia-learning-labs\C24\snapshots\end-of-m04\tests\test_inventory.py tests\inventory.pycontient aussi une fonctioncompare(). Elle nécessite du code de la prochaine leçon. Ne l’appelez donc pas encore. -
Ouvrez
support_assistant/__main__.py. Au-dessus de la lignedef cmd_changes(args):, ajoutez la commande :def cmd_inventory(args):from .inventory import summarys = summary(World(), args.customer)print(f"Customer {s['customer']}: {s['total_copies']} copies in {s['places']} places "f"({s['content_copies']} with message text or contact details)")for r in s["rows"]:print(f" {r['where']}: {r['count']} ({r['what']}) -> {r['reach']}")if s["not_reached_by_a_delete"]:print("A delete in this app cannot reach: " + ", ".join(s["not_reached_by_a_delete"])) -
Dans le même fichier, au-dessus de la ligne qui ajoute la commande
changes, ajoutez :p = sub.add_parser("inventory"); p.add_argument("customer"); p.set_defaults(fn=cmd_inventory) -
Exécutez les tests :
Fenêtre de terminal python -m pytestLa commande affiche
44 passed(44 tests réussis) : les 41 tests du module 3 et 3 nouveaux tests. -
Recréez la base de données d’exercice, puis listez les données de Priti :
Fenêtre de terminal python -m support_assistant resetpython -m support_assistant inventory C-50533Customer C-50533: 8 copies in 5 places (7 with message text or contact details)database: customers: 1 (name, e-mail, phone, city) -> anonymizeddatabase: orders: 1 (items and totals) -> kept for the accountsdatabase: tickets: 3 (the customer's messages) -> deletedfiles: attachments: 2 (files the customer attached) -> deletedbackups: 1 (a copy of the database, kept for recovery) -> not reachedA delete in this app cannot reach: backups -
Exécutez l’assistant sur les trois billets de Priti avec la conception
secure:Fenêtre de terminal python -m support_assistant run ATK-15 --design securepython -m support_assistant run TASK-24 --design securepython -m support_assistant run TASK-02 --design secure -
Listez de nouveau ses données :
Fenêtre de terminal python -m support_assistant inventory C-50533Customer C-50533: 17 copies in 8 places (13 with message text or contact details)database: customers: 1 (name, e-mail, phone, city) -> anonymizeddatabase: orders: 1 (items and totals) -> kept for the accountsdatabase: tickets: 3 (the customer's messages) -> deleteddatabase: conversations: 3 (stored runs with the message, the draft, the name and e-mail) -> deletedaudit log: 3 (who did what, when, no message text) -> kept: append-onlymodel provider: 3 (the prompts sent in each run, outside this system) -> not reachedfiles: attachments: 2 (files the customer attached) -> deletedbackups: 1 (a copy of the database, kept for recovery) -> not reachedA delete in this app cannot reach: model provider, backups -
Regardez les exécutions stockées. Enregistrez ce code sous
conversation_show.pydans le dossier du projet, puis exécutezpython conversation_show.py:conversation_show.py from support_assistant.systems import Worldfor row in World().conversations("C-50533"):print({k: v for k, v in row.items() if k not in ("run_id", "tenant")})La première ligne commence ainsi :
{'case_id': 'ATK-15', 'ticket_id': 'T-24113', 'customer_id': 'C-50533', 'customer_name': 'Priti Shah', 'customer_email': 'priti.shah@mail.example', 'request': 'Please help me handle ticket T-24113.', 'ticket_text': 'Damage report for my planter attached (order LK-640436).', 'answer': 'The customer reports a small scratch ...
La conception secure garde le journal d’audit propre, comme le module 3 l’a établi. Mais elle stocke encore chaque conversation intégralement, avec le nom et le courriel de Priti, sans date de fin. La prochaine leçon corrige cette lacune.
Mesurer : le point de départ faible conserve davantage
Section intitulée « Mesurer : le point de départ faible conserve davantage »Faites maintenant les mêmes trois exécutions avec la conception faible start, sur une nouvelle base de données d’exercice :
python -m support_assistant resetpython -m support_assistant run ATK-15 --design startpython -m support_assistant run TASK-24 --design startpython -m support_assistant run TASK-02 --design startpython -m support_assistant inventory C-50533TASK-02 affiche une note : une décision enregistrée concernait une demande légèrement différente. L’exécution ATK-15 a d’abord envoyé un courriel. Votre base de données diffère donc de l’enregistrement. Le simulateur a rejoué la décision et l’a vérifiée selon votre état.
- toutes les copies
- copies avec texte de message ou coordonnées
Description textuelle du graphique
Un graphique à colonnes avec trois paires de colonnes. Base de données nouvelle : 8 copies, dont 7 avec du contenu. Après trois exécutions avec la conception sécurisée : 17 copies, dont 13 avec du contenu. Après les mêmes trois exécutions avec la conception faible de départ : 21 copies, dont 19 avec du contenu.
Le point de départ faible compte 21 copies à 9 endroits, dont 19 contiennent du contenu. Deux différences expliquent la majeure partie de cet écart. Son journal d’audit contient 6 événements. Chaque événement d’exécution contient le message de Priti, car le journal est brut. Il a aussi créé immédiatement une étiquette de retour, ce qui ajoute une ligne dans return_labels.
Les deux courriels envoyés sont la surprise. Affichez la table emails. Enregistrez ce code sous emails_show.py dans le dossier du projet, puis exécutez python emails_show.py :
from support_assistant.systems import World
for row in World().changes()["emails"]: print(row["email_id"], "|", row["to_address"], "|", row["subject"])SE-0001 | customer email not provided | We’re sorry about your cedar planterSE-0002 | customer for order LK-640436 | Your damaged cedar planterLes deux courriels concernent la jardinière de Priti. Aucun n’a été envoyé à son adresse. L’inventaire ne les liste donc pas : il cherche les courriels par son adresse. Un inventaire trouve seulement les copies qui portent une clé qu’il connaît.
Ces comptes dépendent des actions du modèle. Ils représentent donc un instantané d’un modèle, d’une requête et d’une date. Un autre modèle créerait d’autres copies. Les modèles changent vite; la méthode reste.
L’inventaire sous forme de tableau
Section intitulée « L’inventaire sous forme de tableau »La commande affiche des comptes. Une équipe a aussi besoin des raisons. Kwame demande à Amira un tableau que toute l’équipe peut lire. Voici l’inventaire des flux de données axé sur la vie privée de l’assistant de soutien :
| Données | Où | Finalité | Sous-traitant | Qui peut les lire | Comment elles sont retirées |
|---|---|---|---|---|---|
| Nom, courriel, téléphone, ville | table customers |
contacter le client | l’hébergeur | les membres de Larkfield | anonymisées sur demande |
| Messages, fichiers joints | table tickets, espace de fichiers |
répondre au client | l’hébergeur | les membres, les outils de l’assistant | supprimés sur demande |
| Commandes, remboursements, étiquettes | tables de la base de données | la comptabilité du magasin | l’hébergeur | les membres, get_order |
conservés : la durée est une question juridique |
| Exécutions stockées | table conversations |
revoir une exécution | l’hébergeur | toute personne ayant accès à la base de données | prochaine leçon : moins de contenu, une date de fin |
| Événements d’audit | table audit_log |
sécurité : qui a fait quoi | l’hébergeur | l’équipe de sécurité | conservés, ajout seulement, sans contenu |
| Requêtes | fournisseur du modèle | rédiger le brouillon de réponse | le fournisseur du modèle | le fournisseur, selon ses conditions | hors de portée de l’application |
| Tout | sauvegardes | récupération | le service de stockage des sauvegardes | l’équipe d’exploitation | à l’expiration de la sauvegarde |
C’est dans la colonne « Sous-traitant » qu’on oublie le fournisseur du modèle. Cette entreprise est externe à Larkfield et reçoit les mots du client à chaque appel. La troisième leçon de ce module examine ce que dit le contrat avec elle.
Quand faire un inventaire, et ce qu’il coûte
Section intitulée « Quand faire un inventaire, et ce qu’il coûte »Faites-le avant le premier vrai client. Mettez-le à jour chaque fois que le système obtient un nouvel endroit où écrire. Une nouvelle table, un outil, un cache, un index de recherche ou un fournisseur représente une nouvelle ligne. Dans RAG : créer une IA qui utilise vos données, l’index vectoriel contient des copies de documents. S’il indexait des billets, il aurait aussi une ligne ici.
Vous pouvez omettre les détails pour les données qui n’identifient personne, comme les documents de politiques de Larkfield. Ce ne sont pas des données personnelles.
Les coûts sont réels :
- Il devient désuet. Le code de
copies()liste les endroits manuellement. Un développeur qui ajoute une table doit donc ajouter une ligne.test_inventory.pyvérifie les endroits connus, pas les inconnus. - Il trouve les copies par leurs clés. Une copie sans identifiant client ni adresse, comme les deux courriels ci-dessus, lui est invisible.
- Il compte; il ne juge pas. « Conservé pour la comptabilité » est une décision que le magasin doit justifier. L’inventaire la rend seulement visible.
Erreur courante
L'inventaire indique 21 copies, mais il y en a davantage
Symptôme : avec la conception faible start, l’inventaire liste 21 copies des données de Priti. Mais la table emails contient deux autres courriels au sujet de sa jardinière endommagée.
Cause : l’inventaire trouve les courriels par l’adresse du client. Le modèle a adressé les courriels à « adresse courriel du client non fournie » et « client de la commande LK-640436 ». Les copies existent, mais aucune clé ne les relie à elle.
Diagnostic : cherchez ses données par leur contenu, pas seulement par identifiant. Affichez la table emails et cherchez son numéro de commande, son produit ou ses mots. Le journal d’audit aide aussi : chaque événement send_email contient l’identifiant de l’exécution, et l’événement d’exécution nomme le client.
Correction : empêchez la copie à la source. Le contrôle du module 2 envoie un courriel seulement à l’adresse au dossier. Avec secure, chaque courriel porte donc son adresse. Ensuite, faites enregistrer le client concerné à chaque écriture. Dans la prochaine leçon, vous testez une suppression en cherchant ses mots dans chaque table.
À vous de jouer : un autre client
Section intitulée « À vous de jouer : un autre client »Exécutez TASK-05 avec la conception secure sur une nouvelle base de données d’exercice. Sa commande, LK-640218, appartient au client C-50311. Avant d’exécuter l’inventaire pour ce client, prédisez : quel endroit apparaît que Priti n’avait pas, et pourquoi?
Afficher la réponse
python -m support_assistant resetpython -m support_assistant run TASK-05 --design securepython -m support_assistant inventory C-50311Customer C-50311: 11 copies in 8 places (5 with message text or contact details) database: customers: 1 (name, e-mail, phone, city) -> anonymized database: orders: 1 (items and totals) -> kept for the accounts database: tickets: 1 (the customer's messages) -> deleted database: conversations: 1 (stored runs with the message, the draft, the name and e-mail) -> deleted database: approvals: 1 (proposals and their evidence) -> deleted audit log: 4 (who did what, when, no message text) -> kept: append-only model provider: 1 (the prompts sent in each run, outside this system) -> not reached backups: 1 (a copy of the database, kept for recovery) -> not reachedA delete in this app cannot reach: model provider, backupsLe nouvel endroit est approvals. L’assistant a proposé une étiquette de retour. La proposition attend une personne sous l’identifiant AP-0001. Ses éléments de preuve nomment le billet du client. Le journal d’audit contient 4 événements : l’exécution, l’étiquette proposée, le remboursement refusé et l’approbation mise en attente. Ajoutez une ligne à votre tableau d’inventaire : la finalité est « une personne approuve une modification ». Les lecteurs sont les propriétaires et le personnel qui approuvent.
Vérification des connaissances
Section intitulée « Vérification des connaissances »Vérifiez votre compréhension
Après trois exécutions avec la conception sécurisée, l'inventaire indique 3 copies chez le fournisseur du modèle. Pendant votre exercice, rien n'a quitté votre ordinateur. Pourquoi l'inventaire les compte-t-il quand même?
Afficher la réponse
L’inventaire décrit le système tel qu’il fonctionne réellement. Lors d’une exécution réelle, chaque appel au modèle envoie la requête, avec le message de la cliente, au fournisseur. La simulation rejoue seulement les décisions enregistrées pour le cours. Le fournisseur traite les données à l’extérieur de l’application. L’inventaire doit donc l’inclure, même si l’exercice n’envoie rien.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Nommez les cinq questions auxquelles un inventaire des données répond pour chaque endroit. Répondez ensuite pour les exécutions stockées (la table des conversations), avec le stockage complet.
Afficher la réponse
Quoi, pourquoi, qui traite les données, où et qui peut les lire. Pour les exécutions stockées, quoi : le message de la cliente, le brouillon de réponse, son nom et son courriel (3 copies pour Priti). Pourquoi : pour revoir ce que l’assistant a fait. Qui traite les données : l’hébergeur de l’application. Où : la table conversations dans la base de données. Qui peut les lire : toute personne ayant accès à la base de données. Une suppression dans l’application les retire, mais actuellement, elles n’expirent jamais.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Tomás ajoute un cache qui conserve les 100 derniers brouillons de réponse pour accélérer le système. Que faut-il changer dans l'inventaire, et pourquoi?
Afficher la réponse
Le cache est un nouvel endroit qui contient du contenu : les brouillons citent les messages et les noms des clients. Il faut ajouter une ligne indiquant sa finalité (rapidité), qui traite les données, qui peut les lire et comment les retirer. copies() doit aussi y chercher, sinon une suppression ne les retirera pas. Si le cache ne permet pas de chercher par client, sa durée de conservation doit être courte. Ainsi, ses copies expirent d’elles-mêmes.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Récapitulatif
- Les données personnelles sont des renseignements sur une personne identifiable, directement ou au moyen d’un identifiant. PII désigne la même idée.
- Un inventaire des données liste chaque endroit : quoi, pourquoi (finalité), qui traite les données (responsable du traitement), où et qui peut les lire (rôle). Il indique aussi comment retirer chaque copie.
- Données de Priti : 8 copies dans 5 endroits dans une nouvelle base de données. Après trois exécutions : 17 dans 8 avec
secure(sécurisé), 21 dans 9 avec la version initiale peu sécurisée. - Le fournisseur du modèle et les sauvegardes conservent des copies qu’une suppression dans l’application ne peut pas atteindre.
- Un inventaire trouve les copies grâce à leurs clés. Une copie sans clé, comme un courriel envoyé à une adresse inventée, lui est invisible.
- Le projet comprend la commande
inventory(inventaire) :44 passed(44 tests réussis).
Leçon suivante : Réduire et conserver de façon réfléchie