Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Droits des personnes et violation de données

Après cette leçon: Je peux traiter la demande d'une personne sur ses données et suivre les étapes d'une violation de données.

Leçon de 60 min11 commandesLab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

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

MotCe que ça veut dire
Droit d'accèsle droit d'obtenir une copie de ses données
Droit à l'effacementle droit de demander la suppression de ses données
Violation de donnéesune perte, un vol ou un accès non autorisé
Confinementarrêter la fuite pour qu'elle ne s'étende pas
Notificationprévenir les personnes et l'autorité de contrôle
Registreun 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

Commande
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

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.

Un nom court pour la boutique

Commande
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

Commande
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

Commande
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

Commande
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

TableLien avec la personneCe qu'on y trouve
customersid = 7Sa fiche : nom, courriel, téléphone, ville
orderscustomer_id = 74 commandes
reviewscustomer_id = 73 avis
Hors de la baseSauvegardes, 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

Commande
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

Commande
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

Commande
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

Commande
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

Commande
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

Commande
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

ÉtapeQuestionExemple
ConfinerComment arrêter la fuite ?Couper le compte, changer le mot de passe
ÉvaluerQuelles données, combien de personnes ?Courriels de 200 clients, sans mot de passe
PrévenirQui doit le savoir, et quand ?Les personnes et l'autorité, dans le délai court de la loi
CorrigerComment éviter que cela recommence ?Un accès plus strict, une alerte
NoterQu'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

Code: sql
-- 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 ?

À propos de ce labo et de sa source: Lab MySQL et phpMyAdmin avec une base de boutique pour s’exercer en SQL

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.