Registre RGPD et conformité
SMSI · 4 — voir aussi le contexte de la démarche.
Ce site met en œuvre deux traitements de données personnelles. Le premier personnalise un lien de consultation remis à une personne nommée et en suit l'usage. Le second mesure la fréquentation du site, pour tous les visiteurs, avec un Matomo hébergé sur la même machine. Chacun a besoin d'une base légale, d'une information des personnes concernées et d'une durée de conservation définie, et chacun a donc sa propre entrée au registre.
1. Registre des traitements (art. 30 RGPD)
1.1 — Traitement n°1 : lien de consultation nominatif
| Rubrique | Contenu |
|---|---|
| Responsable de traitement | Hamdy Tabsissi, exploitant à titre individuel du portfolio. |
| Finalité | Personnalisation d'un lien de consultation nominatif remis à un recruteur, et mesure de son usage (pages vues, horodatage) à des fins de suivi de candidature. |
| Base légale (art. 6.1.f) | Intérêt légitime. Balance des intérêts : l'intérêt du responsable (savoir si un lien envoyé a été consulté) est concret et limité dans le temps ; la personne concernée (un recruteur, dans un contexte professionnel, à qui le lien a été remis en main propre) peut raisonnablement s'attendre à ce que sa consultation soit journalisée ; les données sont minimales, non sensibles, sans profilage ni décision automatisée. Pas de consentement requis, mais une information claire et un droit d'opposition compensent son absence. |
| Catégories de données | Données déclaratives : prénom, nom, entreprise/titre, note interne. Données de navigation : pages consultées, horodatage, agent utilisateur, empreinte de l'adresse IP (SHA-256 + sel ; l'adresse en clair n'est jamais écrite par l'application). Aucune donnée sensible (art. 9). |
| Personnes concernées | Recruteurs et contacts professionnels ayant reçu un lien nominatif. |
| Destinataires | Le responsable de traitement uniquement. Aucune cession, aucun usage publicitaire, aucun cookie tiers. |
| Durée de conservation | Visites : 12 mois à compter de l'enregistrement de la visite, purge automatisée. Informations attachées au lien : tant que le lien reste utile au suivi de l'échange, supprimées sur demande. Journaux du frontal web : 14 jours par rotation. |
| Mesures de sécurité | IP hachée avant stockage, jamais en clair côté application ; adresse tronquée avant écriture dans les journaux d'accès (à quoi ressemble une ligne de journal, section 5) ; VM durcie ; liens non énumérables ; accès admin restreint et limité en tentatives ; TLS pour les échanges. |
| Sous-traitants (art. 28) | Oracle Cloud Infrastructure (Oracle Corporation, Austin, Texas, États-Unis) — hébergement de la machine virtuelle et de la base, région eu-paris-1, en France. Cloudflare, Inc. (San Francisco, Californie, États-Unis) — DNS, terminaison TLS, protection contre le déni de service ; chaque requête transite par ce réseau. |
| Transferts hors UE | Les données au repos sont stockées en France. Les deux sous-traitants sont des sociétés américaines : un accès depuis les États-Unis ne peut être exclu. Il est encadré par les clauses contractuelles types de la Commission européenne figurant dans leurs accords de sous-traitance. Aucun transfert délibéré de données vers un pays tiers. |
1.2 — Traitement n°2 : mesure d'audience
| Rubrique | Contenu |
|---|---|
| Responsable de traitement | Hamdy Tabsissi, exploitant à titre individuel du portfolio. |
| Finalité | Connaître la fréquentation générale du site et les pages les plus consultées, pour l'améliorer. Statistiques agrégées, pour l'usage propre du responsable. |
| Base légale (art. 6.1.f) | Intérêt légitime à maintenir un site utilisable. Balance des intérêts : la collecte est cantonnée à ce qui produit une statistique de fréquentation, l'adresse IP est tronquée de deux octets avant enregistrement, aucun identifiant de visiteur n'est posé, aucun suivi d'un site à l'autre, aucun recoupement avec le traitement n°1, aucune transmission à un tiers. Un droit d'opposition est offert sur la page de confidentialité et le signal Do Not Track est respecté. |
| Catégories de données | Page consultée et titre de la page, horodatage, référent, adresse IP tronquée de deux octets, agent utilisateur, et les données que le script de mesure transmet à chaque vue : résolution d'écran, plateforme et version de plateforme, marque et version complète du navigateur, facteur de forme (ordinateur / mobile), prise en charge des cookies et des greffons (PDF, Java, Flash…), et des durées de chargement. Aucune donnée sensible (art. 9). |
| Personnes concernées | Tout visiteur du site, y compris sans lien nominatif. |
| Destinataires | Le responsable de traitement uniquement. Le logiciel de mesure est Matomo, hébergé sur la machine du site : le script et le point de collecte sont servis par le domaine lui-même, aucune requête ne part vers un domaine tiers, et aucun éditeur d'outil de mesure n'a accès aux données. |
| Cookies | Aucun cookie de mesure. Le script appelle disableCookies() : la requête de suivi part avec un identifiant de visiteur vide. Seul un refus explicite dépose un cookie de première partie mtm_consent_removed, dont le contenu se limite à la date du refus et qui ne sert qu'à le mémoriser. |
| Durée de conservation | Journaux de visite bruts : 759 jours (25 mois), puis suppression automatique. Rapports agrégés : conservés sans limite — ils ne contiennent plus de donnée individuelle. Valeurs relues depuis l'instance elle-même le 14/09/2026, pas depuis le script d'installation : la suppression automatique est active, le seuil est bien de 759 jours, et le réglage de conformité qui aurait pu les écraser n'a jamais été activé. |
| Mesures de sécurité | Troncature de deux octets appliquée par Matomo avant enregistrement, y compris pour l'enrichissement géographique — les trois réglages relus en base le 14/09/2026 ; instance accessible en HTTPS uniquement ; pas d'accès public au tableau de bord. |
| Sous-traitants (art. 28) | Identiques au traitement n°1 : Oracle Cloud Infrastructure (hébergement) et Cloudflare, Inc. (DNS, TLS, anti-DDoS). Aucun sous-traitant supplémentaire : la mesure d'audience n'est pas externalisée. |
| Transferts hors UE | Identique au traitement n°1. |
Note du 13/09/2026 — le registre décrivait moins que la machine ne collecte. Jusqu'à cette date, ce registre ne comportait qu'une seule entrée, et cette entrée affirmait que « les visiteurs anonymes ne sont pas tracés — hors champ du registre ». C'était faux. La mesure d'audience est active en production sur toutes les pages publiques, pour tous les visiteurs. Elle était pourtant déjà décrite, et correctement, sur la page de confidentialité destinée au public : l'écart n'était pas entre le site et la réalité, il était entre deux documents du même site.
Trois autres rubriques disaient moins que la réalité. Les destinataires mentionnaient « aucun sous-traitant applicatif » quand l'hébergeur et le fournisseur de DNS/TLS sont deux sous-traitants au sens de l'article 28, tous deux nommés depuis le début sur la page de confidentialité. Les transferts hors UE étaient portés à « aucun » alors que ces deux sociétés sont américaines et qu'un accès depuis les États-Unis ne peut être exclu. Les catégories de données omettaient l'agent utilisateur, et tout ce que le script de mesure transmet à chaque vue de page.
La vérification a été faite en observant les requêtes réellement émises par la page, pas en relisant la configuration : la requête de suivi porte la résolution d'écran, la plateforme et sa version, la version complète du navigateur, le facteur de forme et la prise en charge des greffons. Prises ensemble, et jointes à une adresse tronquée, ces valeurs forment une empreinte plus discriminante que chacune prise à part. C'est la raison pour laquelle elles sont écrites ici une par une plutôt que résumées en « données de navigation ».
Complément du 14/09/2026 — la durée annoncée est maintenant mesurée. Cette note disait, la veille, que les durées de conservation ci-dessus venaient du script d'installation et n'avaient pas été vérifiées sur la machine. Elles l'ont été : les valeurs ont été relues dans l'instance, pas dans le dépôt. Elles concordent. Le rappel vaut d'être gardé — un registre qui annonce une durée qu'il n'a pas mesurée décrit une intention, pas un traitement — mais la rubrique n'a plus de réserve à porter.
Ce qui n'a pas encore été mesuré, et qui est écrit ici plutôt que passé sous silence : des sauvegardes de la base sont prises chaque jour et conservées quatorze jours. Elles ne sont pas concernées par la purge des journaux bruts. Si elles contiennent ces journaux, le plafond réel de conservation dépasse les 759 jours annoncés — de l'ordre de deux semaines. L'écart serait faible ; il n'en serait pas moins un écart, et il sera mesuré puis écrit ici, dans un sens ou dans l'autre.
2. Mention d'information (art. 13)
Données personnelles. Ce lien de consultation est associé aux informations que vous avez renseignées (prénom, nom, entreprise) afin que je puisse savoir s'il a été consulté. Les pages visitées et l'horodatage sont enregistrés ; votre adresse IP est anonymisée avant tout stockage. Ces données sont conservées 12 mois et ne sont ni cédées ni utilisées à d'autres fins. Le traitement repose sur l'intérêt légitime (art. 6.1.f) : vous pouvez à tout moment demander l'accès à ces données, leur effacement, ou vous opposer au traitement (art. 21), en écrivant au contact indiqué en pied de page.
La mention complète, qui couvre les deux traitements, les sous-traitants nommés et le droit d'opposition à la mesure d'audience, est publiée sur la page de confidentialité. C'est elle qui fait foi vis-à-vis des personnes concernées ; le présent registre est le document interne correspondant.
3. Procédure d'exercice des droits (art. 15-21)
- Réception — toute demande (accès, rectification, effacement, opposition) est adressée par email.
- Identification — vérifier que le demandeur correspond bien à un enregistrement existant avant toute communication de données.
- Traitement — recherche des enregistrements associés au demandeur ; export ou suppression selon la demande.
- Réponse — réponse écrite confirmant l'action réalisée, avec rappel du droit de réclamation auprès de la CNIL.
- Délai — un mois à compter de la réception, extensible de deux mois pour une demande complexe.
Limite assumée sur le traitement n°2. La mesure d'audience ne pose aucun identifiant de visiteur : il n'existe donc aucun moyen de retrouver les vues d'une personne donnée pour les lui communiquer ou les effacer. Un droit d'accès ou d'effacement ne s'y exerce pas — c'est la contrepartie directe de la minimisation. Le droit d'opposition, lui, s'exerce en un clic depuis la page de confidentialité, et c'est celui qui a un sens ici.
4. Politique de conservation et de purge
- Toute visite enregistrée il y a plus de 12 mois est supprimée (traitement n°1).
- Purge automatisée (tâche planifiée), avec journal de la purge (nombre de lignes supprimées, horodatage) à des fins de preuve de conformité.
- Les journaux du frontal web sont purgés automatiquement par rotation système, au bout de 14 jours.
- Les journaux de visite de la mesure d'audience sont supprimés au bout de 759 jours ; les rapports agrégés qui en dérivent sont conservés sans limite de durée, parce qu'ils ne contiennent plus de donnée individuelle (traitement n°2).
Note du 12/09/2026 — correction de la durée annoncée. Ce registre indiquait « 13 mois glissants à compter de la dernière visite ». La purge réellement appliquée supprime les visites enregistrées il y a plus de 12 mois : deux écarts, la durée et le point de départ. C'est la durée appliquée qui est écrite ici, et la mention d'information a été corrigée en même temps.
Un registre article 30 vaut par sa fidélité au traitement réel, pas par sa mise en page : une durée annoncée plus longue que la durée appliquée reste un écart de conformité, même quand il joue en faveur de la personne concernée. La correction est datée plutôt que silencieuse.
Note du 06/10/2026 — revue de la mesure d'audience. Le traitement n°2 de cette page n'était pas repris dans le fichier source du dépôt : les deux divergeaient, le fichier source est désormais aligné. État mesuré ce jour : Matomo auto-hébergé est servi, Google Tag Manager est absent. Le choix définitif de l'outil de mesure reste ouvert ; s'il change, ce traitement doit être mis à jour avant le changement.
5. À quoi ressemble une ligne de journal
L'anonymisation des adresses IP est décrite plus haut comme une mesure. En voici le résultat réel, tel qu'il est écrit sur le serveur. La ligne ci-dessous est authentique : elle vient du journal d'accès de production, et n'a été ni reconstituée ni retouchée.
66.249.74.0 - [03/Sep/2026:05:48:37 +0000] "GET /robots.txt HTTP/1.1" 200 192 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Champ par champ. 66.249.74.0 est l'adresse tronquée : le
dernier octet a été remplacé par un zéro avant l'écriture sur le disque.
L'adresse d'origine n'a jamais été enregistrée. Ce zéro final est ce qui
empêche de redescendre à un abonné : il désigne un réseau de 256 adresses,
pas une machine. Reste tout le reste — [03/Sep/2026:05:48:37]
l'horodatage à la seconde, GET /robots.txt la page demandée,
200 le code de réponse, 192 le poids envoyé, puis
le référent et l'agent utilisateur. Le journal continue donc de dire quand,
quoi, et avec quel logiciel ; il ne dit plus depuis quelle machine.
Ce que cette troncature n'est pas. Remplacer le dernier octet est la pratique retenue par la CNIL pour la mesure d'audience. Ce n'est pas une anonymisation irréversible au sens du considérant 26 du RGPD. Une adresse tronquée reste rattachable à un réseau, et croisée avec d'autres données — un horodatage précis, une suite de pages, un agent utilisateur singulier — elle peut redevenir discriminante. C'est une mesure de minimisation. La nommer pour ce qu'elle est vaut mieux que de la vendre pour plus.
Note du 13/09/2026 — la mesure ne couvrait qu'un site sur trois. La ligne ci-dessus est sincère, le fichier dont elle sort ne l'était pas entièrement. La troncature était appliquée par le vhost du portfolio, et par lui seul. Deux autres sites du périmètre écrivaient dans le même fichier de journal, avec le format par défaut du frontal, c'est-à-dire l'adresse complète.
Les chiffres, relevés le 13/09/2026 avant correction. Sur les deux derniers jours de journal : 1 510 lignes sur 3 797, soit environ 40 %, portaient une adresse complète. Sur les quatorze jours de rétention : 100 adresses complètes distinctes, dont 98 hors boucle locale et hors la machine elle-même, et 93 associées à un agent utilisateur de navigateur réel. Ce ne sont donc pas que des robots.
La cause tient en une règle de lecture : le format anonymisé était défini dans le fichier du portfolio, lu après les deux autres. Un format déclaré plus bas qu'il n'est utilisé est invisible, et le frontal retombe sans broncher sur son format par défaut. Aucune erreur, aucune alerte. La configuration est corrigée depuis le 13/09/2026, vérifiée sur une requête réelle avant et après.
Note du 14/09/2026 — les journaux déjà écrits ont été tronqués, sans attendre. La note ci-dessus se terminait, la veille, par une phrase devenue fausse : « les journaux déjà écrits gardent leurs adresses complètes jusqu'à la fin de leur rétention ». La fin de rétention tombait le 27/09 ; attendre aurait suffi. Ça n'a pas été fait.
15 310 lignes portant une adresse complète, réparties sur 15 fichiers de journal archivés et compressés, ont été tronquées le 14/09/2026. Recompte indépendant après traitement : zéro. La troncature a été faite sur copie, vérifiée, puis la copie a remplacé l'original en préservant droits et propriétaire ; le fichier en cours d'écriture n'a pas été touché, il était déjà propre. Rotation, configuration du frontal et service ont été recontrôlés après.
Le raisonnement derrière ce choix tient en une phrase. L'article 5.1.c impose de minimiser, pas d'attendre que le surplus expire. Une donnée collectée en trop reste une donnée collectée en trop pendant qu'elle dort sur un disque, et « j'ai laissé la rotation faire » n'est pas une mesure de conformité — c'est le passage du temps. Le contrôle C12 de l'audit interne redevient donc conforme à cette date, et non le 27.
6. Faut-il une AIPD ? — Analyse
Une AIPD (art. 35) est obligatoire quand un traitement remplit au moins deux des neuf critères du G29/CNIL (évaluation/scoring, décision automatisée, surveillance systématique, données sensibles, données à grande échelle, croisement de fichiers, personnes vulnérables, usage innovant, obstacle à un droit/contrat). L'analyse se fait traitement par traitement.
Traitement n°1 — lien nominatif. Pas de données sensibles, pas de scoring ni de décision automatisée, pas de surveillance systématique (le suivi ne concerne que les personnes ayant reçu un lien), échelle très restreinte, pas de croisement de fichiers externes, personnes concernées non vulnérables (contexte professionnel). Aucun critère rempli.
Traitement n°2 — mesure d'audience. Celui-ci concerne tous les visiteurs, et le critère de la surveillance systématique mérite d'être examiné plutôt qu'écarté : il s'agit bien d'une observation continue du comportement de navigation. Il n'est pas retenu pour autant — la collecte ne pose aucun identifiant, ne suit personne d'une page à l'autre au-delà de la session, ne s'étend à aucun autre site, et l'adresse est tronquée avant enregistrement. Aucun autre critère n'est approché : ni sensible, ni scoring, ni croisement — le recoupement avec le traitement n°1 n'est pas effectué et ne l'a jamais été. L'échelle est celle d'un portfolio personnel, sans commune mesure avec le critère de la grande échelle. Aucun critère rempli.
Conclusion : aucun des deux traitements ne remplit deux critères, une AIPD n'est pas requise. Documenter cette analyse suffit comme preuve de conformité (accountability, art. 5.2). La conclusion est inchangée par rapport à la version précédente de ce document — mais elle reposait alors sur une prémisse fausse, « le suivi ne concerne pas le grand public ». Une bonne conclusion tirée d'un fait faux reste à refaire. Elle a été refaite.
7. Faut-il désigner un délégué à la protection des données ? — Analyse
L'article 37.1 rend la désignation obligatoire dans trois cas seulement : le responsable est une autorité ou un organisme public ; ses activités de base consistent en un suivi régulier et systématique des personnes à grande échelle ; ses activités de base consistent en un traitement à grande échelle de données sensibles (art. 9) ou relatives à des condamnations (art. 10). Comme pour l'AIPD, l'analyse se fait sur ce que le traitement est réellement, pas sur ce qu'il est confortable de conclure.
Autorité publique — non. Le responsable est un particulier exploitant un portfolio à titre individuel.
Suivi régulier et systématique à grande échelle — le suivi est régulier et systématique, c'est admis en section 6 : la mesure d'audience observe la navigation de tous les visiteurs, en continu. Ce n'est pas ce critère qui manque, ce sont les deux autres conditions que l'article pose en même temps. « À grande échelle » ne se mesure pas au sentiment : les lignes directrices du G29 retiennent le nombre de personnes concernées, le volume et la variété des données, la durée et l'étendue géographique. Un portfolio personnel n'en approche aucun. Et surtout, ce suivi n'est pas une activité de base : l'activité de ce site est de présenter un travail à des recruteurs ; la mesure d'audience est accessoire à cette activité, pas ce qui la constitue. Un traitement accessoire ne déclenche pas l'article 37, quelle que soit sa régularité.
Données sensibles à grande échelle — non. Aucune donnée de l'article 9 ni de l'article 10 n'est collectée par l'un ou l'autre des deux traitements ; c'est déjà écrit dans chaque entrée du registre.
Conclusion : aucun des trois cas n'est rempli, la désignation d'un DPO n'est pas obligatoire. Comme pour l'AIPD, c'est le fait de documenter l'analyse qui vaut preuve de conformité (art. 5.2), pas la conclusion elle-même.
Ce que « DPO » veut dire ailleurs dans ce dossier, et ce qu'il ne veut pas dire. La politique SSI écrit qu'une seule personne cumule RSSI, administrateur et DPO. Le mot y désigne une responsabilité interne assumée — quelqu'un doit répondre des données personnelles collectées, et cette personne est nommée. Il ne désigne pas un délégué au sens des articles 37 à 39.
La différence n'est pas cosmétique. L'article 38.3 exige que le délégué ne reçoive aucune instruction sur l'exercice de ses missions et ne soit pas sanctionné pour les avoir exercées ; l'article 38.6 interdit qu'une autre fonction le place en conflit d'intérêts. Le responsable de traitement ne peut donc pas être son propre délégué : il se contrôlerait lui-même. Désigner volontairement un DPO ici reviendrait à revendiquer une garantie qui n'existe pas dans les faits — et un DPO désigné volontairement est soumis au même régime qu'un DPO obligatoire, ce qui aggraverait l'écart au lieu de le couvrir.
L'écart est donc structurel et il est assumé comme tel : il n'y a pas de séparation entre celui qui décide du traitement et celui qui en contrôle la conformité. Dans une organisation, cette séparation est la garantie. Ici, elle n'existe pas, et rien ne la remplace. Ce qui la compense en partie, sans la remplacer : l'analyse est écrite, datée et publiée, et les corrections qu'elle a imposées le sont aussi, y compris quand elles révèlent que le document mentait — voir les notes des 12, 13 et 14/09/2026 ci-dessus.