Je ne vous présente plus Docker, fleuron de l’écosystème DevOps. C’est l’outil le plus populaire pour déployer des applications via des conteneurs. Avec son énorme popularité vient néanmoins le besoin d’en renforcer la sécurité. Dans cet article, nous allons faire un tour d’horizon des bonnes pratiques de sécurité.
Avant de se lancer
Vous souhaitez devenir expert dans la conteneurisation d’application ? Notre formation Docker (éligible au CPF) de 3 jours en inter et intraentreprise vous apprendra toutes les compétences nécessaires pour la maitrise de l’outil et intégrer les processus DevOps au sein de votre organisation.
L’équipe Ambient IT
Sécurité du noyau
Isolation avec Cgroups
Les Cgroups offrent un énorme avantage : une isolation fondamentale en limitant et priorisant les ressources système utilisées par les conteneurs.
C’est la première (et une des meilleures) ligne de défense contre les attaques DoS.
Hardening du Kernel
Telle la carapace d’une tortue, le kernel doit être durci pour proposer une défense efficace.
Pour réaliser du Kernel hardening, utilisez les configurations recommandées et surtout, assurez-vous de toujours avoir les derniers patchs de sécurité installés. Les pirates informatiques sont très proactifs dans leur recherche de vulnérabilité, donc vous devez l’être dans leurs corrections.
Daemon Docker
Réduction d’attaque du daemon
Pour protéger le daemon Docker, la meilleure défense, c’est la restriction.
Utilisez des sokets Unix au lieu de TCP et configurez les permissions d’accès en ayant toujours la règle du moindre privilège en tête.
Utilisation de root : quels risques ?
L’exécution de vos conteneurs en tant qu’utilisateur root augmente énormément les risques de sécurité. Je vous conseille de créer un utilisateur avec des privilèges limités dans le conteneur.
Vous pouvez aussi utiliser le mode rootless de Docker qui offre une couche supplémentaire de protection. C’est un mode qui permet d’exécuter le daemon en tant qu’utilisateur non privilégié. Très utile pour limiter l’impact en cas de piratage de celui-ci.
Images Docker
Importance des images signées
Signer une image Docker, c’est en assurer l’intégrité et l’authenticité. Si vous utilisez ces images, vous êtes (presque) sûr d’utiliser des composants testés et approuvé par la communauté tout le long de votre chaine d’approvisionnement logicielle.
Outils de scan des vulnérabilités
S’il vous reste quand même un doute sur les vulnérabilités possiblement présentes, vous pouvez toujours utiliser des outils comme Clair, Trivy ou Docker Bench for Security.
Ils vous permettent de scanner vos images à la recherche de vulnérabilités connues.
Réseaux et API
Sécurité inter-conteneurs
Pour assurer une sécurité optimale entre les conteneurs, il faut sécuriser leurs interactions. Je vous conseille d’utiliser des réseaux personnalisés dans votre infrastructure Docker et d’appliquer des politiques réseau strictes.
Le but étant de toujours garder un maximum de contrôle sur les communications entre les conteneurs et d’isoler vos applications.
Vous pouvez utiliser une solution comme Calico pour votre mise en réseau dans Docker.
Protection API : Comment s’y prendre ?
Lorsque vous utilisez des API, ce sont aussi des potentielles portes ouvertes pour des pirates informatiques. Avec des mécanismes d’identification, des certificats TLS et des contrôles RBAC, vous devriez pouvoir dormir sur vos deux oreilles.
Sécurisation de l’orchestration
Sécurité dans Kubernetes : Comment être proactif ?
Pour rester proactifs dans la sécurisation de votre environnement Kubernetes, des solutions comme Pod Security Policies, Network Policies et des contrôles d’accès vous permettront de garder une longueur d’avance sur les vulnérabilités trouvées par les pirates informatiques.
Automatisation et CI/CD
Intégration sécurité dans le CI/CD
Intégrer des étapes de vérification dans vos pipelines CI/CD est fortement conseillé. Surveiller cette étape précise de l’infrastructure vous permet de détecter et de corriger des vulnérabilités très tôt dans le développement de vos applications.
Patchs de sécurité : quelle fréquence ?
Des mises à jour régulières sont cruciales pour la bonne sécurité de vos images et de votre infrastructure. Vous pouvez utiliser des outils comme Watchtower pour le faire automatiquement (et vous épargner beaucoup de sueur).
Bonnes pratiques et tendances
Immuable ou pas : quel impact sur la sécurité ?
De manière générale, je vous conseille de laisser vos conteneurs en immuable. Cela renforce très fortement leur sécurité et empêche surtout les modifications non autorisées.
Veille sécurité : comment rester à jour ?
Pour rester à jour, pas de secret, je vous conseille de participer de manière active à la communauté Docker via des forums de discussion. Cela vous permettra non seulement de vous tenir au courant mais également de progresser et de découvrir de nouvelles façons d’utiliser l’outil.
Vous pouvez (et devez) aussi vous servir de la documentation officielle Docker ainsi que du CIS Docker Benchmark qui vous donneront aussi de bonnes pistes à suivre.
Conclusion
Pour les professionnels du DevOps, sécuriser ses conteneurs Docker est une tâche de tous les jours qui nécessite de garder l’œil ouvert sur les progrès technologiques, mais aussi sur les vulnérabilités et les correctifs de sécurité.
Vous devez maintenir une configuration minutieuse de votre environnement Docker et ne pas hésiter à conduire des tests réguliers afin de trouver un bon compromis entre praticité et sécurité.