Der SecurityContext ist ein Feld in der Pod- und Container-Konfiguration von Kubernetes. Er legt fest, mit welchen Berechtigungen ein Pod oder Container läuft: als welcher User, mit welchen Linux-Capabilities, mit schreibgeschütztem Dateisystem und ohne Privilegienausweitung.
Pod-Ebene und Container-Ebene
Der SecurityContext kann auf zwei Ebenen gesetzt werden: Auf Pod-Ebene (spec.securityContext) gilt er für alle Container des Pods, auf Container-Ebene (spec.containers[].securityContext) überschreibt er die Pod-Werte für den einzelnen Container.
Wichtige Felder
- runAsUser / runAsGroup – UID und GID, mit denen der Prozess startet.
- runAsNonRoot: true – verhindert den Start als Root (UID 0).
- fsGroup / supplementalGroups – Gruppen für den Zugriff auf gemountete Volumes.
- allowPrivilegeEscalation: false – unterbindet das Anheben von Rechten über setuid-Binaries oder ähnliche Wege.
- capabilities – gezieltes Hinzufügen oder Entfernen von Linux-Capabilities, etwa drop: ["ALL"] oder add: ["NET_BIND_SERVICE"].
- readOnlyRootFilesystem: true – das Wurzeldateisystem des Containers wird schreibgeschützt gemountet.
- privileged: true – gewährt vollen Node-Zugriff; in Produktion vermeiden.
- appArmorProfile – wählt das AppArmor-Profil des Containers (RuntimeDefault, Localhost oder Unconfined).
- seccompProfile – wählt das seccomp-Profil des Containers (RuntimeDefault, Localhost oder Unconfined).
- selinuxOptions / windowsOptions – plattformspezifische Sicherheitsoptionen, etwa für SELinux.
Beispiel
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
Zusammenspiel mit Pod Security
Der strenge Pod-Security-Standard restricted verlangt genau diese Einstellungen: runAsNonRoot, eine User-ID ungleich 0, allowPrivilegeEscalation: false, den Wegfall aller Capabilities und ein seccomp-Profil. Wer die Werte im SecurityContext setzt, erfüllt die Anforderungen des Standards automatisch.
Verwandte Grundlagen: Kubernetes ServiceAccount, kubectl-Befehle.