Formation > Blog > Docker > Comment sécuriser ses conteneurs Docker ?

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

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é.

UNE QUESTION ? UN PROJET ? UN AUDIT DE CODE / D'INFRASTRUCTURE ?

Pour vos besoins d’expertise que vous ne trouvez nulle part ailleurs, n’hésitez pas à nous contacter.

ILS SE SONT FORMÉS CHEZ NOUS

partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp
partenaire sncf
partenaire hp
partenaire allianz
partenaire sfr
partenaire engie
partenaire boursorama
partenaire invivo
partenaire orange
partenaire psa
partenaire bnp