9.1 Principaux aspects de la sécurité réseau Docker
Dans cette conférence, on va voir les points clés de la sécurité des réseaux Docker, les recommandations et les bonnes pratiques pour protéger tes conteneurs et tes données.
Principaux aspects de la sécurité réseau Docker
- Isolation des conteneurs
- Contrôle d'accès
- Cryptage des données
- Surveillance et audit
- Mises à jour et correctifs
9.2 Isolation des conteneurs
L'isolation des conteneurs, c'est le premier pas pour assurer la sécurité des réseaux Docker. Ça aide à minimiser l'impact des vulnérabilités potentielles et empêche tout accès non autorisé entre les conteneurs.
Utilisation des réseaux personnalisés
Crée des réseaux personnalisés pour isoler les conteneurs et limiter leur interaction aux services nécessaires uniquement.
docker network create --driver bridge my_secure_network
Dans Docker Compose, tu peux définir un réseau personnalisé pour chaque service.
version: '3.8'
services:
web:
image: nginx:latest
networks:
- my_secure_network
app:
image: myapp:latest
networks:
- my_secure_network
networks:
my_secure_network:
driver: bridge
Utilisation des règles inter-conteneurs
Docker te permet de définir des règles inter-conteneurs pour gérer les interactions entre les conteneurs au niveau réseau.
docker network connect --link <source_container>:<alias> <target_network> <container_name>
Exemple :
docker network connect --link container1:c1 multi-host-network container2
9.3 Contrôle d'accès
Le contrôle d'accès est important pour éviter tout accès non autorisé aux containers et réseaux.
Restriction d'accès aux ports
Restreins l'accès aux ports publiés en utilisant des adresses IP et des règles de firewall.
docker run -d -p 127.0.0.1:8080:80 --name my_secure_container nginx
Utilisation des rôles et des politiques
Utilise des rôles et des politiques d'accès pour limiter les droits des utilisateurs qui gèrent les containers et réseaux.
docker run -d --user <uid>:<gid> my_secure_container
9.4 Cryptage des données
Le cryptage des données aide à protéger les données confidentielles aussi bien au repos que pendant leur transmission.
Cryptage des données au repos
Utilisez le cryptage du système de fichiers pour les volumes utilisés par les conteneurs.
docker run -d --name my_secure_container --mount
type=volume,source=my_volume,destination=/data,volume-driver=local,volume-opt=o=bind,volume-opt=device=/mnt/secure_data nginx
Cryptage des données pendant la transmission
Utilisez TLS pour chiffrer les données transmises entre conteneurs et services externes.
docker run -d -p 443:443 --name my_secure_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
9.5 Surveillance et audit
La surveillance et l'audit permettent de suivre l'activité des containers et des réseaux, d'identifier les menaces potentielles et d'y répondre.
Logs et métriques
Collectez les logs et les métriques des containers pour l'analyse et la surveillance.
docker logs <container_name>
Utilisez des outils de monitoring comme Prometheus et Grafana pour suivre l'état des containers et des réseaux.
Audit
Activez l'audit pour suivre les actions des utilisateurs et les modifications de configuration des containers et des réseaux.
docker events
9.6 Mises à jour et patches
Les mises à jour régulières et les patches aident à protéger les conteneurs et les réseaux contre les vulnérabilités connues.
Mise à jour de Docker
Suis les mises à jour de Docker et installe rapidement les nouvelles versions.
sudo apt-get update
sudo apt-get install docker-ce
Mise à jour des images
Mets régulièrement à jour les images des conteneurs pour les dernières versions contenant des correctifs de sécurité.
docker pull nginx:latest
9.7 Exemples de bonnes pratiques
Exemple 1 : Création de réseaux isolés
Crée des réseaux isolés pour chaque composant de ton application.
docker network create --driver bridge frontend_network
docker network create --driver bridge backend_network
Lance les conteneurs dans les réseaux correspondants.
docker run -d --name frontend --network frontend_network nginx
docker run -d --name backend --network backend_network myapp
Exemple 2 : Restriction d'accès aux ports
Limite l'accès aux ports des conteneurs uniquement aux adresses IP et aux hôtes nécessaires.
docker run -d -p 192.168.1.100:8080:80 --name restricted_container nginx
Exemple 3 : Utilisation de TLS pour le chiffrement
Configure les conteneurs pour utiliser TLS afin de protéger les données pendant leur transfert.
docker run -d -p 443:443 --name tls_container -v /path/to/cert.pem:/etc/nginx/cert.pem -v
/path/to/key.pem:/etc/nginx/key.pem nginx
GO TO FULL VERSION