Plus ou moins complexes à mettre en place et assurant des niveaux de sécurité différents, les axes de sécurisation d’une infrastructure « Dockerisée » sont les suivants :
- Durcir les serveurs hôtes hébergeant le daeon Docker et les containers.
- Les images doivent être à jour et ne posséder que le strict minimum. Éviter le stockage de secrets au sein d’une image, la présence de ssh ou d’outils d’administration. Moins le container possède d’outils et de paquets, plus la tâche de compromission sera difficile.
- Construire un réseau cloisonné dont chaque composant Docker se voit attribuer un segment particulier (communication hôte-hôte, containers, administration, servitudes, etc.). Définir des politiques sécurisées de communication et d’administration au sein l’infrastructure.
- Vérifier les sources de construction des images utilisées par les containers et assurer un suivi de leurs évolutions en appliquant une signature numérique interne.
- Un scan de vulnérabilité de l’image doit être implémenté avant la validation de celle-ci en tant qu’image de confiance.
- Limiter les appels système, les ressources d’un container et minimiser l’exécution des containers en mode privilégié. Le UserMapping du User NameSpace est vivement conseillé.
- Intégrer un mécanisme de contrôle d’accès et de gestion de rôle/profil des utilisateurs/administrateur de la solution (sécuriser l’API par un outil RBAC).
- Suivre les évolutions de configuration et centraliser les journaux d’événement.
- Surveiller le niveau de sécurité global régulièrement à l’aide d’audit et de scanneur réseau et applicatif. Cela permet d’identifier les vulnérabilités des serveurs hôtes et des applications hébergées dans des containers et de suivre leur correction.
- Ne pas exposer directement un container sur Internet, les mécaniques habituelles de protection doivent s’appliquer : Reverse Proxy, Firewall/ WAF, etc.
cf. https://www.lemagit.fr/tribune/Introduction-aux-risques-et-a-la-securisation-de-Docker-2e-partie