VOOZH about

URL: https://lincnil.github.io/Guide-RGPD-du-developpeur/

⇱


👁 Logo Guide RGPD CNIL pour l'Ă©quipe de dĂ©veloppement

Guide RGPD de l'équipe de développement

La CNIL publie un guide RGPD pour les développeuses et développeurs

Afin de vous accompagner dans la mise en conformité de vos développements projet web ou applicatif, la CNIL a élaboré un guide de bonnes pratiques des développements en open source.

Ce guide est publié sous licence GPLv3 et sous licence ouverte 2.0 (explicitement compatible avec CC-BY 4.0 FR). Vous pouvez donc librement contribuer à son enrichissement.

Ce guide s’adresse-t-il uniquement aux dĂ©veloppeuses et dĂ©veloppeurs ?

Que vous travailliez seul(e) ou en Ă©quipe au dĂ©veloppement d'un projet, que vous soyez amenĂ©(e) Ă  gĂ©rer une Ă©quipe de dĂ©veloppement, que vous soyez un prestataire, ou simplement curieux, ce guide contient une premiĂšre approche des grands principes du RGPD et des diffĂ©rents points d’attention Ă  prendre en compte dans le dĂ©ploiement d’applications respectueuse de la vie privĂ©e de ses utilisateurs.

Il propose des conseils et des bonnes pratiques, et offre ainsi des clĂ©s de comprĂ©hension du RGPD utiles pour tous les acteurs, quelle que soit la taille de leur structure. Il peut Ă©galement faire l’objet d’échanges au sein des services et dans la relation avec vos clients.

Que contient le guide ?

Ce guide est découpé en 18 fiches thématiques et complété par des exemples de codes qui couvrent la plupart des besoins des développeuses et développeurs pour les accompagner à chaque étape de leur projet, de la préparation du développement au déploiement de nouveaux services.

Le rÚglement général sur la protection des données (ou RGPD) précise que la protection des droits et libertés des personnes physiques exige de prendre des « mesures techniques et organisationnelles appropriées afin de garantir que les exigences du présent rÚglement sont respectées » (considérant 78).

