đ 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
Prendre en compte les bases lĂ©gales dans lâimplĂ©mentation technique
Analyser les pratiques en matiĂšre de traceurs sur vos sites et vos applications
Mesurer la fréquentation de vos sites web et de vos applications
Comment contribuer Ă ce guide ?
Ce guide est disponible en deux versions :
- Une version web sur le site de la CNIL, et un export PDF dans l'onglet "Releases" de ce repository ;
- Cette version GitHub, qui offre la possibilitĂ© Ă tous dây contribuer.
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]*.mdPour 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 :
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.
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.
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.
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.
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.
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
- Suivez les recommandations de la CNIL sur les mots de passe. Pensez notamment Ă limiter le nombre de tentatives dâaccĂšs.
- 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
SecureetHttpOnly;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
SameOriginsur les requĂȘtes. L'indicateurSameSitedes cookies doit avoir la valeurStrictlorsque c'est possible ;d'utiliser un sous-domaine spĂ©cifique pour dĂ©poser le token d'authentification avec l'indicateur
domaindes 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
- La recommandation relative à la journalisation de la CNIL qui délivre des conseils pour déterminer les mesures à prendre selon le type de traitement de données.
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
- La base de données des faiblesses du code CWE, maintenue par l'organisme MITRE, liste les vulnérabilités que l'on peut rencontrer dans les logiciels et les dépendances.
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
- Le site DonnĂ©es & Design dĂ©veloppĂ© par le Laboratoire dâInnovation NumĂ©rique de la CNIL.
- Le site de la CNIL contient Ă©galement de nombreux exemples de notices dâinformation.
- La page Violations de données personnelles sur le site de CNIL.
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 :PrĂ©voyez une fonctionnalitĂ© permettant dâeffacer toutes les donnĂ©es relatives Ă une personne.
PrĂ©voyez aussi une notification automatique des sous-traitants afin quâils effacent eux aussi les donnĂ©es relatives Ă cette personne.
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 :
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
les données à caractÚre personnel ont fait l'objet d'un traitement illicite; ou
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).
- Le second niveau d'interface doit permettre à l'utilisateur de faire un choix sur la finalité de traceurs:
đ Exemple de banniĂšre cookie permettant de donner son consentement avec des cases Ă cocher pour chaque finalitĂ©. Boutons Tout accepter et Tout refuser ainsi que Valider mes choix
đ MĂȘme banniĂšre cookie que l'image prĂ©cĂ©dente mais avec l'affichage de plus d'informations concernant la finalitĂ© PublicitĂ© personnalisĂ©e
D'autres exemples d'interface, notamment pour les applications, sont disponibles dans la recommandation de la CNIL proposant des modalités pratiques de mise en conformité en cas de recours aux "cookies et autres traceurs".
Des sociétés proposent également des outils de Consent Management Platform (CMP) ou des Tag Managers pour faciliter la mise en conformité des sites.
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 :
- OWASP: Credential Stuffing Attack, Credential Stuffing Prevention Cheat Sheet
- Retailers: Protecting Against Credential Stuffing Attacks
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 :
- ANSSI : Recommandations relatives Ă l'authentification multifacteur et aux mots de passe - v2.0 du 08/10/2021
- OWASP: Bruteforce attack
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 :
- CAPEC-63: Cross-Site Scripting
- CERT-FR: Cross-Site Scripting
- OWASP: Cross-Site Scripting (XSS)
- ANSSI: Recommandations pour la sécurisation des sites web (XSS)
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 :
- CAPEC-66: SQL Injection
- CERT-FR: Injection de données
- OWASP: Injection
- OWASP: Prévention des injections SQL)
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.
