Une cliente demande toutes ses données
Les droits des personnes sont ce que chacun peut demander sur ses propres données : y accéder, les corriger, les faire effacer. Une organisation doit savoir répondre vite, et savoir quoi faire quand une violation de données expose celles de ses clients.
Cette leçon vous apprend à réunir les données d'une personne avec SQL, à traiter une demande d'effacement, puis à suivre les étapes d'une violation.
À la fin de cette leçon
Remarque
Je peux traiter la demande d'une personne sur ses données et suivre les étapes d'une violation de données.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Droit d'accès | le droit d'obtenir une copie de ses données |
| Droit à l'effacement | le droit de demander la suppression de ses données |
| Violation de données | une perte, un vol ou un accès non autorisé |
| Confinement | arrêter la fuite pour qu'elle ne s'étende pas |
| Notification | prévenir les personnes et l'autorité de contrôle |
| Registre | un journal où l'on note chaque violation |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une demande d'accès réunit les données d'une personne
Une personne peut demander une copie de ses données. C'est le droit d'accès. L'organisation doit tout réunir, et pas seulement la table des clients.
Elle cherche la personne dans chaque table qui y renvoie, par une clé étrangère. Elle vérifie d'abord que la demande vient bien de cette personne.
Sinon, on donne les données d'une personne à un inconnu.
Réunir les données du client numéro 7
Lancez les deux premiers Runs pour préparer le terminal. Les trois suivants cherchent le client 7, inventé comme les autres, dans trois tables.
Le premier affiche sa fiche. Les deux autres comptent ses commandes puis ses avis. Chaque table renvoie au client par id ou customer_id.
Accepter le certificat du serveur
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un nom court pour la boutique
alias sql='mariadb -h db -u student -pstudent shop -t -e'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La fiche du client 7
sql "SELECT id, first_name, last_name, email, phone, city, country, joined_on FROM customers WHERE id = 7"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Compter ses commandes
sql "SELECT COUNT(*) AS commandes FROM orders WHERE customer_id = 7"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Compter ses avis
sql "SELECT COUNT(*) AS avis FROM reviews WHERE customer_id = 7"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple : où chercher les données du client 7
| Table | Lien avec la personne | Ce qu'on y trouve |
|---|---|---|
| customers | id = 7 | Sa fiche : nom, courriel, téléphone, ville |
| orders | customer_id = 7 | 4 commandes |
| reviews | customer_id = 7 | 3 avis |
| Hors de la base | Sauvegardes, journaux, courriels | À chercher aussi, à la main |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un effacement supprime, ou rend la personne introuvable
Avec le droit à l'effacement, la personne demande la suppression de ses données. Parfois on doit en garder une partie, par exemple une commande utile à la comptabilité.
On supprime alors ce qui n'est plus nécessaire. Pour le reste, on retire tout ce qui identifie la personne : nom, courriel, téléphone.
Vous faites cela sur une copie de la table des clients, pour ne rien casser.
Un nom court pour écrire
alias bd='mariadb -h db -u student -pstudent -t -e'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Créer votre base
bd "CREATE DATABASE IF NOT EXISTS student_vie_privee"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Jeter une ancienne copie
bd "DROP TABLE IF EXISTS student_vie_privee.clients"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Copier la table des clients
bd "CREATE TABLE student_vie_privee.clients AS SELECT * FROM shop.customers"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Rendre le client 7 introuvable
bd "UPDATE student_vie_privee.clients SET first_name = 'supprime', last_name = 'supprime', email = CONCAT('supprime-', id, '@invalide.example'), phone = NULL WHERE id = 7"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Contrôler le résultat
bd "SELECT id, first_name, email, phone FROM student_vie_privee.clients WHERE id = 7"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Cinq étapes pour traiter une violation de données
Une violation de données est une perte, un vol ou un accès non autorisé à des données personnelles. Une clé USB perdue ou un mail envoyé au mauvais destinataire en est une.
Chaque étape répond à une question. On ne saute ni l'évaluation ni le registre, même pour une petite fuite.
Exemple : la question de chaque étape
| Étape | Question | Exemple |
|---|---|---|
| Confiner | Comment arrêter la fuite ? | Couper le compte, changer le mot de passe |
| Évaluer | Quelles données, combien de personnes ? | Courriels de 200 clients, sans mot de passe |
| Prévenir | Qui doit le savoir, et quand ? | Les personnes et l'autorité, dans le délai court de la loi |
| Corriger | Comment éviter que cela recommence ? | Un accès plus strict, une alerte |
| Noter | Qu'a-t-on décidé, et pourquoi ? | Une ligne datée dans le registre |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent qu'il faut attendre la fin de l'enquête avant de prévenir. C'est faux : le délai de notification est court et il court dès que l'on a connaissance de la violation. Prévenez avec ce que vous savez, puis complétez.
À vous : un client sans commande
-- Les commandes de chaque client, avec JOIN.
SELECT c.nom, k.id AS commande, k.total
FROM clients AS c
JOIN commandes AS k ON k.client_id = c.id
ORDER BY c.id, k.id;
-- À vous : remplacez JOIN par LEFT JOIN et relancez.
-- Quel client apparaît maintenant, avec des valeurs manquantes ?