Chapitre 9.4 - Pod Security Standards
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les Pod Security Standards (PSS)
- Appliquer les niveaux de sécurité (Privileged, Baseline, Restricted)
- Configurer l'admission control
- Comprendre les restrictions de sécurité
- Migrer vers des Pods plus sécurisés
- Utiliser Pod Security Policies (déprécié)
Introduction
Les Pod Security Standards (PSS) définissent trois niveaux de sécurité pour les Pods dans Kubernetes. Ils remplacent les Pod Security Policies (dépréciées).
Niveaux de Sécurité
Privileged
Aucune restriction. Permet toutes les capacités.
Cas d'usage: Systèmes de bas niveau, debugging.
Baseline
Restrictions minimales. Empêche les configurations les plus dangereuses.
Recommandé pour: La plupart des applications.
Restricted
Restrictions maximales. Suit les meilleures pratiques de sécurité.
Recommandé pour: Applications critiques, environnements sensibles.
Configuration au Niveau du Namespace
Via Labels
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Labels:
enforce: Applique le niveau (bloque les Pods non conformes)audit: Enregistre les violationswarn: Affiche un avertissement
Via Admission Control
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
configuration:
defaults:
enforce: "restricted"
enforce-version: "latest"
audit: "restricted"
audit-version: "latest"
warn: "restricted"
warn-version: "latest"
exemptions:
usernames: []
runtimeClasses: []
namespaces: ["kube-system"]
Restrictions Baseline
Exemples de Restrictions
- Pas de
hostPID,hostIPC,hostNetwork - Pas de volumes hostPath
- Pas de capabilities dangereuses
- Pas de runAsUser=0 (root)
Exemple: Pod Baseline
apiVersion: v1
kind: Pod
metadata:
name: baseline-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
Restrictions Restricted
Restrictions Additionnelles
runAsNonRoot: trueobligatoireseccompProfile: RuntimeDefaultobligatoire- Pas de volumes hostPath
- Pas de capabilities
readOnlyRootFilesystem: truerecommandé
Exemple: Pod Restricted
apiVersion: v1
kind: Pod
metadata:
name: restricted-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
Migration Progressive
Étape 1: Audit
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
pod-security.kubernetes.io/audit: baseline
pod-security.kubernetes.io/warn: baseline
Résultat: Les violations sont enregistrées mais les Pods sont acceptés.
Étape 2: Warning
metadata:
labels:
pod-security.kubernetes.io/warn: restricted
Résultat: Les violations affichent des avertissements.
Étape 3: Enforcement
metadata:
labels:
pod-security.kubernetes.io/enforce: restricted
Résultat: Les Pods non conformes sont rejetés.
Commandes Utiles
Vérification
# Voir les labels de sécurité
kubectl get namespace production -o yaml | grep pod-security
# Vérifier la conformité d'un Pod
kubectl get pod my-pod -o yaml | grep -A 10 securityContext
# Tester un Pod
kubectl apply -f pod.yaml --dry-run=server
Bonnes Pratiques
1. Démarrage avec Baseline
Commencer par Baseline, puis migrer vers Restricted.
2. Migration Progressive
Utiliser audit → warn → enforce pour une migration en douceur.
3. Exemptions
Définir des exemptions pour les namespaces système.
4. Documentation
Documenter les raisons des exemptions.
5. Monitoring
Surveiller les violations pour identifier les problèmes.
Résumé
Dans ce chapitre, vous avez appris:
Pod Security Standards: Trois niveaux (Privileged, Baseline, Restricted)
Configuration: Via labels namespace ou admission control
Baseline: Restrictions minimales, recommandé pour la plupart
Restricted: Restrictions maximales, meilleures pratiques
Migration: Audit → Warn → Enforce
Bonnes pratiques: Démarrage progressif, exemptions, monitoring
Prochaines Étapes
Module 10: Helm et Package Management
Lab 9.4: Audit de Sécurité
Chapitre créé le: Décembre 2024