Défense
Sécurité Docker
Docker facilite le déploiement, mais ne supprime pas les risques. Une image vulnérable, un conteneur trop privilégié ou un volume mal exposé peuvent créer une vraie surface d'attaque.
Image et conteneur
| Élément | Rôle |
|---|---|
| Image | Modèle immuable de départ |
| Conteneur | Instance lancée d'une image |
| Volume | Stockage persistant |
| Network | Réseau entre conteneurs |
| Dockerfile | Recette de construction |
Risques fréquents
- image obsolète
- dépendances vulnérables
- secrets dans l'image
- conteneur exécuté en root
- mode privilégié inutile
- socket Docker exposée
- volumes sensibles montés
- ports publiés sans besoin
- logs contenant des secrets
Dockerfile
Bonnes pratiques :
- partir d'une image officielle ou maîtrisée
- utiliser une version précise
- réduire les paquets installés
- supprimer les caches inutiles
- créer un utilisateur non-root
- ne pas copier de secrets
- scanner l'image
Exemple de principe :
USER node
Exécuter en non-root réduit l'impact d'une compromission applicative.
Réseau
Un conteneur ne doit exposer que les ports nécessaires.
docker ps
docker network ls
Il faut distinguer :
- port exposé dans l'image
- port publié sur l'hôte
- accès entre conteneurs
- accès depuis Internet
Volumes
Les volumes donnent accès à des données persistantes.
À éviter :
- monter
/dans un conteneur - monter
/var/run/docker.socksans nécessité absolue - donner accès aux secrets à tous les conteneurs
- partager un volume sensible entre services non liés
Bonnes pratiques
- limiter les privilèges
- exécuter en non-root
- scanner les images
- limiter les ports publiés
- protéger les volumes
- séparer les réseaux
- mettre à jour les images
- ne pas stocker de secrets dans l'image
- journaliser et surveiller les conteneurs
À retenir
Docker fournit de l'isolation, mais ne sécurise pas automatiquement. La sécurité dépend de l'image, des droits, du réseau, des volumes, des secrets et de la supervision.
