Aller au contenu principal

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