La détermination de ces mesures est forcément liée au contexte des traitements mis en place, et le responsable de traitement (l'entité publique ou privée qui traite des données personnelles) doit à ce titre assurer la sécurité des données qu'il est amené à traiter.

Les bonnes pratiques de ce guide n’ont donc pas vocation Ă  couvrir l’ensemble des exigences des rĂšglementations ni Ă  ĂȘtre Ă  prescriptives, elles apportent un premier niveau de mesures permettant de prendre en compte les problĂ©matiques de protection de la vie privĂ©e dans les dĂ©veloppements informatiques qui ont vocation Ă  ĂȘtre appliquĂ©es Ă  tous les projets traitant des donnĂ©es. En fonction de la nature des traitements opĂ©rĂ©s, des mesures complĂ©mentaires devront ĂȘtre mises en Ɠuvre dans certains cas afin de respecter pleinement la rĂ©glementation.

Tables des matiĂšres

  1. Développer en conformité avec le RGPD

  2. Identifier les données à caractÚre personnel

  3. Préparer son développement

  4. Sécuriser son environnement de développement

  5. Gérer son code source

  6. Faire un choix éclairé de son architecture

  7. Sécuriser vos sites web, vos applications et vos serveurs

  8. Minimiser les données collectées

  9. Gérer les profils utilisateurs

  10. MaĂźtriser vos bibliothĂšques et vos SDK

  11. Veiller à la qualité de votre code et sa documentation

  12. Tester vos applications

  13. Informer les utilisateurs

  14. Préparer l'exercice des droits des personnes

  15. Gérer la durée de conservation des données

  16. Prendre en compte les bases lĂ©gales dans l’implĂ©mentation technique

  17. Analyser les pratiques en matiĂšre de traceurs sur vos sites et vos applications

  18. Mesurer la fréquentation de vos sites web et de vos applications

  19. Se prémunir contre les attaques informatiques

Comment contribuer Ă  ce guide ?

Ce guide est disponible en deux versions :

La contribution se fait en quelques étapes :

  • Inscrivez-vous sur la plateforme Github ;
  • Rendez-vous sur la page du projet ;
  • Vous pouvez :
    • Utiliser l’onglet "Issue" pour ouvrir des commentaires ou participer Ă  la discussion
    • Utiliser l'option "Fork" pour faire vos propres modifications et proposer leur inclusion via le bouton "Pull Requests"

Votre proposition de contribution sera examinée par la CNIL avant sa publication. La version web du guide RGPD de l'équipe de développement sera réguliÚrement mise à jour.

Usage

Pour faire vous-mĂȘme une « release » de ce repository, vous pouvez utiliser l’outil Pandoc. Cet outil vous permettra de convertir les fiches en un fichier docx ou bien un document HTML.

Vous pouvez retrouver les instructions pour installer cet outil ici

  • Pour gĂ©nĂ©rer un fichier .docx :

    pandoc -s --toc --toc-depth=1 -o Guide_RGPD_developpeur.docx [0-9][0-9]*.md
  • Pour gĂ©nĂ©rer un fichier .html :

    pandoc -s --template="templates/mytemplate.html" -H templates/pandoc.css -o index.html README.md [0-9][0-9]*.md

Fiche n°0 : DĂ©velopper en conformitĂ© avec le RGPD

Que vous travailliez seul⋅e ou en Ă©quipe au dĂ©veloppement d’un projet, que vous soyez amené⋅e Ă  gĂ©rer une Ă©quipe de dĂ©veloppement, ou que vous soyez un prestataire rĂ©alisant des dĂ©veloppements pour des tiers, il est indispensable de s’assurer durant toute la vie du projet que les donnĂ©es de vos utilisateurs ainsi que toutes les opĂ©rations effectuĂ©es sur celles-ci soient protĂ©gĂ©es en permanence.

Les Ă©tapes suivantes vous aideront dans le dĂ©veloppement d’applications ou de sites web respectueux de la vie privĂ©e :

  1. Sensibilisez-vous aux grands principes du RGPD. Si vous travaillez en Ă©quipe, nous vous recommandons d’identifier une personne chargĂ©e du pilotage de sa conformitĂ©. Si votre entreprise dispose d’un dĂ©lĂ©guĂ© Ă  la protection des donnĂ©es (DPO), celui-ci constitue alors un atout majeur pour comprendre et respecter les obligations du RGPD. Sa dĂ©signation peut par ailleurs ĂȘtre obligatoire dans certains cas, notamment si vos programmes ou vos applications traitent des donnĂ©es dites « sensibles Â» (cf. les exemples) Ă  grande Ă©chelle ou rĂ©alisent un suivi rĂ©gulier et systĂ©matique Ă  grande Ă©chelle.

  2. Cartographiez et catĂ©gorisez les donnĂ©es et les traitements de votre systĂšme. Recenser de façon prĂ©cise les traitements rĂ©alisĂ©s par votre programme ou votre application vous aidera Ă  vous assurer qu’ils respectent bien les obligations lĂ©gales en la matiĂšre. La tenue d’un registre des activitĂ©s de traitement (dont vous trouvez un exemple sur le site de la CNIL), vous permet d’avoir une vision globale sur ces donnĂ©es, d’identifier et de hiĂ©rarchiser les risques associĂ©s. En effet, des donnĂ©es personnelles peuvent ĂȘtre prĂ©sentes dans des endroits inattendus comme dans les journaux de serveurs, les fichiers de cache, les fichiers Excel, etc. Sa tenue est obligatoire dans la plupart des cas.

  3. Priorisez les actions Ă  mener. Sur la base du registre des activitĂ©s de traitement, identifiez en amont du dĂ©veloppement les actions Ă  mener pour vous conformer aux obligations du RGPD et priorisez les points d’attention au regard des risques pour les personnes concernĂ©es par la collecte de donnĂ©es. Ces points d’attention concernent notamment la nĂ©cessitĂ© et les types de donnĂ©es collectĂ©es et traitĂ©es par votre programme, la base lĂ©gale sur laquelle se fonde vos traitements de donnĂ©es, les mentions d’information de votre programme ou de votre application, les clauses contractuelles vous liant Ă  vos sous-traitants, les modalitĂ©s d’exercice des droits, les mesures mises en place pour sĂ©curiser vos traitements.

  4. GĂ©rez les risques. Lorsque vous identifiez que des traitements de donnĂ©es personnelles sont susceptibles d’engendrer des risques Ă©levĂ©s pour les personnes concernĂ©es, assurez-vous que vous gĂ©rez ces risques de façon appropriĂ©e au regard du contexte. Une analyse d’impact relative Ă  la protection des donnĂ©es (AIPD) peut vous accompagner dans la maĂźtrise de ces risques. La CNIL a Ă©laborĂ© une mĂ©thode, des modĂšles de documents et un outil qui vous aideront Ă  identifier ces risques ainsi qu’un catalogue de bonnes pratiques qui vous accompagnera dans la mise en place de mesures permettant de traiter les risques identifiĂ©s. Par ailleurs, la rĂ©alisation d’une analyse d’impact relative Ă  la protection des donnĂ©es est obligatoire pour tous les traitements susceptibles d’engendrer des risques Ă©levĂ©s pour les droits et libertĂ©s des personnes concernĂ©es. La CNIL propose, sur son site web, une liste des types d’opĂ©rations de traitement pour lesquelles une AIPD est requise ou, au contraire, non requise.

  5. Organisez des processus internes pour vous assurer d’ĂȘtre en conformitĂ© durant toutes les Ă©tapes du dĂ©veloppement, veillez Ă  ce que des procĂ©dures internes garantissent la prise en compte de la protection des donnĂ©es sur tous les aspects de votre projet et prenant en compte l’ensemble des Ă©vĂ©nements qui peuvent survenir (ex. : faille de sĂ©curitĂ©, gestion des demandes de rectification ou d’accĂšs, modification des donnĂ©es collectĂ©es, changement de prestataire, violation de donnĂ©es, etc.). Les exigences du label gouvernance (mĂȘme si celui-ci n'est plus octroyĂ© par la CNIL depuis l’entrĂ©e en application du RGPD) peuvent constituer une base d’inspiration utile pour vous aider Ă  mettre en place l’organisation nĂ©cessaire.

  6. Documentez la conformitĂ© de vos dĂ©veloppements pour prouver votre conformitĂ© au RGPD Ă  tout moment : les actions rĂ©alisĂ©es et les documents produits Ă  chaque Ă©tape du dĂ©veloppement doivent ĂȘtre maĂźtrisĂ©s. Cela implique notamment un rĂ©examen et une actualisation rĂ©guliers de la documentation de vos dĂ©veloppements afin qu’elle soit en permanence en cohĂ©rence avec les fonctionnalitĂ©s dĂ©ployĂ©es sur votre programme.

Le site de la CNIL fournit de nombreuses fiches pratiques qui vous accompagneront dans la mise en place de traitements respectueux de la loi suivant votre secteur d’activitĂ©.

Fiche n°1 : Identifier les donnĂ©es Ă  caractĂšre personnel

Comprendre les notions de « donnĂ©es personnelles Â», de « finalitĂ© Â» et de « traitement Â» est indispensable pour le dĂ©veloppement d’une application respectueuse de la loi et des donnĂ©es des utilisateurs. Attention, Ă  ne pas confondre « anonymisation Â» et « pseudonymisation Â» qui ont des dĂ©finitions prĂ©cises dans le RGPD.

Définition

  • La notion de donnĂ©es Ă  caractĂšre personnel (couramment dĂ©signĂ©es comme “donnĂ©es personnelles”) est dĂ©finie dans le rĂšglement gĂ©nĂ©ral sur la protection des donnĂ©es (RGPD) comme « toute information se rapportant Ă  une personne physique identifiĂ©e ou identifiable (dĂ©nommĂ©e “personne concernĂ©e”) Â». Elle couvre un large pĂ©rimĂštre qui comprend Ă  la fois des donnĂ©es directement identifiantes (nom et prĂ©nom par exemple) et indirectement identifiantes (numĂ©ro de tĂ©lĂ©phone, plaque d’immatriculation, identifiant de terminal, etc.).

  • Toute opĂ©ration sur ce type de donnĂ©es (collecte, enregistrement, transmission, modification, diffusion, etc.) constitue un traitement au sens du RGPD et doit donc rĂ©pondre aux exigences fixĂ©es par ce rĂšglement. Ces traitements doivent ĂȘtre licites et avoir un objectif (une « finalitĂ© Â») dĂ©terminĂ©e. Les donnĂ©es personnelles collectĂ©es et traitĂ©es doivent ĂȘtre pertinentes et limitĂ©es Ă  ce qui est strictement nĂ©cessaire pour atteindre la finalitĂ©.

Exemples de données à caractÚre personnel

  • Lorsqu’elles sont relatives Ă  des personnes physiques, les donnĂ©es suivantes sont des donnĂ©es Ă  caractĂšre personnel :
    • nom, prĂ©nom, pseudonyme, date de naissance ;
    • photos, enregistrements sonores de voix ;
    • numĂ©ro de tĂ©lĂ©phone fixe ou portable, adresse postale, adresse e-mail ;
    • adresse IP, identifiant de connexion informatique ou identifiant de cookie ;
    • empreinte digitale, rĂ©seau veineux ou palmaire de la main, empreinte rĂ©tinienne ;
    • numĂ©ro de plaque d’immatriculation, numĂ©ro de sĂ©curitĂ© sociale, numĂ©ro d’une piĂšce d’identitĂ© ;
    • donnĂ©es d’usage d’une application, des commentaires, etc.
  • L’identification des personnes physiques peut se rĂ©aliser :
    • Ă  partir d’une seule donnĂ©e (exemples : nom et prĂ©nom) ;
    • Ă  partir du croisement d’un ensemble de donnĂ©es (exemple : une femme vivant Ă  telle adresse, nĂ©e tel jour et membre de telle association).
  • Certaines donnĂ©es sont considĂ©rĂ©es comme particuliĂšrement sensibles. Le RGPD interdit de recueillir ou d’utiliser ces donnĂ©es, sauf, notamment, si la personne concernĂ©e a donnĂ© son consentement exprĂšs (dĂ©marche active, explicite et de prĂ©fĂ©rence Ă©crite, qui doit ĂȘtre libre, spĂ©cifique, et informĂ©e).

  • Ces exigences concernent les donnĂ©es suivantes :
    • les donnĂ©es relatives Ă  la santĂ© des individus ;
    • les donnĂ©es concernant la vie sexuelle ou l’orientation sexuelle ;
    • les donnĂ©es qui rĂ©vĂšlent une prĂ©tendue origine raciale ou ethnique ;
    • les opinions politiques, les convictions religieuses, philosophiques ou l’appartenance syndicale ;
    • les donnĂ©es gĂ©nĂ©tiques et biomĂ©triques utilisĂ©es aux fins d’identifier une personne de maniĂšre unique.

L’anonymisation des donnĂ©es Ă  caractĂšre personnel

  • Un processus d’anonymisation de donnĂ©es Ă  caractĂšre personnel vise Ă  rendre impossible toute identification des individus au sein de jeux de donnĂ©es. Il s’agit donc d’un processus irrĂ©versible. Lorsque cette anonymisation est effective, les donnĂ©es ne sont plus considĂ©rĂ©es comme des donnĂ©es personnelles et les exigences du RGPD ne sont plus applicables.

  • Par dĂ©faut, nous vous recommandons de ne jamais considĂ©rer des jeux de donnĂ©es brutes comme anonymes. Un jeu de donnĂ©es anonyme doit nĂ©cessairement rĂ©sulter d’un processus d’anonymisation qui Ă©liminera toute possibilitĂ© de rĂ©-identification des individus, que ce soit par :
    • individualisation : il n’est pas possible d’isoler une partie ou la totalitĂ© des enregistrements relatifs Ă  un individu ;
    • corrĂ©lation : le jeu de donnĂ©es ne permet pas de relier deux enregistrements se rapportant Ă  une mĂȘme personne ou Ă  un groupe de personnes ;
    • infĂ©rence : il est impossible de dĂ©duire la valeur d’un attribut d’une personne depuis des informations internes ou externes au jeu de donnĂ©es.
  • Ces traitements de donnĂ©es impliquent dans la plupart des cas une perte de qualitĂ© sur le jeu de donnĂ©es produit. L’avis G29 sur les techniques d’anonymisation dĂ©crit les principales techniques d’anonymisation utilisĂ©es aujourd’hui, ainsi que des exemples de jeux de donnĂ©es considĂ©rĂ©s Ă  tort comme anonymes. Il est important de signaler qu’il n’existe pas de solution universelle pour l’anonymisation des donnĂ©es Ă  caractĂšre personnel. Le choix d’anonymiser ou non les donnĂ©es ainsi que la sĂ©lection d’une technique d’anonymisation doit se faire au cas par cas selon les contextes d’usage et de besoin (nature des donnĂ©es, utilitĂ© des donnĂ©es, risques pour les personnes, etc.).

La pseudonymisation des données à caractÚre personnel

  • La pseudonymisation constitue un compromis entre la conservation de donnĂ©es brutes et la production de jeux de donnĂ©es anonymisĂ©es.

  • Elle se rĂ©fĂšre Ă  un traitement de donnĂ©es personnelles rĂ©alisĂ© de maniĂšre Ă  ce qu’on ne puisse plus attribuer les donnĂ©es relatives Ă  une personne physique sans avoir recours Ă  des informations supplĂ©mentaires. Le RGPD insiste sur le fait que ces informations supplĂ©mentaires doivent ĂȘtre conservĂ©es sĂ©parĂ©ment et ĂȘtre soumises Ă  des mesures techniques et organisationnelles afin d’éviter la rĂ©-identification des personnes concernĂ©es. Contrairement Ă  l’anonymisation, la pseudonymisation est un processus rĂ©versible.

  • En pratique, un processus de pseudonymisation consiste Ă  remplacer les donnĂ©es directement identifiantes (nom, prĂ©nom, etc.) d’un jeu de donnĂ©es par des donnĂ©es indirectement identifiantes (alias, numĂ©ro dans un classement, etc.) afin d’en rĂ©duire leur sensibilitĂ©. Elles peuvent rĂ©sulter d’un hachage cryptographique des donnĂ©es des individus, tels que son adresse IP, son identifiant utilisateur, son adresse e-mail.

  • Les donnĂ©es rĂ©sultant d’une pseudonymisation sont considĂ©rĂ©es comme des donnĂ©es Ă  caractĂšre personnel et restent donc soumises aux obligations du RGPD. Toutefois, le rĂšglement europĂ©en encourage l’utilisation de la pseudonymisation dans le cadre du traitement des donnĂ©es Ă  caractĂšre personnel. Par ailleurs le RGPD considĂšre que la pseudonymisation permet de rĂ©duire les risques pour les personnes concernĂ©es et de contribuer Ă  la mise en conformitĂ© au rĂšglement.

Fiche n°2 : PrĂ©parer son dĂ©veloppement

Les principes de la protection des donnĂ©es Ă  caractĂšre personnel doivent ĂȘtre intĂ©grĂ©s aux dĂ©veloppements informatiques dĂšs les phases de conception afin de protĂ©ger la vie privĂ©e des personnes dont vous allez traiter les donnĂ©es, et de leur offrir une meilleure maĂźtrise de leurs donnĂ©es et de limiter les erreurs, pertes, modifications non autorisĂ©es, ou mauvais usages de celles-ci dans les applications.

Choix méthodologiques

  • Mettez la protection de la vie privĂ©e au cƓur de vos dĂ©veloppements en adoptant une mĂ©thodologie de Privacy By Design.

  • Si vous utilisez des mĂ©thodes agiles pour vos dĂ©veloppements, pensez Ă  intĂ©grer la sĂ©curitĂ© au cƓur de votre processus. L’ANSSI a rendu disponible un guide « sĂ©curitĂ© & agilitĂ© numĂ©riques Â» qui indique comment conduire vos dĂ©veloppements dans le cadre d’une mĂ©thode agile tout en prenant en compte les aspects sĂ©curitĂ©. N’hĂ©sitez pas Ă  vous en inspirer.

  • Pour tout dĂ©veloppement Ă  destination du grand public, menez une rĂ©flexion sur les paramĂštres relatifs Ă  la vie privĂ©e, et notamment sur le paramĂ©trage par dĂ©faut, par exemple les caractĂ©ristiques et les contenus des utilisateurs visibles par dĂ©faut.

  • RĂ©alisez une analyse d’impact sur la protection des donnĂ©es (AIPD). Pour certaines opĂ©rations de traitement, elle est obligatoire. Dans les autres cas c’est une bonne pratique qui vous permettra d’identifier et de traiter tous les risques en amont de vos dĂ©veloppements. La CNIL dispose d’une section spĂ©ciale sur son site et elle met Ă  disposition un logiciel gratuit consacrĂ© Ă  ce type d’analyse.

Choix technologiques

Architecture et fonctionnalités

  • IntĂ©grez la protection de la vie privĂ©e, y compris les exigences de sĂ©curitĂ© des donnĂ©es, dĂšs la conception de l’application ou du service. Ces exigences doivent influer sur les choix d’architecture (par exemple dĂ©centralisĂ©e vs centralisĂ©e) ou de fonctionnalitĂ©s (par exemple anonymisation Ă  bref dĂ©lai, minimisation des donnĂ©es). Le paramĂ©trage par dĂ©faut de l’application doit respecter les exigences minimales de sĂ©curitĂ© et ĂȘtre en conformitĂ© avec la loi. Par exemple, la complexitĂ© par dĂ©faut des mots de passe doit respecter Ă  minima la recommandation de la CNIL relative aux mots de passe.

  • Gardez la maĂźtrise de votre systĂšme. Il est important de garder la maĂźtrise de votre systĂšme, autant afin d’en assurer le bon fonctionnement que de garantir un haut niveau de sĂ©curitĂ©. Garder un systĂšme simple permet d’en comprendre prĂ©cisĂ©ment les rouages et d’identifier ses points de fragilitĂ©. Dans le cas oĂč une certaine complexitĂ© est nĂ©cessaire, il est conseillĂ© de dĂ©marrer d’un systĂšme simple, correctement conçu et sĂ©curisĂ©. Ensuite, il est possible d’en augmenter la complexitĂ© petit Ă  petit, tout en continuant de sĂ©curiser les nouveautĂ©s qui s’ajoutent.

  • Ne vous reposez pas sur une seule ligne de dĂ©fense. MalgrĂ© toutes les dispositions prises pour concevoir un systĂšme sĂ©curisĂ©, il peut arriver que certains composants rajoutĂ©s ultĂ©rieurement ne soient pas suffisamment sĂ©curisĂ©s. Pour minimiser les risques sur les utilisateurs finaux, il est conseillĂ© de dĂ©fendre le systĂšme en profondeur. Exemple : contrĂŽler les donnĂ©es entrĂ©es dans un formulaire en ligne fait partie des dĂ©fenses de pĂ©riphĂ©rie. Dans le cas oĂč cette dĂ©fense est dĂ©tournĂ©e, une protection des requĂȘtes en base de donnĂ©es pourra prendre le relais.

Outils et pratiques

  • Utilisez des normes de programmation prenant en compte la sĂ©curitĂ©. Souvent, des listes de normes, bonnes pratiques ou guides de codage amĂ©liorant la sĂ©curitĂ© de vos dĂ©veloppements sont dĂ©jĂ  disponibles. Des outils annexes peuvent Ă©galement ĂȘtre intĂ©grĂ©s dans vos environnements de dĂ©veloppement intĂ©grĂ©s (« IDE Â» en anglais) afin de vĂ©rifier automatiquement que votre code respecte les diffĂ©rentes rĂšgles faisant partie de ces normes ou bonnes pratiques. Vous trouverez facilement sur internet des listes de bonnes pratiques pour votre langage de programmation favori. Par exemple ici pour C, C++ ou Java. Pour le dĂ©veloppement d’application web, des guides de bonnes pratiques spĂ©cifiques existent, tels que ceux publiĂ©s par l’OWASP.

  • Le choix des technologies utilisĂ©es est crucial. Un certain nombre de points sont Ă  prendre en compte :

    • En fonction du domaine d’application ou de la fonctionnalitĂ© dĂ©veloppĂ©e, un langage ou une technologie peut ĂȘtre plus appropriĂ© qu’une autre.

    • Les langages et technologies Ă©prouvĂ©s sont plus sĂ»rs. Ils ont fait, en gĂ©nĂ©ral, l’objet d’audits afin de corriger les vulnĂ©rabilitĂ©s les plus connues. Il faut cependant faire attention Ă  utiliser les derniĂšres versions de chacune des briques technologiques que vous utiliserez.

    • Il faut Ă  tout prix Ă©viter de coder sa solution dĂ©finitive dans un langage tout juste appris et pas encore maĂźtrisĂ©. Dans le cas contraire, vous vous exposez Ă  un risque accru de faille de sĂ©curitĂ© du fait du manque d’expĂ©rience.

  • Mettez en place un environnement de dĂ©veloppement sĂ©curisĂ© et permettant le versionnage du code, en suivant la fiche dĂ©diĂ©e de ce guide.

Fiche n°3 : SĂ©curiser son environnement de dĂ©veloppement

La sĂ©curitĂ© des serveurs de production, de dĂ©veloppement, d'intĂ©gration continue ainsi que les postes de travail des dĂ©veloppeuses et dĂ©veloppeurs doit ĂȘtre une prioritĂ© car ils centralisent l'accĂšs Ă  un grand nombre de donnĂ©es.

Évaluez vos risques et adoptez les mesures de sĂ©curitĂ© adĂ©quates

  • Évaluez les risques dans les outils et les processus utilisĂ©s pour vos dĂ©veloppements. Recensez vos mesures de sĂ©curitĂ© existantes et dĂ©finissez un plan d'action permettant d'amĂ©liorer la couverture de vos risques. DĂ©signez une personne responsable de sa mise en Ɠuvre.

  • Pensez Ă  prendre compte les risques sur tous les outils que vous utilisez, notamment les risques liĂ©s aux outils SaaS (Software as a Service) et collaboratifs dans le cloud (type Slack, Trello, GitHub, etc.).

Sécurisez vos serveurs et vos postes de travail d'une façon homogÚne et reproductible

  • Des listes de recommandations concernant la sĂ©curisation des serveurs, postes de travail et rĂ©seaux internes sont disponibles dans les fiches n°5 Ă  8 du guide sĂ©curitĂ© des donnĂ©es personnelles de la CNIL.

  • RĂ©digez un document regroupant ces mesures et expliquant leur configuration : il permet de s'assurer d'une mise en place homogĂšne des mesures de sĂ©curitĂ© sur les serveurs et les postes de travail. Afin de rĂ©duire la charge de travail, des outils de gestion de configuration, tels qu'Ansible, Puppet ou Chef, peuvent ĂȘtre utilisĂ©s.

  • Mettez Ă  jour les serveurs et postes de travail, si possible de maniĂšre automatique. Vous pouvez vous constituer une liste de veille recensant les vulnĂ©rabilitĂ©s les plus importantes, par exemple les alertes de sĂ©curitĂ©, avis de sĂ©curitĂ© et les bulletins d'actualitĂ© du CERT-FR.

Maßtrisez vos accÚs et tracez les opérations

  • Documentez la gestion de vos clĂ©s SSH (utilisation d'algorithmes de cryptographie et de longueur de clĂ©s Ă  l'Ă©tat de l'art, protection des clĂ©s privĂ©es par une passphrase, rotation des clĂ©s). Pour des exemples de bonnes pratiques, consulter le document sur l'usage sĂ©curisĂ© d'(open)SSH.

  • Favorisez une authentification forte sur les services utilisĂ©s par l'Ă©quipe de dĂ©veloppement.

  • Tracez les accĂšs Ă  vos machines et, si possible, mettez en place une analyse automatique des journaux. Afin de conserver des traces fiables, l'usage de compte gĂ©nĂ©rique est Ă  proscrire.

  • La plupart des services centralisĂ©s (Gitlab ou Jenkins par exemple) nĂ©cessite la crĂ©ation de jetons individuels pour authentifier les requĂȘtes (“Webhook”). Il est recommandĂ© d'associer une durĂ©e de vie limitĂ©e Ă  ces jetons et de les rĂ©voquer lorsqu'ils ne sont plus utilisĂ©s.

Fiche n°4 : GĂ©rer son code source

Quelle que soit l’ampleur de votre projet, il est trĂšs fortement recommandĂ© d’utiliser un outil de gestion de code source pour suivre dans le temps ses diffĂ©rentes versions.

Paramétrez efficacement votre gestionnaire de code source, en pensant à sa sécurité

  • Un gestionnaire de code source est un logiciel permettant de stocker l’ensemble de votre code source et des fichiers associĂ©s, tout en conservant la chronologie de toutes les modifications qui ont Ă©tĂ© apportĂ©es. Un simple serveur FTP ne constitue pas un gestionnaire de code source.

  • ParamĂ©trez correctement votre environnement en utilisant les fonctionnalitĂ©s proposĂ©es par votre gestionnaire de code source. Il est recommandĂ© de mettre en place une authentification forte et/ou une authentification par clĂ©s SSH dĂšs le dĂ©but de votre projet.


  • Par ailleurs, attribuez aux utilisateurs de votre gestionnaire de code source des niveaux d’accĂšs Ă  votre projet et dĂ©finissez pour chacun des niveaux les permissions correspondantes (par exemple, un niveau « invitĂ© Â» avec des droits limitĂ©s en lecture, un niveau « Ă©quipe de dĂ©veloppement » avec des droits en Ă©criture, etc.).

  • Faites des sauvegardes rĂ©guliĂšres de votre systĂšme de gestion de code source. En particulier, pensez Ă  sauvegarder votre serveur principal oĂč toutes les modifications sont enregistrĂ©es.

  • Mettez en place des procĂ©dures de dĂ©veloppement pour travailler efficacement mĂȘme si plusieurs personnes dĂ©veloppent en mĂȘme temps. Par exemple, vous pouvez dĂ©cider de ne pas travailler sur la mĂȘme branche (master ou main), mais de mettre en place des branches par fonctionnalitĂ©, qui seront fusionnĂ©es dans la branche principale au fur et Ă  mesure du dĂ©veloppement. De telles stratĂ©gies de dĂ©veloppement sont dĂ©jĂ  bien documentĂ©es, par exemple dans Git Flow. Par ailleurs, certains gestionnaires de code source proposent de configurer des branches protĂ©gĂ©es qui empĂȘchent des modifications non autorisĂ©es sur les fichiers contenus dans ces branches.

Soyez vigilant sur le contenu de votre code source

  • Mettez en Ɠuvre des outils de mĂ©triques de qualitĂ© de code qui scanneront votre code dĂšs son commit pour vĂ©rifier sa bonne qualitĂ©. Vous pouvez Ă©galement ajouter des scripts de contrĂŽle de ces mĂ©triques dans la configuration du gestionnaire de code source : le commit sera alors annulĂ© si le code source n’est pas d’une qualitĂ© suffisante.

  • Conservez vos secrets et mots de passe en dehors de votre dĂ©pĂŽt de code source :

    • dans des fichiers Ă  part, qui n’ont pas fait l’objet d’un commit. Pensez Ă  utiliser les fichiers spĂ©ciaux de votre gestionnaire de code source (tels que .gitignore pour Git) afin de ne pas commiter les fichiers sensibles par erreur.

    • dans des variables d’environnement, en prenant soin de vĂ©rifier que les variables d’environnement ne sont pas accidentellement Ă©crites dans des logs ou affichĂ©es lors d’une erreur de l’application.

    • en les stockant dans des enclaves sĂ©curisĂ©es ou des dĂ©pots sĂ©parĂ©s avec accĂšs restreint que vous pourrez appeler comme dĂ©pendance externe de votre projet.

    • en utilisant des logiciels spĂ©cifiques de gestion de secrets ou de gestion de configuration (par exemple Vault de la sociĂ©tĂ© HashiCorp, Keywhiz de la sociĂ©tĂ© Square ou Knox de la sociĂ©tĂ© Pinterest).

    • Enfin, si vous devez inclure de telles donnĂ©es dans votre dĂ©pĂŽt, pensez Ă  chiffrer/dĂ©chiffrer automatiquement les fichiers en utilisant un greffon de votre gestionnaire de code source (par exemple git-crypt).

  • AprĂšs un commit qui contient des donnĂ©es personnelles ou d’autres donnĂ©es critiques, n’oubliez pas de purger complĂštement le dĂ©pĂŽt de code source : mĂȘme aprĂšs modification, les donnĂ©es peuvent rester disponibles dans l’historique de votre dĂ©pĂŽt.

  • Faites preuve de prudence avant de publier en ligne votre code source. Passez en revue l’intĂ©gralitĂ© de son contenu afin de vous assurer qu’aucune donnĂ©e personnelle, mot de passe ou autre secret n’est prĂ©sent, y compris dans tout l’historique des modifications.

Exemples d’outils

  • À l’inverse d’outils tels que Subversion, qui ont besoin d’un serveur central pour fonctionner, les principaux gestionnaires de code source (Git, Mercurial par exemple) sont dĂ©centralisĂ©s.

  • Pour la plupart de ces outils, une interface web et des outils annexes (gestion des bugs, wiki pour votre documentation, etc.) sont proposĂ©s. Ces solutions peuvent soit ĂȘtre accessibles par internet (GitHub, Bitbucket, etc.), soit ĂȘtre installĂ©es en interne sur vos serveurs (GitLab).

Fiche n°5 : Faire un choix Ă©clairĂ© de son architecture

Lors de la conception de l’architecture de votre application, vous devez identifier les donnĂ©es personnelles qui seront collectĂ©es et dĂ©finir un parcours et un cycle de vie pour chacune d’entre elles. Le choix des supports de donnĂ©es (stockage local, serveur, service cloud) est une Ă©tape cruciale, qui doit ĂȘtre adaptĂ©e Ă  vos besoins, mais aussi Ă  vos connaissances techniques. Le registre des activitĂ©s de traitement et une analyse d’impact peuvent vous accompagner dans ce choix.

Étudier le parcours de ses donnĂ©es

  • ReprĂ©sentez et dĂ©crivez en amont du projet le fonctionnement attendu de votre projet, avec un schĂ©ma des flux de donnĂ©es et la description dĂ©taillĂ©e des processus mis en Ɠuvre et des supports utilisĂ©s.

  • Lorsque les donnĂ©es sont uniquement stockĂ©es sur le terminal de l’utilisateur (stockage local) ou restent confinĂ©es sur des rĂ©seaux de communication intĂ©gralement sous la maĂźtrise de l’utilisateur (par exemple, le Wi-Fi ou autre rĂ©seau local), le principal point d’attention est celui de la sĂ©curitĂ© des donnĂ©es. Les durĂ©es de conservation sur ces donnĂ©es peuvent ĂȘtre dĂ©terminĂ©es par la personne elle-mĂȘme ; elle doit cependant ĂȘtre en mesure de supprimer ces donnĂ©es Ă  tout moment.

  • Lorsque les donnĂ©es doivent transiter par un service en ligne, le choix d’hĂ©berger soi-mĂȘme ces donnĂ©es ou de passer par un prestataire doit se faire en fonction de vos connaissances en sĂ©curitĂ© et de la qualitĂ© de service attendue. Les offres de cloud reconnues peuvent prĂ©senter des niveaux de sĂ©curitĂ© supĂ©rieurs. Cependant, elles gĂ©nĂšrent de nouveaux risques qui doivent ĂȘtre maĂźtrisĂ©es. Pour vous aider, vous pouvez vous appuyer sur la recommandation de la CNIL sur le Cloud computing.

En cas de recours Ă  un prestataire pour l’hĂ©bergement

  • Choisir un prestataire garantissant la mise en place de mesures de sĂ©curitĂ© et de confidentialitĂ© appropriĂ©es, et suffisamment transparentes. La CNIL vous propose des modĂšles de clauses de confidentialitĂ©.

  • S’assurer de connaĂźtre la localisation gĂ©ographique des serveurs qui vont hĂ©berger vos donnĂ©es. Vous pouvez ĂȘtre amené⋅e Ă  effectuer des transferts de donnĂ©es hors de l’Union europĂ©enne (UE) et de l’espace Ă©conomique europĂ©en (EEE). Si les donnĂ©es peuvent circuler librement dans l’UE/EEE, les transferts hors de cet espace sont possibles, Ă  condition d’assurer un niveau de protection des donnĂ©es suffisant et appropriĂ©. La CNIL fournit sur site une carte permettant de visualiser les diffĂ©rents niveaux de protection des donnĂ©es des pays dans le monde.

  • Si vous devez recourir Ă  un prestataire pour hĂ©berger des donnĂ©es de santĂ©, assurez-vous que celui-ci est certifiĂ© ou agréé pour cette activitĂ©.

  • Les autres points de vigilance sont notamment :
    • l’existence d’une politique de sĂ©curitĂ© accessible ;
    • les mesures de sĂ©curitĂ© et sĂ»retĂ© physique sur le site d’hĂ©bergement ;
    • le chiffrement des donnĂ©es et les autres procĂ©dĂ©s garantissant que le prestataire n’a pas accĂšs aux donnĂ©es qui lui sont confiĂ©es ;
    • la gestion des mises Ă  jour, la gestion des habilitations, l’authentification des personnels et la sĂ©curitĂ© des dĂ©veloppements applicatifs ;
    • la rĂ©versibilitĂ©/portabilitĂ© aisĂ©e des donnĂ©es dans un format structurĂ© et couramment utilisĂ©, sur demande et Ă  tout moment.

Fiche n°6 : SĂ©curiser vos sites web, vos applications et vos serveurs

Tout site web, application ou serveur doit intĂ©grer les rĂšgles Ă©lĂ©mentaires de sĂ©curitĂ© Ă  l’état de l’art, tant sur les communications que sur les authentifications ou son infrastructure.

Sécuriser les communications

  • Mettez en Ɠuvre le protocole TLS version 1.2 ou 1.3 (en remplacement de SSL) sur tous les sites web et pour les transmissions de donnĂ©es de vos applications mobiles en utilisant uniquement les versions les plus rĂ©centes et en vĂ©rifiant sa bonne mise en Ɠuvre.

  • Rendez l’utilisation de TLS obligatoire pour toutes les pages de votre site et pour vos applications mobiles.

  • Limitez les ports de communication strictement nĂ©cessaires au bon fonctionnement des applications installĂ©es. Si l’accĂšs Ă  un serveur web n’est possible qu’à l’aide du protocole HTTPS, seul le ports 443 de ce serveur, et Ă©ventuellement le port 80 afin de rediriger vers le protocole HTTPS, doit ĂȘtre accessible sur Internet. Les autres ports doivent alors ĂȘtre bloquĂ©s au niveau du pare-feu.

  • L’ANSSI a publiĂ© sur son site des recommandations spĂ©cifiques pour mettre en Ɠuvre TLS ou pour sĂ©curiser un site web.

Sécuriser les authentifications

  • Ne stockez jamais les mots de passe en clair. Stockez-les sous forme de hachage (hash) au moyen d’une librairie Ă©prouvĂ©e, comme Argon2, yescrypt, scrypt, balloon, bcrypt et, dans une moindre mesure, PBKDF2.
  • Dans le cas oĂč des cookies sont utilisĂ©s pour permettre l’authentification, il est recommandĂ© :

    • de protĂ©ger les cookies contre des lectures via des canaux de non chiffrĂ©es, en forcant l’utilisation d’HTTPS via l’HSTS, ainsi que par l'utilisation des indicateurs Secure et HttpOnly ;

    • d'utiliser des protections contre des injections de requĂȘtes illĂ©gitimes par rebond (cross-site request forgery ou CSRF) en utilisant des mesures de protection comme le CSRF Token et l'indicateur SameOrigin sur les requĂȘtes. L'indicateur SameSite des cookies doit avoir la valeur Strict lorsque c'est possible ;

    • d'utiliser un sous-domaine spĂ©cifique pour dĂ©poser le token d'authentification avec l'indicateur domain des cookies laissĂ©s vides pour exclure les domaines tiers dans le cas oĂč de la dĂ©lĂ©gation de sous-domaine est utilisĂ©e (par exemple Ă  travers l'usage de CNAME), ou bien des serveurs avec un faible niveau de sĂ©curitĂ© sont destinataires des requĂȘtes HTTP sur le domaine principal.

  • Testez les suites cryptographiques installĂ©es sur les systĂšmes et dĂ©sactivez les suites obsolĂštes (RC4, MD4, MD5, SHA1, etc.). Favorisez l’utilisation de l’AES256. Lire la note de l’ANSSI sur le sujet.

  • Adoptez une politique spĂ©cifique de mots de passe pour les administrateurs. Changez les mots de passe, au moins, lors de chaque dĂ©part d’un administrateur et en cas de suspicion de compromission. Favorisez l’authentification forte lorsque c’est possible.

  • Limitez l’accĂšs aux outils et interfaces d’administration aux seules personnes habilitĂ©es. Favoriser l’usage des comptes de moindres privilĂšges pour les opĂ©rations courantes.

  • L’accĂšs depuis Internet aux interfaces d’administration doit faire l’objet de mesures de sĂ©curitĂ© renforcĂ©es. Par exemple, pour les serveurs internes, la mise en Ɠuvre d’un VPN avec authentification forte de l’utilisateur ainsi que du poste qu’il utilise peut ĂȘtre une bonne solution.

Limiter la divulgation d’information sur les comptes existants

Concevoir les processus d'authentification, de réinitialisation des mots de passe et de création de compte de maniÚre à ce qu'un attaquant ne puisse savoir si une adresse mail spécifique possÚde un compte utilisateur.

  • GĂ©nĂ©raliser les messages d'erreurs d'authentification pour ne pas divulguer d'information sur l'existence d'un compte : "ce couple identifiant/mot de passe est inconnu".
  • Ne pas confirmer l'existence d'un compte utilisateur en cas d'utilisation de la fonctionnalitĂ© de rĂ©initialisation des mots de passe : "Si un compte existe avec cette adresse un mail de rĂ©initialisation lui a Ă©tĂ© envoyĂ©"
  • Faire valider l'adresse mail du compte utilisateur en tant que premiĂšre Ă©tape de la crĂ©ation d'un compte utilisateur avant toute collecte d'autres donnĂ©es personnelles, et envoyer soit un mail de validation de l'adresse si celle-ci ne dispose pas encore d'un compte, soit un mail de rĂ©initialisation du mot de passe si l'adresse existe, en n'affichant qu'un message gĂ©nĂ©rique sur le service : "un mail de validation de votre adresse ou de rĂ©initialisation de votre mot de passe vous a Ă©tĂ© envoyĂ©"

Sécuriser les infrastructures

  • Effectuez des sauvegardes, si possible chiffrĂ©es et vĂ©rifiĂ©es rĂ©guliĂšrement. C’est particuliĂšrement utile en cas d’attaque d’un rançongiciel sur vos systĂšmes, le fait de disposer de sauvegardes pour tous vos systĂšmes sera la seule mesure qui pourra vous permettre de remettre en Ă©tat vos systĂšmes.

  • Limitez le nombre de composants mis en Ɠuvre, et pour chacun de ces composants :

    • installez les mises Ă  jour critiques sans dĂ©lai en programmant une vĂ©rification automatique hebdomadaire ;

    • automatisez une veille des vulnĂ©rabilitĂ©s par exemple en s’inscrivant au bulletin CERT-FR.

  • Utilisez des outils de dĂ©tection des vulnĂ©rabilitĂ©s pour les traitements les plus critiques afin de dĂ©tecter d’éventuelles failles de sĂ©curitĂ©. Des systĂšmes de dĂ©tection et prĂ©vention des attaques sur des systĂšmes ou serveurs critiques peuvent aussi ĂȘtre utilisĂ©s. Ces tests doivent ĂȘtre menĂ©s rĂ©guliĂšrement et avant toute mise en production d’une nouvelle version logicielle.

  • Restreignez ou interdisez l’accĂšs physique et logique aux ports de diagnostic et de configuration Ă  distance. Vous pouvez par exemple lister l’ensemble des ports ouverts au moyen de l’outil netstat.

  • ProtĂ©gez les bases de donnĂ©es que vous rendez accessibles sur Internet, au moins en restreignant au maximum les accĂšs (par exemple par filtrage IP) et en changeant le mot de passe par dĂ©faut du compte administrateur.

  • En matiĂšre de gestion de bases de donnĂ©es, les bonnes pratiques sont notamment de :

    • utiliser des comptes nominatifs pour l’accĂšs aux bases de donnĂ©es et crĂ©er des comptes spĂ©cifiques Ă  chaque application ;

    • rĂ©voquer les privilĂšges d’administration des comptes nominatifs ou applicatifs pour empĂȘcher la modification de la structure de la base de donnĂ©es des applications (tables, vues, procĂ©dures, etc.) ;

    • mettre en Ɠuvre des mesures contre les attaques par injection de code SQL, de scripts, etc. ;

    • favoriser le chiffrement des donnĂ©es sur les disques de stockage et dans les bases de donnĂ©es.

  • Compartimentez vos diffĂ©rents environnements d’exĂ©cution afin d'ĂȘtre en mesure d'appliquer le principe de moindre privilĂšge sur chaque sous-partie des ces environnements.

Fiche n°7 : Minimiser les donnĂ©es collectĂ©es

Vous ne devez collecter que les données personnelles qui sont adéquates, pertinentes et nécessaires au regard des finalités de votre traitement telles que définies au moment de la collecte.

Avant la collecte, pensez aux différents types de données que vous devez collecter et essayez de restreindre votre collecte au strict nécessaire

  • RĂ©flĂ©chissez aux diffĂ©rents types de donnĂ©es qui devront ĂȘtre collectĂ©es avant la mise en place d’une application et documentez cette rĂ©flexion.

  • Si des donnĂ©es spĂ©cifiques ne sont pas nĂ©cessaires pour une certaine catĂ©gorie de personnes, ne les collectez pas.

  • Traitez et stockez les donnĂ©es de façon Ă  rĂ©duire leur prĂ©cision (Ă  l’instar de la pseudonymisation). Par exemple, stockez seulement l’annĂ©e de naissance au lieu d’une date de naissance complĂšte si l’application n’a besoin que de l’annĂ©e.

  • En cas de collecte de donnĂ©es particuliĂšrement sensibles, par exemple celles relatives Ă  la santĂ© ou Ă  des condamnations pĂ©nales, veillez bien Ă  ne collecter que le minimum requis. En raison de ces contraintes rĂ©glementaires, le plus simple est encore de ne pas les collecter si vous pouvez vous en passer.

  • Minimisez la quantitĂ© de donnĂ©es collectĂ©es Ă©galement dans les donnĂ©es de journalisation et n’y stockez pas de donnĂ©es sensibles ou critiques (donnĂ©es de santĂ©, mots de passe, etc.).

  • Certaines fonctionnalitĂ©s peuvent permettre d’amĂ©liorer l’expĂ©rience utilisateur, mais ne sont pas strictement nĂ©cessaires au bon fonctionnement de votre application (par exemple la gĂ©olocalisation afin de simplifier une recherche gĂ©ographique). Dans ce cas, l’utilisateur final doit pouvoir choisir d’utiliser ou non cette fonctionnalitĂ©. Dans le cas oĂč il l’utilise, les donnĂ©es que vous ĂȘtes amenĂ© Ă  collecter pour son fonctionnement ne doivent ĂȘtre conservĂ©es que pendant la durĂ©e strictement nĂ©cessaire Ă  son fonctionnement et ne jamais ĂȘtre utilisĂ©es Ă  d’autres fins.

  • Pensez Ă  associer des durĂ©es de conservation pour chaque catĂ©gorie de donnĂ©es, en fonction de la finalitĂ© du traitement et des obligations lĂ©gales ou rĂ©glementaires relative Ă  leur conservation. Les journaux doivent Ă©galement avoir une durĂ©e de conservation. Documentez les durĂ©es de conservation dĂ©finies. Vous devrez ĂȘtre en mesure de les justifier.

Une fois les donnĂ©es collectĂ©es, mettez en place des mĂ©canismes d’effacement automatique

  • Mettez en Ɠuvre un systĂšme de purge automatique Ă  l’expiration de la durĂ©e de conservation. Vous pouvez Ă©galement mettre en place des revues manuelles des donnĂ©es stockĂ©es de façon pĂ©riodique.

  • Afin de garantir un effacement complet, effacez physiquement toutes les donnĂ©es qui ne sont plus nĂ©cessaires grĂące Ă  des outils spĂ©cialisĂ©s ou en dĂ©truisant les supports physiques.

  • Si les donnĂ©es sont encore utiles, vous pouvez rĂ©duire leur sensibilitĂ© en les pseudonymisant, voire en les anonymisant. En cas de pseudonymisation, ces donnĂ©es restent soumises Ă  la rĂ©glementation sur les donnĂ©es personnelles (voir la fiche 1).

  • Journalisez les procĂ©dures d’effacement automatique. Les journaux correspondants pourront ĂȘtre utilisĂ©s comme preuve d’effacement d’une donnĂ©e.

Fiche n°8 : GĂ©rer les utilisateurs

La maniĂšre de gĂ©rer les profils de vos collaborateurs et de vos utilisateurs finaux doit ĂȘtre pensĂ©e en amont de vos dĂ©veloppements. Elle consiste Ă  dĂ©finir diffĂ©rents profils d’accĂšs et d’habilitation afin que chaque personne ne puisse accĂ©der qu’aux seules donnĂ©es dont il a effectivement besoin.

Les bonnes pratiques de gestion des utilisateurs

  • Tout commence par l’utilisation d’identifiants uniques et propres Ă  chaque individu, qu’ils soient utilisateurs de votre application ou collaborateurs dans le dĂ©veloppement.

  • Veillez Ă  imposer une authentification avant tout accĂšs Ă  des donnĂ©es personnelles, conformĂ©ment aux recommandations de la CNIL.

  • Pour vous assurer que chaque personne (utilisateur ou collaborateur) ne puisse accĂ©der qu’aux donnĂ©es dont il a effectivement besoin, votre systĂšme doit prĂ©voir dĂšs la conception des politiques de gestion d’accĂšs aux donnĂ©es diffĂ©renciĂ©es (lecture, Ă©criture, suppression, etc.) suivant les personnes et les besoins. Un mĂ©canisme de gestion des profils utilisateurs global vous permettra de regrouper diffĂ©rents droits en fonction d’un rĂŽle exercĂ© par un groupe d’utilisateurs au sein de l’application.

  • La gestion des profils utilisateurs peut s’accompagner d’un systĂšme de journalisation (c’est-Ă -dire un enregistrement dans des « fichiers journaux Â» ou « logs Â») afin de tracer les activitĂ©s, et dĂ©tecter toutes anomalies ou Ă©vĂšnements liĂ©s Ă  la sĂ©curitĂ©, comme les accĂšs frauduleux et les utilisations abusives de donnĂ©es personnelles. L’utilisation de ces dispositifs ne doit en aucun cas servir Ă  d’autres fins que celles de garantir le bon usage du systĂšme informatique et les logs ne doivent pas ĂȘtre conservĂ©s plus longtemps que nĂ©cessaire. Ces systĂšmes de journalisation ne doivent pas amener Ă  stocker des donnĂ©es au-delĂ  de leur durĂ©e de conservation. De maniĂšre gĂ©nĂ©rale, une durĂ©e de six mois est adĂ©quate. Assurez-vous enfin que ces traces ne comportent aucune donnĂ©e sensible.

  • Vous pouvez Ă©galement prĂ©voir des audits de code ou des tests d’intrusion au sein de votre environnement de dĂ©veloppement afin de vous assurer de la robustesse de votre systĂšme de gestion des profils.

Fluidifier la gestion des profils d’habilitation

  • PrĂ©voyez de documenter ou automatiser les procĂ©dures de mouvement de vos collaborateurs, d’inscription et de dĂ©sinscription de vos utilisateurs. Par exemple, ces procĂ©dures doivent encadrer les actions Ă  mener lorsque les personnes ne sont plus habilitĂ©es Ă  accĂ©der Ă  un local ou Ă  une ressource informatique, ou Ă  la fin de leur contrat.

  • La gestion de vos utilisateurs et collaborateurs implique une revue rĂ©guliĂšre des droits accordĂ©s suivant l’évolution des usages et des mouvements organisationnels au sein de votre projet. L’utilisation de services d’annuaire, comme Lightweight Directory Access Protocol (LDAP), vous aidera Ă  suivre ces Ă©volutions et vous permettra d’affiner vos stratĂ©gies d’accĂšs, par exemple en attribuant des rĂŽles suivant les profils d’usage. Cela vous permet de mieux respecter le principe de moindre privilĂšge.

  • L’utilisation de compte "suprĂȘme" (type root, administrateur, etc.) est Ă  proscrire pour les opĂ©rations conventionnelles, car elle constitue la clĂ© de voute de votre systĂšme et une cible privilĂ©giĂ©e pour un Ă©ventuel attaquant externe. Nous vous recommandons d’y associer une politique de mot de passe fort (suite de 10 Ă  20 caractĂšres ou multifacteur) et de limiter Ă  son plus strict nĂ©cessaire le nombre de personnes ayant connaissance de celui-ci.

  • Favorisez l’usage d’un gestionnaire de mots de passe au sein de votre projet et privilĂ©giez le passage Ă  une authentification forte lorsque c’est possible. Évitez Ă©galement les comptes gĂ©nĂ©riques partagĂ©s entre plusieurs personnes.

Ressources utiles

Fiche n°9 : MaĂźtriser vos bibliothĂšques et vos SDK

Vous utilisez des bibliothĂšques, kits de dĂ©veloppement (« SDK Â» en anglais), ou d’autres composants logiciels Ă©crits par des tiers ? Voici quelques conseils pour intĂ©grer ces outils tout en gardant la maĂźtrise de vos dĂ©veloppements.

Faire un choix éclairé

  • Évaluez l’intĂ©rĂȘt de l’ajout de chaque dĂ©pendance. Certaines briques logicielles couramment utilisĂ©es ne font que quelques lignes. Cependant chaque Ă©lĂ©ment rajoutĂ© est une augmentation de la surface d’attaque de vos systĂšmes. Dans le cas oĂč une seule bibliothĂšque propose plusieurs fonctionnalitĂ©s, n’intĂ©grez que les fonctionnalitĂ©s dont vous avez effectivement besoin : en activant le minimum de fonctionnalitĂ©s, vous rĂ©duisez le nombre de bugs potentiels qui pourraient survenir.

  • Choisissez des logiciels, bibliothĂšques et SDK maintenus :

    • Si vous souhaitez utiliser du logiciel libre ou open source, essayez de choisir des projets ou des solutions avec une communautĂ© active, des mises Ă  jour rĂ©guliĂšres et une bonne documentation ;

    • Si vous utilisez d’autres types de solutions avec un support commercial, assurez-vous contractuellement que le code sera maintenu et mis Ă  jour pendant toute la durĂ©e de vie de votre projet.

  • Prenez en compte la question de la vie privĂ©e. Certains SDK et certaines bibliothĂšques collectent des donnĂ©es personnelles depuis les applications et les sites sur lesquels ils sont intĂ©grĂ©s. VĂ©rifiez les engagements pris par le fournisseur de ces solutions, les directives mise en Ɠuvre fournies. Assurez-vous enfin que l'intĂ©gration respecte les conditions suivantes :

    • l’utilisateur final est informĂ© de ces opĂ©rations de traitements ;

    • un mĂ©canisme est prĂ©vu pour recueillir le consentement des utilisateurs lorsqu’une collecte de donnĂ©es non strictement nĂ©cessaires pour la fourniture du service est mis en Ɠuvre depuis son terminal ;

    • les Ă©ventuels transferts de donnĂ©es hors de l’union europĂ©enne sont correctement encadrĂ©s ;

    • la relation avec le tiers est encadrĂ© par un contrat de sous-traitance conforme Ă  l’article 28 du RGPD.

  • Ces obligations s'appliquent particuliĂšrement aux « SDK » permettant d’afficher de la publicitĂ© ciblĂ©e sur les terminaux. Ils s'appliquent Ă©galement Ă  certains outils de sĂ©curisation des terminaux et des sites web, tel que le systĂšme de dĂ©tection d'utilisateurs reCAPTCHA de Google, qui indique dans ses conditions d’utilisation qu’en raison des traitements mise en Ɠuvre, son usage est soumis au consentement des utilisateurs.

  • Si vous utilisez des mĂ©canismes cryptographiques, il est fortement dĂ©conseillĂ© d’implĂ©menter des algorithmes ou des protocoles cryptographiques vous-mĂȘmes. Essayez plutĂŽt de choisir des bibliothĂšques cryptographiques maintenues, reconnues et faciles d’utilisation.

Évaluer les Ă©lĂ©ments choisis

  • Lisez leur documentation et changez leur configuration par dĂ©faut. Il est important de connaĂźtre le fonctionnement de vos dĂ©pendances. Les bibliothĂšques et SDK tiers sont souvent fournis avec des fichiers de configuration par dĂ©faut, qui ne sont que trop rarement modifiĂ©s par manque de temps, ce qui provoque de nombreuses failles de sĂ©curitĂ© ;

  • Auditez vos bibliothĂšques et SDK. Savez-vous vraiment ce que font toutes les bibliothĂšques et SDK que vous intĂ©grez ? Quelles sont les donnĂ©es qui sont envoyĂ©es Ă  travers ces dĂ©pendances et quelles sont les destinataires de ces donnĂ©es ? Cet audit vous permettra de dĂ©terminer les obligations Ă  respecter en matiĂšre de protection des donnĂ©es et d’établir la responsabilitĂ© des acteurs ;

  • Cartographiez vos dĂ©pendances. Les bibliothĂšques et SDK tiers peuvent Ă©galement intĂ©grer d’autres composants : auditer leur code vous permettra de mieux cartographier toutes vos dĂ©pendances et de mieux agir si un problĂšme affecte l’une d’elles. Il est aussi recommandĂ© de faire des audits sĂ©curitĂ© de vos composants tiers et d’effectuer une veille sur ceux-ci ;


  • Faites attention aux tentatives de typosquattage et autres techniques malveillantes. VĂ©rifiez les noms des dĂ©pendances, ainsi que de leurs propres dĂ©pendances pour Ă©viter des attaques. Ne copiez-collez pas de lignes de commandes depuis des sites inconnus.

Maintenir les bibliothĂšques et SDK

  • Utilisez des systĂšmes de gestion de dĂ©pendances (tels que yum, apt, maven, pip, etc.) afin de maintenir une liste Ă  jour de vos dĂ©pendances.

  • GĂ©rez les mises Ă  jour de vos dĂ©pendances, particuliĂšrement dans le cas de mises Ă  jour de sĂ©curitĂ© qui corrigent des vulnĂ©rabilitĂ©s. Vous devez mettre en place une procĂ©dure documentĂ©e pour les gĂ©rer et les dĂ©ployer le plus vite possible ;

  • Faites attention aux versions des bibliothĂšques et SDK en fin de support qui ne seront plus maintenues : essayez de trouver une autre solution (choisir une nouvelle bibliothĂšque, renouveler un support commercial) ;

  • Surveillez les statuts des projets open-source, notamment le changement de propriĂ©taire du domaine ou du package, certaines attaques utilisant des mises Ă  jour malicieuses de dĂ©pendances populaires.

Ressources utiles

Fiche n°10 : Veiller Ă  la qualitĂ© de votre code et sa documentation

Il est indispensable d’adopter au plus tĂŽt une bonne hygiĂšne d’écriture de code. Une bonne lisibilitĂ© de votre code permettra de rĂ©duire l’effort de maintenance, d’audit et de corrections des bogues dans le temps, que vous, vos collaborateurs ou vos futurs contributeurs devront fournir.

Documentez le code et l’architecture

  • La documentation est parfois laissĂ©e de cĂŽtĂ© au moment du dĂ©veloppement, par manque de temps ou de visibilitĂ© sur l’ensemble du projet. Elle est pourtant cruciale pour la maintenabilitĂ© de votre projet : elle permet de comprendre globalement le fonctionnement du code, et de savoir quelles parties du code sont affectĂ©es par une modification.

  • Documentez l’architecture, pas uniquement le code : vous devez ĂȘtre en capacitĂ© de garder une vision d’ensemble lorsque vous Ă©crivez votre documentation et d’aider les dĂ©veloppeuses et dĂ©veloppeurs Ă  comprendre de maniĂšre globale le fonctionnement de tous vos composants. En consĂ©quence, privilĂ©giez les schĂ©mas et des explications claires lorsque vous documentez votre projet.

  • Maintenez la documentation en mĂȘme temps que le code : la meilleure façon d’avoir une documentation Ă  jour est de la modifier au fil de l’eau en mĂȘme temps que le code.

  • « Versionnez Â» la documentation avec le code : si vous utilisez un gestionnaire de code source vous pouvez pour chaque « commit Â» modifiant votre code inclure Ă©galement les changements de documentation (voir notamment la fiche « GĂ©rer son code source Â»).

  • Pensez Ă  aborder la sĂ©curitĂ© dans votre documentation : n’oubliez pas d’envisager la dimension sĂ©curitĂ© dans la documentation utilisateur ou dĂ©veloppeur. Vous pouvez notamment documenter les diffĂ©rents choix de configuration de votre application, et expliquer quels sont les rĂ©glages les plus sĂ©curisĂ©s.

ContrÎlez la qualité de votre code et de sa documentation

  • Un code de qualitĂ© passe par l’adoption de bonnes pratiques et de conventions de codage appliquĂ©es de maniĂšre cohĂ©rente sur l’ensemble de votre programme. Pour choisir votre convention de codage, le mieux est de se rĂ©fĂ©rer Ă  des conventions existantes. Voici quelques exemples de bonnes pratiques supplĂ©mentaires :

    • utiliser des noms de variables et de fonctions explicites permet de comprendre plus facilement ce qu’il se passe au premier regard ;

    • correctement indenter son code permet de percevoir la structure du code plus rapidement ;

    • Ă©viter la redondance de code permet de rĂ©duire les efforts de correction qui doivent ĂȘtre apportĂ©s en plusieurs endroits. Un oubli est vite arrivĂ©.

  • Des outils peuvent vous aider Ă  contrĂŽler la qualitĂ© de votre code. Une fois correctement paramĂ©trĂ©s, ils Ă©viteront de relire le code pour vĂ©rifier la bonne mise en place des conventions de codage. En voici quelques exemples :

    • les environnements de dĂ©veloppement intĂ©grĂ©s (« IDE Â»), Ă©ventuellement Ă  l’aide de greffons (« plugins Â»), peuvent ĂȘtre configurĂ©s pour respecter les rĂšgles d’indentation du code, les sauts de ligne entre les diffĂ©rentes portions de code ou encore la position des accolades et autres parenthĂšses ;

    • les logiciels de mesure de la qualitĂ© du code source peuvent signaler les duplications de code, le respect des rĂšgles de programmation ou des bugs potentiels.

Fiche n°11 : Tester vos applications

Tester son produit permet de vĂ©rifier son bon fonctionnement, de s’assurer d’une bonne expĂ©rience utilisateur ainsi que de trouver et prĂ©venir des dĂ©fauts avant sa mise en production. Tester son produit permet Ă©galement de rĂ©duire les risques d’atteinte aux donnĂ©es personnelles.

Automatisez les tests

  • Les tests de dĂ©veloppement (unitaires, fonctionnels, etc.) vont vĂ©rifier l’adĂ©quation entre les spĂ©cifications et le fonctionnement du produit. Les tests de sĂ©curitĂ© (tests Ă  donnĂ©es alĂ©atoires aussi appelĂ©s « fuzzing Â», scan de vulnĂ©rabilitĂ©s, etc.), vont vĂ©rifier que le produit continue d’avoir un fonctionnement acceptable quand on s’éloigne de son utilisation normale et qu’il ne prĂ©sente pas de vulnĂ©rabilitĂ© qui pourrait permettre Ă  des tiers de compromettre sa sĂ©curitĂ©. Ces deux types de tests sont importants pour le bon fonctionnement de votre application.

  • Mettez en place un systĂšme d’intĂ©gration continue afin de lancer les tests automatiquement aprĂšs chaque modification dans votre code source.


IntĂ©grez les tests dans votre stratĂ©gie d’entreprise

  • Dans la mise en place de l’environnement de tests dans la stratĂ©gie de l’entreprise, les mĂ©triques acceptables doivent ĂȘtre dĂ©finies conjointement par toutes les parties avant le dĂ©veloppement.

  • Les mĂ©triques auxquelles il faut rĂ©flĂ©chir sont par exemple :

    • le taux de couverture des tests et leur type ;

    • le taux de rĂ©plication du code ;

    • le nombre de vulnĂ©rabilitĂ©s (au sens de ce que dĂ©tectent les outils) et leur type, etc.

Attention aux donnĂ©es de test !

  • Les donnĂ©es « rĂ©elles Â» de production ne doivent pas ĂȘtre utilisĂ©es pendant la phase de dĂ©veloppement et de test. Utiliser les donnĂ©es personnelles issues de votre base de production Ă  des fins de tests revient Ă  les dĂ©tourner de leur finalitĂ© initiale ;

  • En cas d’utilisation de donnĂ©es personnelles hors production, il faut souligner que les risques de sĂ©curitĂ© sont Ă©galement augmentĂ©s : accĂšs aux donnĂ©es par des personnes qui n’ont pas le besoin d’en connaĂźtre, multiplication des lieux de stockage, etc. ;

  • Construisez donc un jeu de donnĂ©es fictives qui ressemblera aux donnĂ©es qui seront traitĂ©es par votre application. Un jeu de donnĂ©es fictives permettra de s’assurer qu’une divulgation de ces donnĂ©es n’entraĂźnera aucun impact pour les personnes ;


  • Si vous avez besoin d’importer des configurations existantes depuis la production dans vos scĂ©narios de test, pensez Ă  anonymiser les donnĂ©es personnelles qui peuvent ĂȘtre prĂ©sentes.

Fiche n°12 : Informer les personnes

Le principe de transparence du RGPD exige que toute information ou communication relative au traitement de données à caractÚre personnel soit concise, transparente, compréhensible et aisément accessible en des termes simples et clairs.

Qui informer et quand le faire ?

  • Il faut informer les personnes concernĂ©es :

    • en cas de collecte directe des donnĂ©es c’est-Ă -dire lorsque des donnĂ©es sont recueillies directement auprĂšs des personnes. Par exemple, ce type de collecte concerne : les formulaires, les achats en ligne, la souscription d’un contrat, ouverture d’un compte bancaire.

    • lorsqu’elles sont recueillies via des dispositifs ou des technologies d’observation de l’activitĂ© des personnes. Par exemple, l' analyse de la navigation sur Internet, gĂ©olocalisation et Wi-Fi analytics/tracking pour la mesure d’audience ;

    • en cas de collecte indirecte des donnĂ©es personnelles, lorsque les donnĂ©es ne sont pas recueillies directement auprĂšs des personnes. Par exemple, les donnĂ©es rĂ©cupĂ©rĂ©es auprĂšs de partenaires commerciaux, de courtiers en donnĂ©es, de sources accessibles au public ou d’autres personnes.

  • Les moments oĂč cette information est nĂ©cessaire :

    • au moment du recueil des donnĂ©es en cas de collecte directe ;

    • dĂšs que possible en cas de collecte indirecte (notamment lors du premier contact avec la personne) et au plus tard, dans le dĂ©lai d’un mois (sauf exceptions) ;

    • en cas de modification substantielle ou d’évĂ©nement particulier. Par exemple : nouvelle finalitĂ©, nouveaux destinataires, changement dans les modalitĂ©s d’exercice des droits, violation de donnĂ©es.

Quelles informations dois-je donner ?

  • Dans tous les cas, il faut prĂ©ciser :

    • l’identitĂ© et les coordonnĂ©es de l’organisme qui collecte les donnĂ©es (qui traite les donnĂ©es ?) ;

    • les finalitĂ©s (Ă  quoi vont servir les donnĂ©es collectĂ©es ?) ;

    • la base lĂ©gale sur laquelle repose le traitement des donnĂ©es (retrouvez toutes les informations sur les bases lĂ©gales) ;

    • le caractĂšre obligatoire ou facultatif du recueil des donnĂ©es (ce qui suppose une rĂ©flexion en amont sur l’utilitĂ© de collecter ces donnĂ©es au vu de l’objectif poursuivi – principe de « minimisation Â» des donnĂ©es) et les consĂ©quences pour la personne en cas de non-fourniture des donnĂ©es ;

    • les destinataires ou catĂ©gories de destinataires des donnĂ©es (qui a besoin d’y accĂ©der ou de les recevoir au vu des finalitĂ©s dĂ©finies, y compris les sous-traitants ?) ;

    • la durĂ©e de conservation des donnĂ©es (ou critĂšres permettant de la dĂ©terminer) ;

    • l’existence des droits des personnes concernĂ©es ainsi que les moyens de les exercer (les droits d’accĂšs, de rectification, d’effacement et Ă  la limitation sont applicables pour tous les traitements) ;

    • les coordonnĂ©es du dĂ©lĂ©guĂ© Ă  la protection des donnĂ©es de l’organisme, s’il a Ă©tĂ© dĂ©signĂ©, ou d’un point de contact sur les questions de protection des donnĂ©es personnelles ;

    • le droit d’introduire une rĂ©clamation auprĂšs de la CNIL.

  • Dans certains cas particuliers, il faut fournir des informations supplĂ©mentaires, comme dans le cas de transferts de donnĂ©es hors UE, de prise de dĂ©cision entiĂšrement automatisĂ©e ou de profilage, ou encore lorsque la base lĂ©gale du traitement est l’intĂ©rĂȘt lĂ©gitime poursuivi par l’organisme qui collecte les donnĂ©es (voir le site de la CNIL pour en savoir plus).

  • En cas de collecte indirecte, il faut ajouter :

    • les catĂ©gories de donnĂ©es recueillies ;

    • la provenance des donnĂ©es (en indiquant notamment si elles sont issues de sources accessibles au public).

Sous quelle forme dois-je fournir ces informations ?

  • L’information doit ĂȘtre facile d’accĂšs : l’utilisateur doit la trouver sans difficultĂ©s.

  • Elle doit ĂȘtre fournie de maniĂšre claire et comprĂ©hensible, c’est-Ă -dire avec un vocabulaire simple (phrases courtes, sans termes juridiques ou techniques, sans ambiguĂŻtĂ©s) et une information adaptĂ©e au public visĂ© (avec une attention particuliĂšre Ă  l’égard des enfants et personnes vulnĂ©rables).

  • Elle doit ĂȘtre Ă©crite de maniĂšre concise. Afin d’éviter l’écueil du dĂ©luge d’informations noyant l’utilisateur, il faut amener les informations les plus pertinentes au bon moment. Vous pouvez adopter une approche Ă  plusieurs niveaux, en veillant Ă  ce que les personnes bĂ©nĂ©ficient d’un aperçu clair des informations qui leur sont accessibles sur le traitement de ses donnĂ©es Ă  caractĂšre personnel et du moyen de trouver les informations dĂ©taillĂ©es.

  • Elle doit ĂȘtre adaptĂ©e au support d'usage. Par exemple, pour des dispositifs sans Ă©cran comme des enceintes connectĂ©es, vous pouvez vous reposer sur un dispositif externe ("application compagnon") pour dĂ©livrer une information exhaustive aux utilisateurs. Un premier niveau d’information doit Ă©galement ĂȘtre accessible par l’interface d’usage du dispositif.

  • Les informations en rapport avec la protection des donnĂ©es doivent pouvoir ĂȘtre distinguĂ©es de celles qui ne sont pas spĂ©cifiquement liĂ©es Ă  la vie privĂ©e (comme les clauses contractuelles ou les conditions gĂ©nĂ©rales d’utilisation).

Quelle communication effectuer lorsque la sécurité des données est compromise ?

  • Un organisme peut par erreur ou par nĂ©gligence subir, de maniĂšre accidentelle ou malintentionnĂ©e, une violation de donnĂ©es personnelles, c’est Ă  dire une atteinte Ă  la sĂ©curitĂ© des donnĂ©es, autrement dit la destruction, la perte, l’altĂ©ration ou la divulgation non autorisĂ©e de donnĂ©es. Dans ce cas, l’organisme doit signaler la violation Ă  la CNIL dans les 72 heures si celle-ci est susceptible de reprĂ©senter un risque pour les droits et libertĂ©s des personnes.

  • Si ces risques sont Ă©levĂ©s, l’organisme doit Ă©galement en informer les personnes concernĂ©es le plus rapidement possible et leur adresser des conseils pour protĂ©ger leurs donnĂ©es (ex. annulation d’une carte bancaire compromise, modification d’un mot de passe, modification des paramĂ©trages vie privĂ©e
).

  • La notification de la violation Ă  la CNIL doit se faire via le site web de la CNIL. La fiche 18 Se prĂ©munir contre les attaques informatiques donne quelques exemples d'attaques qui peuvent conduire Ă  devoir notifier la CNIL et, le cas Ă©chĂ©ant, les personnes concernĂ©es.

Ressources utiles

Fiche n°13 : PrĂ©parer l’exercice des droits des personnes

Les personnes dont vous traitez les donnĂ©es ont des droits sur ces donnĂ©es : droit d’accĂšs, de rectification, d’opposition, d’effacement, Ă  la portabilitĂ© et Ă  la limitation du traitement. Vous devez leur donner les moyens d’exercer effectivement leurs droits et prĂ©voir dans vos systĂšmes informatiques les outils techniques qui permettront la bonne prise en compte de leurs droits.

PrĂ©parer en amont la façon dont ils vous contacteront et dont vous traiterez leurs demandes vous permettra de gĂ©rer efficacement l’exercice de ces droits.

Les mesures minimales Ă  mettre en place

  • Tous les organismes qui utilisent des donnĂ©es personnelles ont l’obligation d’indiquer oĂč et comment les personnes peuvent exercer leurs droits relatifs Ă  ces donnĂ©es. Vous pouvez par exemple mentionner une adresse e-mail ou un formulaire web au moment de l’information des personnes, ainsi que dans votre politique de vie privĂ©e.

  • Afin de faciliter l’exercice des droits des personnes, ceux-ci peuvent ĂȘtre aussi implĂ©mentĂ©s, totalement ou en partie, directement dans l’application ou le logiciel que vous dĂ©veloppez ou sur des dispositifs associĂ©s par exemple sur des objets connectĂ©s sans Ă©cran. Cette implĂ©mentation spĂ©cifique n’est pas obligatoire, mais elle permet de rĂ©pondre aux attentes des utilisateurs et de rĂ©duire le temps et la complexitĂ© de traitement de ce type de demandes.

  • Avant tout, en cas d’accĂšs ou d’opĂ©rations directement effectuĂ©es par une personne pour exercer ses droits, n’oubliez pas de gĂ©rer son authentification de façon sĂ©curisĂ©e. De maniĂšre gĂ©nĂ©rale, tracez Ă©galement toutes les opĂ©rations ayant un impact sur ses donnĂ©es personnelles.

Voici quelques exemples de droits et leur possible implémentation

  • Droit d’accĂšs : les personnes ont le droit d’obtenir une copie de toutes les informations que vous avez Ă  leur sujet. Cela permet, entre autres, Ă  une personne de savoir si des donnĂ©es la concernant sont traitĂ©es et d’en obtenir une copie lisible dans un format comprĂ©hensible. Il permet notamment de contrĂŽler l’exactitude des donnĂ©es.
    Possible implĂ©mentation : prĂ©voyez une fonctionnalitĂ© permettant d’afficher toutes les donnĂ©es relatives Ă  une personne. S’il y a beaucoup de donnĂ©es, vous pouvez scinder ses donnĂ©es en plusieurs affichages. Si les donnĂ©es sont trop volumineuses, proposez Ă  la personne de tĂ©lĂ©charger une archive contenant toutes ses donnĂ©es.

  • Droit Ă  l’effacement : les personnes ont le droit de demander l’effacement de l’intĂ©gralitĂ© des donnĂ©es que vous dĂ©tenez sur elles.
    Possibles implĂ©mentations :
    1. PrĂ©voyez une fonctionnalitĂ© permettant d’effacer toutes les donnĂ©es relatives Ă  une personne.

    2. PrĂ©voyez aussi une notification automatique des sous-traitants afin qu’ils effacent eux aussi les donnĂ©es relatives Ă  cette personne.

    3. Prévoyez un effacement des données également dans les sauvegardes, ou une autre solution permettant de ne pas restaurer les données effacées relatives à cette personne.

  • Droit d’opposition : les personnes ont le droit de s’opposer dans certains cas Ă  ce que leurs donnĂ©es soient utilisĂ©es pour un objectif prĂ©cis.
    Possible implĂ©mentation : prĂ©voyez une fonctionnalitĂ© permettant Ă  la personne concernĂ©e de s’opposer au traitement. Lorsque la personne exerce son droit d’opposition par ce biais, le responsable de traitement doit supprimer les donnĂ©es dĂ©jĂ  collectĂ©es, et ne doit par la suite plus collecter de donnĂ©es associĂ©es Ă  cette personne.

  • Droit Ă  la portabilitĂ© : les personnes ont le droit de rĂ©cupĂ©rer leurs donnĂ©es dans un format lisible par machine, pour leur propre usage ou pour les fournir Ă  un autre organisme.
    Possible implĂ©mentation : prĂ©voyez une fonctionnalitĂ© permettant Ă  la personne concernĂ©e de tĂ©lĂ©charger ses donnĂ©es dans un format standard lisible par un ordinateur (CSV, XML, JSON, etc.)

  • Droit Ă  la rectification : Les personnes ont le droit de demander la modification de leurs donnĂ©es lorsque celles-ci sont incorrectes afin de limiter l’utilisation ou la diffusion d’informations erronĂ©es.
    Possible implĂ©mentation : permettez de pouvoir modifier directement les donnĂ©es dans le compte utilisateur.

  • Droit Ă  la limitation du traitement : les personnes ont le droit de demander Ă  ce que le traitement de leurs donnĂ©es soit bloquĂ© pendant un certain temps, par exemple le temps d’examiner une contestation de sa part sur l’utilisation de ses donnĂ©es ou une demande d’exercice de droits.
    Possible implĂ©mentation : permettez Ă  des administrateurs de mettre des donnĂ©es relatives Ă  une personne en « quarantaine Â» : ces donnĂ©es ne pourront alors plus ĂȘtre lues ou modifiĂ©es.

En conclusion

  • Le site DonnĂ©es & Design dĂ©veloppĂ© par le Laboratoire d’Innovation NumĂ©rique de la CNIL (LINC).

  • Enfin, soyez inventifs ! (En cas de doute, demandez conseil Ă  la CNIL.)

Fiche n°14 : GĂ©rer la durĂ©e de conservation des donnĂ©es

Les donnĂ©es personnelles ne peuvent pas ĂȘtre conservĂ©es pour une durĂ©e indĂ©finie : celle-ci doit ĂȘtre dĂ©finie en fonction des objectifs poursuivis par le traitement. Une fois cet objectif atteint, ces donnĂ©es devraient ĂȘtre archivĂ©es, supprimĂ©es ou anonymisĂ©es (par exemple afin de produire des statistiques).

Les cycles de conservation des données

  • Le cycle de conservation des donnĂ©es Ă  caractĂšre personnel peut ĂȘtre divisĂ© en trois phases successives distinctes :

    • la base active ;

    • l’archivage intermĂ©diaire ;

    • l’archivage dĂ©finitif ou la suppression.

  • Les mĂ©canismes de suppression de donnĂ©es personnelles des bases actives permettent de garantir que les donnĂ©es sont conservĂ©es et accessibles par les services opĂ©rationnels uniquement le temps nĂ©cessaire Ă  l’accomplissement de l’objectif poursuivi par le traitement.

  • Veillez Ă  ne pas conserver les donnĂ©es en base active en les notant simplement comme Ă©tant archivĂ©es. Les donnĂ©es archivĂ©es (archive intermĂ©diaire) ne doivent ĂȘtre accessibles qu’à un service spĂ©cifique chargĂ© d’y accĂ©der et de les sortir des archives le cas Ă©chĂ©ant.

  • Veillez Ă©galement Ă  prĂ©voir des modalitĂ©s d’accĂšs spĂ©cifiques aux donnĂ©es archivĂ©es du fait que l’utilisation d’une archive doit intervenir de maniĂšre ponctuelle et exceptionnelle.

  • Si possible, utilisez la mĂȘme implĂ©mentation lors de la mise en Ɠuvre de la purge ou l’anonymisation des donnĂ©es que celle gĂ©rant le droit Ă  l’effacement (cf. fiche sur l’exercice des droits), afin de garantir un fonctionnement homogĂšne de votre systĂšme.

Quelques exemples de durée de conservation

  • Les donnĂ©es relatives Ă  la gestion de la paie ou au contrĂŽle des horaires des salariĂ©s peuvent ĂȘtre conservĂ©es pendant 5 ans.

  • Les donnĂ©es figurant dans un dossier mĂ©dical doivent ĂȘtre conservĂ©es 20 ans.

  • Les coordonnĂ©es d’un prospect ne rĂ©pondant Ă  aucune sollicitation peuvent ĂȘtre conservĂ©es pendant 3 ans.

  • Les donnĂ©es de journalisation peuvent ĂȘtre conservĂ©es entre 6 mois et un an. Cette durĂ©e peut ĂȘtre allongĂ©e dans des cas spĂ©cifiques, lorsque la loi l'impose sur certaines catĂ©gories de traitements et suivant le risque de dĂ©tournement de la finalitĂ© de l’utilisation des donnĂ©es.

Fiche n°15 : Prendre en compte les bases lĂ©gales dans l’implĂ©mentation technique

Pour pouvoir ĂȘtre mis en Ɠuvre, les traitements de donnĂ©es personnelles doivent se fonder sur l’une des « bases lĂ©gales Â» mentionnĂ©es Ă  l’article 6 du RGPD. La base lĂ©gale d’un traitement est en quelque sorte la justification de l’existence mĂȘme du traitement. Le choix d’une base lĂ©gale va directement impacter les conditions de mise en Ɠuvre du traitement et les droits des personnes. Ainsi, prĂ©voir en amont d’un dĂ©veloppement les bases lĂ©gales des traitements prĂ©vus dans le projet vous permettra d’intĂ©grer au mieux les fonctions nĂ©cessaires Ă  la conformitĂ© Ă  la loi de ces traitements et au respect des droits des personnes.

Définition des bases légales prévues par le RGPD

  • Dans le cadre d’un dĂ©veloppement pour un organisme privĂ© (entreprises, associations, etc.), les bases lĂ©gales les plus souvent utilisĂ©es sont :

    • le contrat : le traitement est nĂ©cessaire Ă  l’exĂ©cution ou Ă  la prĂ©paration d’un contrat entre la personne concernĂ©e et l’organisme mettant en place le traitement ;

    • l’intĂ©rĂȘt lĂ©gitime : l’organisme mettant en place le traitement poursuit un intĂ©rĂȘt "lĂ©gitime" Ă  mettre en place le traitement et celui-ci n’est pas susceptible d’affecter les droits et libertĂ©s des personnes concernĂ©es ;

    • le consentement : la personne concernĂ©e a explicitement consenti au traitement.

  • Si vous ĂȘtes une autoritĂ© publique ou un organisme poursuivant des missions d’intĂ©rĂȘt public, d’autres bases lĂ©gales peuvent Ă©galement ĂȘtre utilisĂ©es :

    • l’obligation lĂ©gale : le traitement est imposĂ© par des textes rĂ©glementaires;

    • la mission d’intĂ©rĂȘt public : le traitement est nĂ©cessaire Ă  l’exĂ©cution d’une mission d’intĂ©rĂȘt public.

  • Vous trouverez sur le site de la CNIL un ensemble de fiches pratiques qui vous permettra de vous accompagner dans le choix des bases lĂ©gales les plus adaptĂ©es Ă  vos traitements.

  • Enfin, dans des cas trĂšs spĂ©cifiques, la sauvegarde des intĂ©rĂȘts vitaux peut ĂȘtre retenue comme base lĂ©gale, par exemple lorsque le traitement est nĂ©cessaire pour suivre la propagation d’épidĂ©mies ou dans les cas d’urgence humanitaire.

  • Dans un premier temps, vĂ©rifiez sur le site de la CNIL qu’un texte n’impose pas des contraintes particuliĂšres (par exemple : prospection commerciale par voie Ă©lectronique, certains cookies et autres traceurs, etc.).

Choisir la base légale adéquate

  • Une seule base lĂ©gale doit ĂȘtre choisie pour une finalitĂ© donnĂ©e. Les bases lĂ©gales ne peuvent ĂȘtre cumulĂ©es pour une mĂȘme finalitĂ©. Un mĂȘme traitement de donnĂ©es peut poursuivre plusieurs finalitĂ©s, c’est-Ă -dire plusieurs objectifs, et une base lĂ©gale devra alors ĂȘtre dĂ©finie pour chacune d’elles.

  • Comme Ă©voquĂ© ci-dessus, si vous ĂȘtes un organisme public, l’obligation lĂ©gale et la mission d’intĂ©rĂȘt public seront les plus pertinentes dans la majoritĂ© des cas.

  • Si votre traitement s’inscrit dans une relation contractuelle et que sa finalitĂ© est objectivement et strictement nĂ©cessaire Ă  la fourniture du service de l’utilisateur (par exemple, le nom, le prĂ©nom et l’adresse pour crĂ©er un compte sur un site de e-commerce) alors la base lĂ©gale du contrat devrait ĂȘtre appropriĂ©e.

  • Si votre traitement ne s’inscrit pas dans une relation contractuelle avec l’utilisateur, alors les bases lĂ©gales du consentement ou de l’intĂ©rĂȘt lĂ©gitime peuvent ĂȘtre mobilisĂ©es. Si votre traitement est potentiellement intrusif (profilage, collecte de donnĂ©es de gĂ©olocalisation, etc.), le consentement est susceptible d’ĂȘtre la base lĂ©gale appropriĂ©e.

  • Lorsque votre traitement contient des donnĂ©es sensibles (donnĂ©es de santĂ©, donnĂ©es relatives Ă  la vie ou Ă  l’orientation sexuelle, etc.), alors vous devrez identifier, en plus de la base lĂ©gale, une exception prĂ©vue par l’article 9 du RGPD.

Les exercices des droits et les modalitĂ©s d’information Ă  prĂ©voir suivant la base lĂ©gale

  • Les bases lĂ©gales utilisĂ©es doivent toujours figurer dans les informations transmises Ă  la personne.

  • Il est recommandĂ© de documenter le choix de vos bases lĂ©gales. Ces choix peuvent par exemple ĂȘtre indiquĂ©s dans une cartographie des traitements ou associĂ©s Ă  votre documentation technique.

  • Le tableau suivant rĂ©capitule les exercices des droits Ă  prĂ©voir suivant les bases lĂ©gales choisies :

Droit d’accĂšs Droit de rectification Droit Ă  l’effacement Droit Ă  la limitation du traitement Droit Ă  la portabilitĂ© Droit d’opposition
Consentement ✔ ✔ ✔ ✔ ✔ retrait du consentement
Contrat ✔ ✔ ✔ ✔ ✔ ✘
IntĂ©rĂȘt lĂ©gitime * ✔ ✔ ✔ ✔ ✘ ✔
Obligation lĂ©gale ✔ ✔ ✔** ✔ ✘ ✘
IntĂ©rĂȘt public ✔ ✔ ✘ ✔ ✘ ✔
IntĂ©rĂȘts vitaux ✔ ✔ ✔ ✔ ✘ ✘

* Lorsque votre traitement est fondĂ© sur l’intĂ©rĂȘt lĂ©gitime, vous devrez Ă©galement indiquer les intĂ©rĂȘts lĂ©gitimes poursuivis (lutte contre la fraude, sĂ©curitĂ© du systĂšme, etc.)

** Lorsque votre traitement est fondĂ© sur l’obligation lĂ©gale, le droit Ă  l’effacement peut s’appliquer si le traitement rĂ©pond aux conditions suivantes :

  1. les données à caractÚre personnel ne sont plus nécessaires au regard des finalités pour lesquelles elles ont été collectées ou traitées d'une autre maniÚre; ou

  2. les données à caractÚre personnel ont fait l'objet d'un traitement illicite; ou

  3. les donnĂ©es Ă  caractĂšre personnel doivent ĂȘtre effacĂ©es pour respecter une obligation lĂ©gale qui est prĂ©vue par le droit de l'Union ou par le droit de l'État membre auquel le responsable du traitement est soumis.

Fiche n°16 : Analyser les pratiques en matiĂšre de traceurs sur vos sites et vos applications

La directive europĂ©enne ePrivacy requiert le consentement de l’utilisateur avant toute action visant Ă  stocker des informations - via des cookies, identifiants ou autres traceurs (empreintes logiciels, pixels) - ou Ă  accĂ©der Ă  des informations stockĂ©es dans l’équipement terminal de l’utilisateur. Afin de se conformer Ă  ses obligations, tout Ă©diteur de site ou d'application doit analyser ses pratiques en terme d'usage des traceurs selon les principes prĂ©sentĂ©s ci-aprĂšs.

Les traceurs visés par l'obligation du recueil du consentement préalablement à leur usage

  • Cette obligation s’applique Ă  toutes les solutions techniques reposant sur des opĂ©rations de lecture ou Ă©criture dans le terminal et dĂ©signĂ©es par la CNIL sous le terme de « traceur ». Elles s'appliquent notamment aux cookies, mais aussi aux « local shared objects » appelĂ©s parfois les « cookies Flash », le « local storage » mis en Ɠuvre au sein du standard HTML 5, les identifications par calcul d’empreinte du terminal ou « fingerprinting », les identifiants gĂ©nĂ©rĂ©s par les systĂšmes d’exploitation (qu’ils soient publicitaires ou non : IDFA, IDFV, Android ID, etc.) ou les navigateurs (identifiants de cohorte,etc.), les identifiants matĂ©riels (adresse MAC, numĂ©ro de sĂ©rie ou tout autre identifiant d’un appareil), etc.

  • La CNIL a identifiĂ© cinq catĂ©gories de finalitĂ© qui nĂ©cessitent obligatoirement un consentement prĂ©alable de l'utilisateur avant leur dĂ©pĂŽt:
    • la publicitĂ© personnalisĂ©e ;
    • la mesure de la publicitĂ© (non ciblĂ©e) ;
    • la publicitĂ© geolocalisĂ©e ;
    • la personnalisation du contenu (Ă©ditorial ou en termes de produits) ;
    • le partage sur les rĂ©seaux sociaux.

Les traceurs qui ne sont pas visés par ces obligations

  • Certains traceurs peuvent ĂȘtre exemptĂ©s du recueil de consentement : les traceurs destinĂ©s Ă  l’authentification auprĂšs d’un service, ceux destinĂ©s Ă  garder en mĂ©moire le contenu d’un panier d’achat sur un site marchand, certains traceurs visant Ă  gĂ©nĂ©rer des statistiques de frĂ©quentation, ou encore ceux permettant aux sites payants de limiter l’accĂšs gratuit Ă  un Ă©chantillon de contenu demandĂ© par les utilisateurs.

  • Le fait d'utiliser un seul traceur pour de multiples finalitĂ©s n’exonĂšre pas de recueillir le consentement pour chacune des finalitĂ©s qui le nĂ©cessite. Par exemple, si un cookie d’authentification est Ă©galement utilisĂ© Ă  des fins de ciblage publicitaire, le consentement de l’internaute devra ĂȘtre recueilli pour cette derniĂšre finalitĂ©, de la mĂȘme maniĂšre que pour un site non « logguĂ© ».

  • Sous certaines conditions, les cookies relatifs Ă  la mesure d'audience peuvent ĂȘtre exemptĂ© du recueil de consentement. La CNIL a mis en place un programme permettant de connaĂźtre les configurations Ă  suivre pour diffĂ©rents outils.

  • Qu'ils soient exemptĂ©s ou non du recueil de consentement, les traitements mis en Ɠuvre avec les informations collectĂ©es grĂące Ă  ces cookies doivent ĂȘtre intĂ©gralement conformes au RGPD. Ils doivent notamment disposer d'une base lĂ©gale adĂ©quate, d'une information et des droits associĂ©s. La fiche Prendre en compte les bases lĂ©gales dans l’implĂ©mentation technique vous accompagnera dans la bonne mise en oeuvre de ces traitements.

  • Le chargement de ressources statiques sans traceurs, c'est-Ă -dire les images, les scripts et les feuilles de styles, n’est pas considĂ©rĂ© en tant que tel comme un accĂšs ou une inscription de donnĂ©es dans le terminal d’utilisateur au sens de ePrivacy, et n’est pas soumis Ă  des obligations spĂ©cifiques Ă  ce titre.

En pratique

  • Si vous utilisez des traceurs visĂ©es par ces obligations, il vous faut suivre les Ă©tapes suivantes :

    1- Lister les traceurs utilisés (tous les types de traceurs) et les classer par finalité en fonction des catégories identifiées.

    2- Lister les tiers qui déposent ces traceurs.

    3- Mettre en place un blocage des scripts ou appels HTTP dĂ©posant et accĂ©dant aux traceurs nĂ©cessitant le consentement afin de s'assurer de l'absence d'opĂ©ration avant tout consentement ou bien mettre en place une solution technique permettant de garantir l’absence d’opĂ©ration de lecture ou Ă©criture tant que l’utilisateur n’a pas consenti..

    4- Mettre en place une interface qui propose à l'utilisateur de consentir au dépÎt de ces traceurs.

    5- Sur chaque page, intégrer une icÎne ou lien pour faire réapparaitre l'interface afin de permettre le retrait du consentement.

    6- RéguliÚrement, tester votre site ou votre application pour bien s'assurer qu'aucun traceur non nécessaire n'est déposé sans consentement et documentez votre conformité.

  • Les finalitĂ©s choisies doivent ĂȘtre formulĂ©es de maniĂšre intelligible et dans un langage adaptĂ© et suffisamment clair pour permettre aux utilisateurs de comprendre prĂ©cisĂ©ment ce Ă  quoi ils consentent.

  • Il est fortement recommandĂ© de hiĂ©rarchiser les informations dĂ©livrĂ©es Ă  l'utilisateur sur plusieurs niveaux pour plus de clartĂ©.

  • Le premier niveau de l'interface doit comprendre :
    • une liste des finalitĂ©s poursuivies,
    • un lien vers la liste les tiers,
    • une explication des consĂ©quences qui s'attachent Ă  une acceptation ou un refus,
    • un bouton pour accepter et refuser (refuser les traceurs devant ĂȘtre aussi aisĂ© que de les accepter).

👁 Exemple de banniĂšre cookie dĂ©taillant l'utilisation faite par le site web, la durĂ©e de consevation et le partage Ă  des tiers. Trois boutons : Personnaliser mes choix, Tout refuser, Tout accepter

Fiche n°17 : Mesurer la frĂ©quentation de vos sites web et de vos applications

La gestion d’un site web ou d’une application mobile requiert gĂ©nĂ©ralement l’utilisation de statistiques de frĂ©quentation ou de performance. Utilisant des cookies ou d’autres traceurs, ils peuvent ĂȘtre exemptĂ©s de consentement sous certaines conditions.

BĂ©nĂ©ficier de l’exemption de consentement

  • Pour bĂ©nĂ©ficier de l'exemption de consentement sur les traceurs de mesure d’audience, et afin de limiter Ă  ce qui est strictement nĂ©cessaire Ă  la fourniture du service, la CNIL demande de respecter les conditions suivantes :

    • avoir une finalitĂ© strictement limitĂ©e Ă  la seule mesure de l’audience du site ou de l’application (mesure des performances, dĂ©tection de problĂšmes de navigation, optimisation des performances techniques ou de son ergonomie, estimation de la puissance des serveurs nĂ©cessaires, analyse des contenus consultĂ©), pour le compte exclusif de l’éditeur ;

    • ne pas permettre le suivi global de la navigation de la personne sur diffĂ©rents sites web ou applications. Toute solution utilisant un mĂȘme identifiant Ă  travers plusieurs sites (via par exemple des cookies dĂ©posĂ©s sur un domaine tiers chargĂ© par plusieurs sites) ou applications pour croiser, dĂ©doubler ou mesurer un taux de couverture (« reach ») unifiĂ© d’un contenu est exclue du bĂ©nĂ©fice de l’exemption ;

    • servir uniquement Ă  produire des donnĂ©es statistiques anonymes ;

    • ne pas conduire Ă  un recoupement des donnĂ©es avec d’autres traitements ou Ă  ce que les donnĂ©es soient transmises Ă  des tiers.

  • La CNIL recommande par ailleurs que :

    • les utilisateurs soient informĂ©s de la mise en Ɠuvre de ces traceurs et puissent s'opposer Ă  ce dĂ©pĂŽt, par exemple via la politique de confidentialitĂ© du site ou de l’application mobile ;

    • la durĂ©e de vie des traceurs soit limitĂ©e Ă  une durĂ©e permettant une comparaison pertinente des audiences dans le temps, comme c’est le cas d’une durĂ©e de treize mois, et qu’elle ne soit pas prorogĂ©e automatiquement lors des nouvelles visites ;

    • les informations collectĂ©es par l'intermĂ©diaire de ces traceurs soient conservĂ©es pour une durĂ©e maximale de vingt-cinq mois ;

    • les durĂ©es de vie et de conservation ci-dessus mentionnĂ©es fassent l’objet d’un rĂ©examen pĂ©riodique afin d’ĂȘtre limitĂ©es au strict nĂ©cessaire.

  • Il est par ailleurs possible pour un sous-traitant de fournir un service de mesure d’audience comparatif Ă  de multiples Ă©diteurs, sous rĂ©serve que les donnĂ©es soient collectĂ©es, traitĂ©es et stockĂ©es de maniĂšre indĂ©pendante pour chaque Ă©diteur et que les traceurs soient indĂ©pendants les uns des autres.

En pratique

  • Les offres de mesure d’audience n’entrent pas dans le pĂ©rimĂštre de l’exemption notamment lorsque les fournisseurs indiquent rĂ©utiliser les donnĂ©es pour leur propre compte. C’est le cas notamment de plusieurs grandes offres de mesure d’audience disponibles sur le marchĂ© (voir notamment les politiques de confidentialitĂ© de Google Analytics, de Quantcast Analytics ou encore de Facebook Analytics). Dans certains cas il peut ĂȘtre possible de configurer ces outils pour dĂ©sactiver la rĂ©utilisation des donnĂ©es, vĂ©rifiez auprĂšs du fournisseur de votre outil qu’il s’engage contractuellement Ă  ne pas rĂ©utiliser les donnĂ©es collectĂ©es. Soyez Ă©galement attentifs aux Ă©ventuels transferts de donnĂ©es hors de l’Union EuropĂ©enne qui pourraient ĂȘtre rĂ©alisĂ©s par votre fournisseur de solution.

  • La CNIL liste sur son site un ensemble de solutions identifiĂ©es comme pouvant ĂȘtre configurĂ©es pour rentrer dans le pĂ©rimĂštre de l’exemption au recueil de consentement. Ces solutions sont systĂ©matiquement accompagnĂ©es d'un guide afin de permettre la bonne configuration par les Ă©diteurs de site souhaitant les utiliser. Il n’est bien sĂ»r pas exclu que d’autres solutions puissent respecter le critĂšre de stricte nĂ©cessitĂ© au bon fonctionnement et aux opĂ©rations d’administration courante du site web ou de l’application, mais c’est alors Ă  l'Ă©diteur de documenter son analyse.

Fiche n°18 : Se prĂ©munir contre les attaques informatiques

La destruction, la perte, l'altĂ©ration, ou la divulgation non autorisĂ©e de donnĂ©es Ă  caractĂšre personnel transmises, conservĂ©es ou traitĂ©es par un organisme constituent une violation de donnĂ©es personnelles. En tant que dĂ©veloppeuse ou dĂ©veloppeur, vous ĂȘtes tenu‱e‱s de mettre en Ɠuvre toutes les mesures nĂ©cessaires dans vos applications pour prĂ©venir les attaques ou les nĂ©gligences pouvant entrainer de telles violations.

Cette fiche dresse une liste non-exhaustive de vulnérabilités ayant conduit à des violations de données notifiées à la CNIL. Elle liste des exemples de mesures qui auraient permis de les éviter.

Manipulation d'URL

  • La manipulation d’URL consiste Ă  modifier les Ă©lĂ©ments d’une URL dans le navigateur en vue d’accĂ©der Ă  une ressource non ou mal sĂ©curisĂ©e et auquel l’internaute ne devrait normalement pas avoir accĂšs (page web, document accessible en ligne
).

  • DiffĂ©rents modes opĂ©ratoires existent :

    • modification d’un ou de plusieurs paramĂštres apparaissant dans l’URL. Elle est facilitĂ©e lorsque les paramĂštres permettant d’accĂ©der Ă  une ressource sont numĂ©riques ou alphanumĂ©riques et consĂ©cutifs (suite de chiffres ou de lettres), on parle alors « d’URL incrĂ©mentale » ;

    • test des noms de rĂ©pertoires (/phpmyadmin/, /admin, /.git) ou de fichiers (.bak) connus dans les configurations par dĂ©faut, voire dans les informations provenant du fichier robots.txt ;

    • test du chemin de l’arborescence affichĂ©e dans l’URL (« path traversal ») en remontant celui-ci en vue d’obtenir du serveur un accĂšs Ă  des rĂ©pertoires non protĂ©gĂ©s du site.

  • Des mesures permettent de limiter ce risque :

    • vĂ©rifier que l’émetteur de cette requĂȘte est autorisĂ© Ă  accĂ©der Ă  la ressource associĂ©e ;

    • valider et vĂ©rifier la bonne construction des paramĂštres reçus en entrĂ©e au sein de l’URL (cotĂ© serveur) ;

    • utiliser des identifiants de ressource qui ne soient ni uniquement numĂ©riques, ni consĂ©cutifs, et ayant une construction alĂ©atoire, impossible Ă  dĂ©couvrir pour les attaquants ;

    • rendre le « path traversal » inopĂ©rant par la mise en place d’un mĂ©canisme de « chroot », la restriction de l’utilisation des caractĂšres utilisĂ©s par les attaquants tels que « ../ », dĂ©sactiver la fonction de « directory browsing », neutraliser les messages d'erreur en affichant un message gĂ©nĂ©rique de type « erreur 404" » ;

Ressources :

Bourrage d’identifiants (“Credential stuffing”)

  • Le bourrage d’identifiants (“credential stuffing”) consiste Ă  rĂ©aliser des tentatives d’authentification massives sur des sites et services web Ă  partir de couples identifiants/mots de passe. Il est le plus souvent la consĂ©quence de violations de donnĂ©es ayant prĂ©alablement affectĂ© d’autres sites web, par le biais desquelles des listes de couples d’identifiants/mots de passe sont alors disponibles en trĂšs grande quantitĂ© au sein du web cachĂ© (« dark web »).

  • Il est rendu possible par la rĂ©utilisation par les utilisateurs de couples d'identifiants/mots de passe communs pour des services en ligne diffĂ©rents, et permet aux attaquants de prendre le contrĂŽle de comptes utilisateurs parfois sensibles (emails, banque, rĂ©seaux sociaux)

  • Des mesures permettent de limiter ce risque :

    • sensibiliser rĂ©guliĂšrement les utilisateurs aux risques d’utiliser un mĂȘme mot de passe pour plusieurs comptes ;

    • proposer un mĂ©canisme de double authentification ;

    • limiter la capacitĂ© des robots Ă  multiplier les requĂȘtes, en utilisant un captcha, en limitant la frĂ©quence des requĂȘtes par IP et autre mesures adĂ©quates ;

    • prĂ©venir les utilisateurs par courriel en cas de connexion Ă  leur compte Ă  partir d’un nouvel appareil. Pour les traitements les plus sensibles, une notification pourra ĂȘtre envoyĂ©e Ă  l’utilisateur Ă  chaque connexion.

Ressources :

Attaques par force brute et par dictionnaire

  • L’attaque par force brute (bruteforce attack) consiste Ă  tester, l’une aprĂšs l’autre, les combinaisons possibles d’un mot de passe ou d’une clĂ© associĂ© Ă  un utilisateur sur un service en ligne, sur un fichier protĂ©gĂ©. L’attaque par dictionnaire optimise cette recherche en utilisant des dictionnaires thĂ©matiques (par exemple, le dictionnaire des mots de passe les plus courants). Elle repose ainsi sur le postulat que les personnes utilisent majoritairement des mots de passe des mots ayant une signification (par exemple : un prĂ©nom, une couleur, un lieu).

  • Des mesures permettent de limiter ce risque :

    • forcer l'utilisateur Ă  utiliser des mots de passe conformes aux recommandations en vigueur et empĂȘcher l’utilisation de donnĂ©es frĂ©quentes (noms, prĂ©noms et dates de naissance) et les mots de passes les plus courants (password, 12345678,
) ;

    • limiter le nombre de tentatives successives sur une pĂ©riode de temps donnĂ©es et bloquer l'accĂšs aprĂšs un trop grand nombre d’essais infructueux ;

    • inviter voire contraindre l'utilisateur Ă  utiliser une authentification multi-facteurs (OTP, clĂ© USB, carte Ă  puce,
) suivant la sensibilitĂ© des donnĂ©es accĂ©dĂ©es ;

    • prĂ©venir les utilisateurs par courriel en cas de en cas de connexion Ă  leur compte Ă  partir d’un nouvel appareil. Pour les traitements les plus sensibles, une notification pourra ĂȘtre envoyĂ©e Ă  l’utilisateur Ă  chaque connexion ;

    • afficher la date et l’heure de la derniĂšre connexion sur l’interface de l’utilisateur.

