La sécurité dès la conception (Security by Design) est une approche proactive qui intègre les principes de sécurité au cœur même du processus de création d’un système numérique dès les phases de conception, et non comme une couche ajoutée a posteriori.
En résumé : « On ne colle pas un cadenas sur une boîte en carton. On construit la boîte en acier, avec le cadenas intégré. »
C’est un changement de paradigme :
- Ancien modèle : développer → déployer → sécuriser (trop tard !)
- Security by Design : sécuriser → concevoir → développer → déployer
Principes fondamentaux (NIST, ENISA, RGPD)
Traçabilité et auditabilité
→ Toute action sensible doit laisser une trace fiable et horodatée.
Minimisation des données
→ Ne collecter que ce qui est strictement nécessaire.
Moindres privilèges
→ Chaque composant (utilisateur, service, script) n’a accès qu’aux ressources indispensables.
Défense en profondeur (Defense in depth)
→ Plusieurs couches de sécurité (réseau, applicatif, authentification, chiffrement).
Simplicité et transparence
→ Moins de complexité = moins de failles cachées. Le code et l’architecture doivent être auditable.
Résilience par défaut
→ Le système reste sécurisé même en cas de panne ou d’erreur humaine.
Non-confiance par défaut (Zero Trust)
→ « Ne fais confiance à rien, ni à personne, sans vérification continue. »
Mise en œuvre concrète
| Phase du projet | Bonnes pratiques Security by Design |
|---|---|
| Conception | Cartographier les flux de données<br>- Identifier les données personnelles (RGPD)- Choisir des technologies open source, maintenues, auditées |
| Développement | – Utiliser des requêtes préparées (anti-SQLi)- Valider/sanitiser toutes les entrées – Gérer les secrets (mots de passe, clés API) hors du code |
| Déploiement | – Isoler les services (conteneurs, VLANs) – Appliquer le moindre privilège au niveau BDD et OS – Activer le chiffrement (TLS, disque, sauvegardes) |
| Maintenance | – Mettre à jour automatiquement – Surveiller les logs critiques – Tester régulièrement (scans, pentests légers) |