Erstelle namespace-sec.yaml
:
apiVersion: v1
kind: Namespace
metadata:
name: secure-ns
annotations:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/enforce-version: latest
Hier gilt der Modus restricted
, das ist der strengste Standard.
kubectl apply -f namespace-sec.yaml
Erstelle pod-privileged.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: privileged-pod
namespace: secure-ns
spec:
containers:
- name: busybox
image: busybox
securityContext:
privileged: true
command: ["sh", "-c", "sleep 3600"]
Versuche den Pod zu erstellen:
kubectl apply -f pod-privileged.yaml
Erwartung: Der Pod wird abgelehnt, weil privileged: true
nicht im restricted
Standard erlaubt ist.
Erstelle pod-baseline.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: baseline-pod
namespace: secure-ns
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
containers:
- name: busybox
image: busybox
command: ["sh", "-c", "sleep 3600"]
kubectl apply -f pod-baseline.yaml
Der Pod sollte akzeptiert und gestartet werden.
Erstelle pod-no-sec.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: no-sec-pod
namespace: secure-ns
spec:
containers:
- name: busybox
image: busybox
command: ["sh", "-c", "sleep 3600"]
kubectl apply -f pod-no-sec.yaml
Dieser Pod wird wahrscheinlich abgelehnt (wegen fehlendem runAsNonRoot
).
Du kannst die Annotation anpassen:
Modus | Beschreibung |
---|---|
privileged |
Keine Einschränkungen (unsicher) |
baseline |
Basis-Sicherheitsregeln (realistischer Kompromiss) |
restricted |
Strengste Sicherheitsregeln |
Beispiel für baseline
:
annotations:
pod-security.kubernetes.io/enforce: baseline
pod-security.kubernetes.io/enforce-version: latest
kubectl delete ns secure-ns
kubectl apply -f namespace-sec.yaml # mit anderen Annotationen
Dann die Pods erneut testen.
Begriff | Beschreibung |
---|---|
Pod Security Standards (PSS) | Eingebaute Kubernetes Admission Controller Regeln für Pod-Sicherheit |
enforce | Erzwingt den angegebenen Sicherheitsstandard in einem Namespace |
privileged, baseline, restricted | Verschiedene Sicherheitsprofile mit unterschiedlicher Strenge |
Admission Controller | Blockiert Pods, die nicht den Regeln entsprechen |