Sécurité : Encadrer les développements informatiques

14 mars 2024

Intégrer sécurité et protection des données personnelles au plus tôt dans les projets.

La protection des données à caractère personnel doit être intégrée dans le cycle de développement informatique dès les phases de conception et pour les configurations par défaut afin d’offrir aux personnes concernées une meilleure maîtrise de leurs données et de limiter les erreurs, pertes, modifications non autorisée, ou mauvais usages de celles-ci dans les applications.

Les précautions élémentaires

Intégrer la protection des données, y compris ses exigences de sécurité des données, dès la conception de l’application ou du service. Ces exigences peuvent se traduire par divers choix d’architecture (décentralisée ou centralisée), de fonctionnalités (ex. : anonymisation à bref délai, minimisation des données), de technologies (ex. : chiffrement des communications), etc.

Utiliser des composants (ex. : bibliothèques) et outils sécurisés et reconnus par la communauté.

Mettre en œuvre des mesures contre les attaques courantes qui visent les bases de données (ex. : injections de code SQL, scripts).

Pour tout développement à destination du grand public, mener une réflexion sur les paramètres relatifs à la vie privée, et notamment sur le paramétrage par défaut.

Éviter le recours à des zones de texte libre ou de commentaires, sources de collecte de données personnelles supplémentaires non nécessaires ou disproportionnées.

Réaliser des tests complets (ex. : unitaires, d’intégration, fonctionnels, de sécurité) avant la mise à disposition ou la mise à jour d’un produit. Lors d’une mise à jour, s’assurer que les tests utilisés sont toujours adaptés.

Effectuer les développements informatiques et les tests dans un environnement informatique distinct de celui de la production (ex : sur des ordinateurs ou des machines virtuelles différents) et sur des données fictives ou anonymisées.

Veiller à l’absence de secrets (d’authentification ou de chiffrement) lors du dépôt de code dans un outil de gestion de versions (ex. : Git ou svn). Changer les secrets lors du passage en production.

Effectuer un test de non-régression et/ou une revue de code avant tout passage en production d’une mise à jour pour éviter l’apparition de sources de violation de données personnelles.

Ce qu’il ne faut pas faire

  • Utiliser des données personnelles réelles pour les phases de développement et de test. Des jeux fictifs doivent être utilisés autant que possible.
     
  • Développer une application puis réfléchir dans un second temps aux mesures de sécurité ou de protection des données personnelles à mettre en place.

Pour aller plus loin

  • La CNIL a publié un guide RGPD spécifiquement à destination des équipes de développement pour les aider à mettre en conformité leurs développements informatiques avec la règlementation concernant la protection des données personnelles.
     
  • Mettre en place une défense en profondeur des systèmes, c’est-à-dire une combinaison de plusieurs mesures de sécurité et contrôles (ex. : contrôler les données entrées dans un formulaire en ligne mais également protéger les requêtes en base de données). En particulier, les mesures en place sur la partie « front » d’une application peuvent être contournées et devraient être renforcées par des mesures sur la partie « back ».
     
  • Le développement doit imposer des formats de saisie et d’enregistrement des données qui minimisent les données collectées. Par exemple, s’il s’agit de collecter uniquement l’année de naissance d’une personne, le champ du formulaire correspondant ne doit pas permettre la saisie du mois et du jour de naissance. Cela peut se traduire notamment par la mise en œuvre d’un menu déroulant limitant les choix pour un champ de formulaire.
     
  • Un article dédié aux zones de texte libre ou de commentaires est accessible sur le site de la CNIL.
     
  • Les conventions ou règles de codage et la documentation sont essentielles pour maintenir l’application ou le service dans le temps sans introduire de nouvelles vulnérabilités et pour corriger efficacement les dysfonctionnements.
     
  • Les formats de données doivent être compatibles avec la mise en œuvre de la durée de conservation choisie. Par exemple, si un document numérique doit être conservé 20 ans, il pourrait être pertinent de privilégier des formats ouverts, davantage susceptibles d’être maintenus à long terme.
     
  • La création et la gestion de profils utilisateurs donnant des droits d’accès aux données variant en fonction des catégories d’utilisateur doivent être intégrées dès les phases de développement.
     
  • Les tests menés sur les données fictives ou anonymisées ne sont parfois pas suffisants pour s’assurer du bon fonctionnement d’un nouveau service ou d’une nouvelle fonctionnalité. Il est alors possible de tester dans un environnement de pré-production avec des données réelles. L’environnement de pré-production doit être configuré et sécurisé au même niveau que l’environnement de production lui-même et le nouveau service ou sa mise à jour doit avoir déjà subi l’ensemble des tests (unitaires, d’intégration et fonctionnels) dans les environnements de développement et de test.
     
  • Selon la nature de l’application, il peut être nécessaire d’assurer son intégrité par le recours à des signatures du code exécutable garantissant qu’il n’a subi aucune altération.