Sécurité des conteneurs à l’exécution
Mettez en œuvre les bonnes pratiques pour sécuriser les conteneurs à l’exécution, notamment en matière de privilèges utilisateur et de limites de ressources.
Sécurité des conteneurs à l’exécution est une leçon Docker & DevOps Fundamentals gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Docker & DevOps Fundamentals, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Principes essentiels de la sécurité à l’exécution
Bienvenue dans la sécurité des conteneurs à l’exécution ! Créer des images sécurisées est essentiel, mais que se passe-t-il une fois votre conteneur en fonctionnement ?
Cette leçon porte sur les bonnes pratiques permettant de protéger vos applications pendant leur fonctionnement, en limitant les dommages potentiels causés par des vulnérabilités ou des attaques.

Principe du moindre privilège
Un concept fondamental de la sécurité est le principe du moindre privilège. Il consiste à n’accorder à une entité (comme un conteneur ou un utilisateur) que les permissions absolument nécessaires à l’exécution de sa fonction, et aucune de plus.
Cette approche réduit la surface d’attaque et limite l’impact potentiel si un conteneur est compromis.
Éviter l’exécution en tant que root
Par défaut, les processus à l’intérieur d’un conteneur Docker s’exécutent en tant qu’utilisateur root, qui dispose de privilèges administratifs complets dans le conteneur.
- Risque : Si un attaquant prend le contrôle d’un conteneur doté des privilèges root, il pourrait exploiter des vulnérabilités du démon Docker ou du noyau afin d’obtenir un accès root sur le système hôte.
- Bonne pratique : Exécutez toujours les processus de vos conteneurs avec un utilisateur qui n’est pas root.
Exécuter avec un utilisateur non root
Vous pouvez spécifier un utilisateur (par son nom ou son UID) pour le processus de votre conteneur à l’aide de l’option --user avec docker run. Ici, nous exécutons la commande id dans un conteneur Alpine en tant qu’utilisateur 1000.
Si l’utilisateur 1000 n’existe pas, Docker utilisera tout de même cet UID.
docker run --rm -it --user 1000 alpine idComprendre les capacités Linux
Les systèmes Linux traditionnels disposent d’un utilisateur root fonctionnant selon le principe du « tout ou rien ». Les capacités Linux décomposent les puissants privilèges root en unités plus petites et distinctes.
Ainsi, un processus peut disposer uniquement des pouvoirs spécifiques similaires à ceux de root dont il a besoin (par exemple, l’association à des ports bas ou l’accès réseau brut), sans bénéficier de tous les privilèges root.
Supprimer les capacités inutiles
Par défaut, les conteneurs Docker s’exécutent avec un ensemble étendu de capacités. Vous pouvez supprimer les capacités inutiles à l’aide de --cap-drop afin de restreindre davantage les actions possibles d’un conteneur.
Ici, nous supprimons la capacité NET_RAW. La commande ping, qui nécessite NET_RAW, échouera alors, ce qui démontrera la restriction.
docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"Contrôler les ressources des conteneurs
Les conteneurs partagent le noyau et les ressources de l’hôte. Une utilisation incontrôlée des ressources par un conteneur peut provoquer un déni de service (DoS) pour les autres conteneurs, voire pour l’hôte lui-même.
- Limites du CPU : Empêchent un conteneur de monopoliser les cycles processeur.
- Limites de mémoire : Empêchent un conteneur de consommer toute la RAM disponible et de déstabiliser le système.
Mettre en place des limites de ressources
Vous pouvez définir directement des limites de CPU et de mémoire avec docker run. Cet exemple limite la mémoire à 128 Mo et l’utilisation du CPU à 0,5 (la moitié d’un cœur CPU).
Votre conteneur se comporte ainsi correctement et n’épuise pas les ressources des autres processus.
docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"Systèmes de fichiers en lecture seule
De nombreuses applications n’ont pas besoin d’écrire dans leur système de fichiers racine après leur démarrage. En rendant le système de fichiers accessible en lecture seule, vous bénéficiez d’importants avantages en matière de sécurité :
- Empêche les altérations : Un attaquant ne peut pas modifier les fichiers existants ni écrire de nouveaux fichiers malveillants.
- Limite la persistance : Toute modification effectuée est éphémère et est perdue au redémarrage du conteneur.
- Applique l’immutabilité : Favorise une conception dans laquelle les conteneurs sont jetables et la configuration est externe.
Déployer des conteneurs en lecture seule
Utilisez l’option --read-only lors du démarrage d’un conteneur. Toute tentative d’écriture dans le système de fichiers du conteneur (en dehors des volumes montés explicitement) échouera.
Essayez de créer un fichier dans ce conteneur en lecture seule :
docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"Vérification de la sécurité à l’exécution
Lesquelles des pratiques suivantes sont recommandées pour sécuriser les conteneurs à l’exécution ?
Récapitulatif de la sécurité à l’exécution
Excellent travail ! Vous avez appris à renforcer la sécurité des conteneurs pendant leur fonctionnement :
- Moindre privilège : N’accordez que les permissions nécessaires.
- Utilisateurs non root : Évitez d’exécuter les processus en tant que
root. - Capacités : Supprimez les capacités Linux inutiles.
- Limites de ressources : Contrôlez l’utilisation du CPU et de la mémoire.
- Lecture seule : Rendez les systèmes de fichiers immuables afin d’empêcher les écritures.
Ces pratiques réduisent considérablement la surface d’attaque et l’impact des compromissions potentielles. Continuez à vous entraîner !
Questions Fréquemment Posées
La leçon « Sécurité des conteneurs à l’exécution » est-elle gratuite ?
Oui — le texte complet de « Sécurité des conteneurs à l’exécution » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Docker & DevOps Fundamentals, passe à CoddyKit PRO. Le cours Docker & DevOps Fundamentals comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Sécurité des conteneurs à l’exécution » ?
Mettez en œuvre les bonnes pratiques pour sécuriser les conteneurs à l’exécution, notamment en matière de privilèges utilisateur et de limites de ressources. Tu pratiques Docker & DevOps Fundamentals avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Docker & DevOps Fundamentals ?
Aucune expérience préalable n'est requise. Docker & DevOps Fundamentals sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Sécurité des conteneurs à l’exécution » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Docker & DevOps Fundamentals ?
Oui. Chaque leçon Docker & DevOps Fundamentals inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Analyse de sécurité des images de conteneurs
- Sécurité des conteneurs à l’exécution
- Gestion des secrets et RBAC
- Politiques réseau et réseau à privilèges minimaux