Introduction
Les conteneurs partagent le noyau de l'hôte : une mauvaise configuration peut entraîner des vulnérabilités comme l'escalade de privilèges ou des fuites de données. Ce guide structure la sécurité Docker en quatre axes clés : intégrité des images, durcissement d'exécution, isolation réseau et surveillance.
Comprendre les risques de sécurité Docker
Principales menaces dans les environnements conteneurisés :
Vulnérabilités courantes
- Escalade de privilèges : Accès root à l'hôte via des conteneurs mal configurés
- Images obsolètes : Dépendances vulnérables dans les images de base
- Ports exposés : Services accessibles sans autorisation
- Fuites de secrets : Identifiants codés en dur dans les images
Outils d'analyse
- Trivy : Détecte les CVE dans les images
- Docker Bench : Vérifie la conformité CIS
- Falco : Surveille les anomalies en temps réel
# Analyser une image avec Trivy
trivy image mon-app:latest
Conseil sécurité : Automatisez les analyses dans vos pipelines CI/CD.
Sécuriser les images de conteneurs
Des images compromises compromettent tout l'environnement.
Bonnes pratiques
-
Utiliser des images de base minimales
- Privilégiez
Alpine
ouDistroless
:
FROM alpine:3.18
- Privilégiez
-
Builds multi-étapes
- Séparez les environnements de build et d'exécution :
FROM node:20 AS builder COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=builder /app/dist /usr/share/nginx/html
-
Signer et scanner les images
- Intégrez des scans dans vos pipelines CI/CD
- Signature numérique avec Cosign :
# Générer une paire de clés cosign generate-key-pair # Signer l'image cosign sign --key cosign.key mon-app:v1.2.0 # Vérifier la signature cosign verify --key cosign.pub mon-app:v1.2.0
Durcir la configuration d'exécution
Une image sécurisée ne suffit pas - protégez l'environnement d'exécution.
Mesures clés
-
Exécution sans privilèges root
USER 1001 # Dans le Dockerfile
docker run --user 1001 mon-app # Au moment de l'exécution
-
Limiter les ressources
docker run --cpus 2 --memory 512m --pids-limit 100 mon-app
-
Système de fichiers en lecture seule
docker run --read-only --tmpfs /tmp mon-app
-
Retirer les capacités inutiles
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE nginx
Attention : Supprimez les capacités dangereuses comme SYS_ADMIN
et NET_RAW
.
Isolation et sécurité réseau
Les réseaux Docker par défaut sont souvent trop permissifs.
Bonnes pratiques
-
Réseaux bridge personnalisés
docker network create --driver bridge frontend-securise docker run --network frontend-securise react-app
-
Exposition minimale des ports
EXPOSE 443/tcp # N'exposez que les ports nécessaires
-
Chiffrement TLS
- Imposez le TLS mutualisé (mTLS) avec des maillages de services comme Istio
-
Bloquer la communication inter-conteneurs
dockerd --icc=false
Protection de l'hôte
Un hôte compromis met en danger tous les conteneurs.
Actions essentielles
-
Durcir le système d'exploitation
- Activez AppArmor/SELinux :
apparmor_parser -r /etc/apparmor.d/docker-restreint
-
Mises à jour permanentes
- Appliquez les patches mensuels sur le noyau et Docker Engine
-
Contrôle d'accès au démon Docker
chmod 660 /var/run/docker.sock && chown root:docker /var/run/docker.sock
Gestion des secrets
Les credentials en dur sont des cibles faciles.
Solutions sécurisées
-
Secrets Docker (mode Swarm)
echo "mot_de_passe_db" | docker secret create db_pass -
-
Intégration HashiCorp Vault
docker run --env VAULT_TOKEN=s.xyz mon-app
Surveillance et réponse aux incidents
Outils clés
-
Surveillance en temps réel avec Falco
falco -r /etc/falco/regles_falco.yaml
-
Journalisation centralisée
dockerd --log-driver=journald # Intégration systemd-journal
-
Audits réguliers
./docker-bench-security.sh # Vérifications CIS automatisées
Stratégies avancées
1. Isolation avec gVisor
docker run --runtime=runsc nginx # Couche supplémentaire de sécurité
2. Réseau Zero Trust
- Maillages de service (Linkerd/Istio) pour mTLS
3. Infrastructure immuable
- Reconstruisez les conteneurs au lieu de les patcher à chaud
Conclusion
La sécurité Docker nécessite une vigilance constante. Images minimales, durcissement système et surveillance proactive réduisent les risques tout en maintenant l'agilité opérationnelle. Combinez ces pratiques avec Falco et Vault pour une protection professionnelle.