Lab 9.3 - Pod Security Standards
Objectifs du Lab
À la fin de ce lab, vous serez capable de:
- Comprendre les Pod Security Standards (PSS).
- Appliquer des politiques de sécurité au niveau du namespace.
- Tester les différents niveaux (privileged, baseline, restricted).
- Comprendre les restrictions de sécurité.
Durée Estimée
45-60 minutes
Prérequis
- kubectl installé et configuré.
- Cluster Kubernetes 1.23+ (pour PSS).
- Connaissances sur Pod Security (Chapitre 9.3).
Partie 1: Comprendre les Pod Security Standards
Kubernetes définit trois niveaux de sécurité:
- privileged: Aucune restriction (désactivé par défaut).
- baseline: Restrictions minimales pour prévenir les vulnérabilités connues.
- restricted: Restrictions strictes suivant les meilleures pratiques.
Partie 2: Application au Namespace
Étape 2.1: Créer un Namespace avec PSS
Créez un namespace avec le niveau baseline:
kubectl create namespace pss-test
Appliquez le Pod Security Standard:
kubectl label namespace pss-test pod-security.kubernetes.io/enforce=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/audit=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/warn=baseline
Vérifiez:
kubectl get namespace pss-test --show-labels
Partie 3: Test avec Baseline
Étape 3.1: Créer un Pod Baseline-Compliant
Créez pod-baseline.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-baseline
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
Appliquez:
kubectl apply -f pod-baseline.yaml
Partie 4: Test avec Restricted
Étape 4.1: Changer le Niveau à Restricted
Changez le niveau à restricted:
kubectl label namespace pss-test pod-security.kubernetes.io/enforce=restricted --overwrite
Étape 4.2: Tester un Pod Non-Compliant
Créez pod-non-compliant.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-non-compliant
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
# Manque securityContext requis pour restricted
Tentez de créer le Pod:
kubectl apply -f pod-non-compliant.yaml
Le Pod devrait être rejeté avec une erreur de sécurité.
Partie 5: Pod Compliant avec Restricted
Créez pod-restricted.yaml:
apiVersion: v1
kind: Pod
metadata:
name: pod-restricted
namespace: pss-test
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL
Appliquez:
kubectl apply -f pod-restricted.yaml
Partie 6: Nettoyage
kubectl delete pod pod-baseline -n pss-test
kubectl delete pod pod-restricted -n pss-test
kubectl delete namespace pss-test
Résumé du Lab
Dans ce lab, vous avez appliqué les Pod Security Standards au niveau des namespaces. Vous avez testé les différents niveaux de sécurité et compris les restrictions.
Prochaines Étapes
Le dernier lab de ce module vous montrera comment effectuer un audit de sécurité.
Lab 9.4: Audit de Sécurité
Lab créé le: Décembre 2024