Ressources :

Injection de code indirecte (“Cross-Site Scripting”/XSS)

  • Les attaques par « injection de code indirecte » (de l'anglais Cross-Site Scripting, abrĂ©gĂ© XSS) consistent Ă  insĂ©rer un contenu malveillant dans une page d'un serveur de confiance afin qu’il soit affichĂ© sur le navigateur de la victime.

  • Ces injections peuvent permettrent l’exĂ©cution de scripts malveillants sur le navigateur de l'internaute. Elle peuvent notamment donner lieu : Ă  l’affichage d’une fausse fenĂȘtre d’authentification afin de dĂ©rober les identifiants et le mot de passe de l’utilisateur, Ă  l’exĂ©cution de commandes systĂšme, Ă  la redirection vers un site malveillant, Ă  la rĂ©cupĂ©ration des cookies prĂ©sents sur la machine (ex : cookie d’authentification), au tĂ©lĂ©chargement de programmes malveillants ou encore Ă  l’enregistrement des frappes clavier (key logging), etc.

  • Ces injections peuvent prendre plusieurs formes :

    • le contenu malveillant peut ĂȘtre injectĂ© directement sur le site par l'attaquant, par exemple dans ses champs de commentaires ;

    • le contenu malveillant peut ĂȘtre inclus dans les paramĂštres des requĂȘtes envoyĂ©es aux serveurs afin d'exploiter ses vulnĂ©rabilitĂ©s, par exemple pour obtenir un accĂšs complet Ă  sa base de donnĂ©es ;

    • le contenu malveillant peut ĂȘtre injectĂ© dans les paramĂštres d'une URL et affichĂ© sur le navigateur de l’utilisateur comme un contenu "lĂ©gitime" du site.

  • Des mesures permettent de limiter ces risques :

    • mettre Ă  jour les composants logiciels rĂ©guliĂšrement ;

    • diligenter des audits de sĂ©curitĂ© (tests de pĂ©nĂ©tration) de façon pĂ©riodique et aprĂšs chaque mise Ă  jour significative ;

    • neutraliser les caractĂšres utilisĂ©s pour l’insertion de script (> < /) lorsque c’est possible (cf. nettoyage « HTML escape ») ;

    • vĂ©rifier les Ă©lĂ©ments rĂ©cupĂ©rĂ©s en paramĂštre et rejeter tous ceux qui ne sont pas attendus par l’application ;

    • vĂ©rifier que les tĂ©lĂ©versements (upload) lĂ©gitimes (photos de profil, par exemple) sur le serveur soient au format attendu et placĂ©s dans un rĂ©pertoire ne permettant pas leur exĂ©cution ;

    • exĂ©cuter des outils automatisĂ©s de dĂ©tection de failles et de flux « anormaux » (prĂ©sence de scripts dans les journaux et requĂȘtes serveurs).

Ressources :

Injection SQL (SQLi)

  • L’injection SQL est une technique permettant d’injecter du code de type SQL (langage utilisĂ© pour manipuler certaines bases de donnĂ©es) dans les donnĂ©es envoyĂ©es au serveur web au lieu de donnĂ©es valides. Par exemple, un attaquant peut injecter du code SQL dans les champs des formulaires HTML ou dans les URL des pages web.

  • De cette façon, les attaquants outrepassent les contrĂŽles de sĂ©curitĂ© et peuvent consulter ou modifier des Ă©lĂ©ments prĂ©sents dans une base de donnĂ©es. D'autres types d'injection de code sont Ă©galement possibles (par exemple : les injections LDAP, si le serveur web contacte un annuaire via une requĂȘte LDAP, ou du code bash si le serveur appelle une commande externe en passant les paramĂštres Ă  un shell).

  • Des mesures permettent de limiter ce risque :

    • utiliser des requĂȘtes prĂ©parĂ©es (Prepared Statements) exclusivement, lorsque cela est possible ;

    • Ă©chapper les caractĂšres susceptibles de provoquer une injection, en utilisant des fonctions spĂ©cialisĂ©es ;

    • restreindre et contrĂŽler les entrĂ©es externes autant que possible. Par exemple, si l’identifiant est un chiffre, n’accepter que des chiffres ;

    • vĂ©rifier les donnĂ©es externes (notamment lorsqu’il est impossible de les restreindre ou lorsque certains caractĂšres spĂ©ciaux utilisĂ©s en SQL sont des donnĂ©es acceptables en entrĂ©e) ;

    • mettre en Ɠuvre une gestion fine des droits d’accĂšs Ă  la base de donnĂ©es. Par exemple, il est inutile d’accorder un accĂšs total en lecture et Ă©criture Ă  un service qui ne fait que lire des donnĂ©es. Il est Ă©galement possible de restreindre les droits de l'utilisateur Ă  une seule table ou une seule base de donnĂ©es ;

    • neutraliser les messages d’erreur afin d’éviter la divulgation d’informations techniques recherchĂ©es par les attaquants (en affichant un message de type « erreur 403 », par exemple).

Ressources :

Les programmes malveillants et les rançongiciels

  • Un malware, ou logiciel malveillant, est un terme gĂ©nĂ©rique utilisĂ© pour caractĂ©riser tout type de logiciel ayant pour but de nuire Ă  un systĂšme informatique et le plus souvent Ă  voler, modifier ou supprimer les donnĂ©es qui s’y trouvent. Parmi les programmes malveillants connus figurent notamment les chevaux de Troie (Trojan horse), les virus, les vers et les « espiogiciels » (spyware). Les programmes malveillants les plus frĂ©quents ces derniĂšres annĂ©es sont les rançongiciels (“ransomware” ou “cryptolocker”).

  • Ainsi, tout tĂ©lĂ©chargement ne provenant pas d’une source fiable est potentiellement un programme malveillant. Dans la majoritĂ© des cas, il est tĂ©lĂ©chargĂ© en :

    • ouvrant la piĂšce jointe d’un email provenant d’une source inconnue ;

    • ou en tĂ©lĂ©chargeant un logiciel mis Ă  disposition sur un site inconnu (ou n’étant pas de confiance) ;

    • ou en tĂ©lĂ©chargeant des logiciels associĂ©s Ă  un logiciel connu ou provenant d’une source non fiable ;

    • ou en visitant un site web malveillant.

  • Le rançongiciel (ransomware, cryptolocker) se transmet souvent via une piĂšce jointe de courriel ou via des liens permettant le tĂ©lĂ©chargement de logiciels ou de contenus. Une fois prĂ©sent sur son hĂŽte, ce programme va progressivement chiffrer tous les fichiers qui lui sont accessibles afin de les rendre illisibles par les utilisateurs. Dans le cas d’un rĂ©seau d’entreprise, le logiciel va chercher Ă  se propager sur les ressources accessibles via le rĂ©seau en utilisant des failles connues, des mots de passe faibles ou rĂ©utilisĂ©s. L’attaquant demande alors une rançon Ă  la personne ou Ă  l’organisme victime en Ă©change de la clĂ© permettant de dĂ©chiffrer les fichiers.

  • Le rançongiciel est un malware trĂšs rĂ©pandu car trĂšs rentable pour les attaquants. En effet, celui-ci exige une rançon rapide et le plus souvent en cryptomonnaie. Si ce type d’attaque est parfois opportuniste, pour des rançons correspondant gĂ©nĂ©ralement Ă  quelques centaines d’Euros, certains attaquants ciblent Ă©galement depuis plusieurs annĂ©es des entitĂ©s de tailles importantes (grandes entreprises, collectivitĂ©s, etc.) pour des montants pouvant atteindre plusieurs dizaines de millions d’Euros.

  • Les mesures Ă  mettre en Ɠuvre afin de rĂ©duire le risque d’attaque sont surtout d’ordre organisationnel :

    • maintenir Ă  jour ses systĂšmes et logiciels (antivirus, Ă©quipements pare-feu, etc.) ;

    • faire des sauvegardes rĂ©guliĂšres des donnĂ©es, les tester rĂ©guliĂšrement et en conserver au moins une copie hors du rĂ©seau de l’organisme ;

    • sensibiliser les utilisateurs aux risques et aux bonnes pratiques : ne pas ouvrir les piĂšces jointes, ni cliquer sur les liens prĂ©sents dans les courriels dont la provenance n’est pas fiable (surtout lorsque les piĂšces jointes ont une extension suspecte), ne pas installer d’application ou de programme dont l’origine n’est pas de confiance, Ă©viter les sites non sĂ»rs ou illicites ;

    • ne pas utiliser de compte ayant des droits « administrateur » pour l’usage quotidien (le recours aux droits « administrateur » doit ĂȘtre limitĂ© aux seules actions le nĂ©cessitant) ;

    • ne pas installer de logiciels piratĂ©s ou issus de sources non fiables ;

    • cloisonner son rĂ©seau interne, notamment au moyen de VLAN afin de limiter la propagation de l’attaquant, le cas Ă©chĂ©ant ;

    • utiliser un proxy web permettant de bloquer les sites pouvant diffuser de tels logiciels.

Ressources :