TP 5 : Sécurisation des communications avec Network Policies et CronJob
Objectif :
Ce TP vise à comprendre et expérimenter l'utilisation des Network Policies dans Kubernetes afin de restreindre les communications réseau entre les Pods. Nous utiliserons un CronJob pour tester l'accès réseau à un service.
Phase 1 : Déploiement d'un service cible
Action : Déployer un service HTTP simple accessible dans le cluster.
- Namespace :
mynamespace
- Nom du pod :
web-pod
- Image du pod :
nginx:latest
- Port du pod :
80
- Nom du service :
web-service
- Port du service :
80
- Namespace :
Observation : Le service doit être accessible depuis n'importe quel pod du namespace.
Indice
Phase 2 : Création d'un CronJob pour tester l'accès au service
Action : Déployer un CronJob qui tente d’accéder au service toutes les minutes.
- Namespace :
mynamespace
- Nom du CronJob :
test-cronjob
- Image :
busybox
- Commande :
wget -qO- http://web-service
- Namespace :
Observation : Le CronJob doit réussir à atteindre le service.
Indice
Phase 3 : Application d’une Network Policy restrictive
Action : Appliquer une NetworkPolicy interdisant l’accès au service
web-service
sauf depuis des pods ayant un label spécifique (role=allowed
).- Nom de la NetworkPolicy :
deny-all-except-allowed
- Namespace :
mynamespace
- Restriction : Bloquer tout accès par défaut, sauf pour les pods ayant
role=allowed
.
- Nom de la NetworkPolicy :
Observation : Le CronJob doit échouer à atteindre le service après l’application de la NetworkPolicy.
Details
Phase 4 : Autorisation sélective
Action : Modifier le CronJob pour lui ajouter le label
role=allowed
.Observation : Après l’ajout du label, le CronJob doit de nouveau pouvoir accéder au service.
Indice
Solution
Afficher
Phase Avancée : Exploration des différentes règles de NetworkPolicy
- Tester des règles supplémentaires :
- Autoriser uniquement l’accès depuis un certain namespace.
- Restreindre l’accès selon un port spécifique.
- Bloquer tout trafic entrant ou sortant pour un pod spécifique.