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