- Authors

- Name
- Phillip Pham
- @ddppham
Kubernetes Security Hardening: Die komplette Checkliste für deutsche Unternehmen
TL;DR - Kurzfassung
Ein gehärteter Kubernetes-Cluster basiert auf vier Säulen: RBAC (wer darf was), Network Policies (wer spricht mit wem), Pod Security Standards (wie laufen Container) und Audit-Logging (was ist passiert). Deutsche Unternehmen müssen zusätzlich DSGVO- und BSI-Anforderungen erfüllen. Dieser Guide zeigt alle Schritte mit kopierbaren YAML-Beispielen.
Kubernetes bietet von Haus aus grundlegende Sicherheitsmechanismen - doch in der Standardkonfiguration ist ein Cluster nicht produktionsreif. Pods können uneingeschränkt kommunizieren, Container laufen häufig als Root, und Secrets liegen unverschlüsselt in etcd. Für Unternehmen in Deutschland, die DSGVO, BSI IT-Grundschutz oder branchenspezifische Vorgaben wie NIS2 oder KRITIS einhalten müssen, ist ein systematisches Security Hardening unverzichtbar.
Warum Security Hardening gerade jetzt kritisch ist
Die Bedrohungslage für Container-Infrastrukturen verschärft sich kontinuierlich:
- 96% aller Unternehmen nutzen oder evaluieren Kubernetes (CNCF Survey 2024)
- 67% der Cluster haben mindestens eine bekannte Fehlkonfiguration (Red Hat State of K8s Security 2025)
- NIS2-Richtlinie verpflichtet seit Oktober 2024 mehr Unternehmen zu erhöhten Sicherheitsstandards
- Die durchschnittlichen Kosten eines Container-Sicherheitsvorfalls liegen bei über 1 Mio. EUR
| Risiko | Ohne Hardening | Mit Hardening |
|---|---|---|
| Unautorisienter Pod-Zugriff | Jeder ServiceAccount kann alles | Least-Privilege via RBAC |
| Laterale Bewegung im Cluster | Pods kommunizieren frei | Network Policies isolieren Namespaces |
| Container-Ausbruch | Root-Container ohne Limits | Non-Root, Read-Only Filesystem |
| Datenexfiltration | Keine Egress-Kontrolle | Egress Policies + Audit-Logging |
| Compliance-Verstoss | Manuelle Prüfung nötig | Automatisierte Policy-Enforcement |
Säule 1: RBAC - Rollenbasierte Zugriffskontrolle richtig konfigurieren
RBAC (Role-Based Access Control) ist das Fundament jeder Kubernetes-Sicherheitsstrategie. Das Prinzip: Jeder Benutzer und jeder ServiceAccount bekommt nur die Berechtigungen, die er tatsächlich braucht.
Häufige RBAC-Fehler vermeiden
Die drei häufigsten RBAC-Fehlkonfigurationen in der Praxis:
cluster-adminfür Entwickler - Niemals ClusterAdmin-Rechte an Entwicklerteams vergeben- Wildcard-Berechtigungen (
*bei Verbs oder Resources) - Immer explizit definieren - Default ServiceAccount nutzen - Jede Anwendung braucht einen eigenen ServiceAccount
Praxis-Beispiel: Namespace-isolierte Entwicklerrolle
# Rolle: Entwickler darf in seinem Namespace Pods sehen und Logs lesen
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: developer
namespace: team-frontend
rules:
- apiGroups: ['']
resources: ['pods', 'pods/log', 'services', 'configmaps']
verbs: ['get', 'list', 'watch']
- apiGroups: ['apps']
resources: ['deployments']
verbs: ['get', 'list', 'watch', 'create', 'update', 'patch']
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-binding
namespace: team-frontend
subjects:
- kind: User
name: max.mustermann@unternehmen.de
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: developer
apiGroup: rbac.authorization.k8s.io
Praxis-Beispiel: Monitoring-ServiceAccount mit minimalen Rechten
# ServiceAccount für Prometheus - nur Leserechte auf Metriken
apiVersion: v1
kind: ServiceAccount
metadata:
name: prometheus-monitoring
namespace: monitoring
automountServiceAccountToken: false
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus-reader
rules:
- apiGroups: ['']
resources: ['nodes', 'nodes/metrics', 'services', 'endpoints', 'pods']
verbs: ['get', 'list', 'watch']
- nonResourceURLs: ['/metrics']
verbs: ['get']
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus-reader-binding
subjects:
- kind: ServiceAccount
name: prometheus-monitoring
namespace: monitoring
roleRef:
kind: ClusterRole
name: prometheus-reader
apiGroup: rbac.authorization.k8s.io
Tipp: Mit kubectl auth can-i --list --as=system:serviceaccount:monitoring:prometheus-monitoring können Sie die tatsächlichen Berechtigungen eines ServiceAccounts prüfen.
Säule 2: Network Policies - Netzwerksegmentierung im Cluster
Ohne Network Policies kann jeder Pod mit jedem anderen Pod im Cluster kommunizieren - über Namespace-Grenzen hinweg. Das ist vergleichbar mit einem Firmennetzwerk ohne Firewalls.
Default-Deny-Strategie implementieren
Best Practice: Zuerst allen Traffic blockieren, dann gezielt erlauben.
# Default Deny: Kein eingehender oder ausgehender Traffic erlaubt
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Gezielte Kommunikation erlauben
# Frontend darf nur mit dem Backend sprechen (Port 8080)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend-to-backend
namespace: production
spec:
podSelector:
matchLabels:
tier: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
tier: frontend
ports:
- protocol: TCP
port: 8080
---
# Backend darf nur mit der Datenbank sprechen (Port 5432)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-backend-to-database
namespace: production
spec:
podSelector:
matchLabels:
tier: backend
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
tier: database
ports:
- protocol: TCP
port: 5432
- to: # DNS erlauben
- namespaceSelector: {}
ports:
- protocol: UDP
port: 53
Wichtig für DSGVO-Compliance: Network Policies sind technische Massnahmen nach Art. 32 DSGVO ("Sicherheit der Verarbeitung"). Dokumentieren Sie Ihre Netzwerksegmentierung als Teil Ihrer technisch-organisatorischen Massnahmen (TOMs).
Säule 3: Pod Security Standards - Container-Härtung
Kubernetes definiert drei Pod Security Standards (PSS): Privileged, Baseline und Restricted. Für Produktionsumgebungen sollte mindestens Baseline, idealerweise Restricted gelten.
Pod Security Admission pro Namespace konfigurieren
# Namespace mit Restricted Pod Security Standard
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
Gehärtetes Deployment-Template
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
seccompProfile:
type: RuntimeDefault
containers:
- name: webapp
image: registry.example.com/webapp:v1.2.3 # Kein :latest verwenden
ports:
- containerPort: 8080
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ['ALL']
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 30
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir:
sizeLimit: 100Mi
Checkliste für gehärtete Pods:
-
runAsNonRoot: true- Kein Root-Benutzer im Container -
readOnlyRootFilesystem: true- Dateisystem ist schreibgeschützt -
allowPrivilegeEscalation: false- Keine Privilegien-Eskalation -
capabilities.drop: ['ALL']- Alle Linux Capabilities entfernt -
seccompProfile: RuntimeDefault- Seccomp-Profil aktiviert -
automountServiceAccountToken: false- Kein automatisches Token-Mount - Explizite Resource Limits gesetzt
- Keine
:latest-Tags - Immer fixe Image-Versionen
Säule 4: Audit-Logging und Compliance-Monitoring
Audit-Logging beantwortet die Frage: Wer hat wann was im Cluster gemacht? Für DSGVO und BSI IT-Grundschutz ist eine lückenlose Protokollierung Pflicht.
Kubernetes Audit Policy konfigurieren
# /etc/kubernetes/audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# Secrets immer auf RequestResponse-Level loggen
- level: RequestResponse
resources:
- group: ''
resources: ['secrets']
# RBAC-Änderungen vollständig loggen
- level: RequestResponse
resources:
- group: 'rbac.authorization.k8s.io'
resources: ['clusterroles', 'clusterrolebindings', 'roles', 'rolebindings']
# Pods und Deployments auf Request-Level
- level: Request
resources:
- group: ''
resources: ['pods']
- group: 'apps'
resources: ['deployments', 'statefulsets', 'daemonsets']
# Read-Operationen nur Metadaten
- level: Metadata
verbs: ['get', 'list', 'watch']
# Health-Checks nicht loggen (zu viel Noise)
- level: None
nonResourceURLs:
- '/healthz*'
- '/readyz*'
- '/livez*'
Prometheus-Alerting für Security-Events
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: security-alerts
namespace: monitoring
spec:
groups:
- name: kubernetes-security
rules:
- alert: UnauthorizedAccessAttempt
expr: sum(rate(apiserver_audit_event_total{verb!~"get|list|watch",code=~"40[13]"}[5m])) > 5
for: 2m
labels:
severity: warning
annotations:
summary: 'Erhöhte Anzahl unautorisierter API-Zugriffe'
description: 'Mehr als 5 unautorisierte Zugriffsversuche pro Minute in den letzten 2 Minuten.'
- alert: PrivilegedPodCreated
expr: sum(kube_pod_container_info{container!="",pod=~".*"}) > 0
for: 0m
labels:
severity: critical
annotations:
summary: 'Privilegierter Pod erstellt'
description: 'Ein Container mit erweiterten Privilegien wurde gestartet.'
Compliance-Mapping: BSI IT-Grundschutz und DSGVO
BSI IT-Grundschutz Baustein SYS.1.6 (Containerisierung)
| BSI-Anforderung | Kubernetes-Massnahme | Priorität |
|---|---|---|
| SYS.1.6.A1 - Planung des Container-Einsatzes | Dokumentierte Architektur, Namespace-Strategie | Basis |
| SYS.1.6.A3 - Sicheres Container-Image | Image Scanning, signierte Images, kein :latest | Basis |
| SYS.1.6.A5 - Minimale Rechte | Pod Security Standards: Restricted, RBAC | Basis |
| SYS.1.6.A6 - Netzwerksegmentierung | Network Policies, Default-Deny | Basis |
| SYS.1.6.A8 - Logging und Monitoring | Audit-Logging, Prometheus/Grafana, Alerting | Standard |
| SYS.1.6.A9 - Verschlüsselung | etcd Encryption, mTLS via Service Mesh | Standard |
| SYS.1.6.A13 - Penetrationstests | Regelmässige Security Audits, kube-bench | Erhöht |
DSGVO-Anforderungen und technische Umsetzung
| DSGVO-Artikel | Anforderung | Kubernetes-Umsetzung |
|---|---|---|
| Art. 25 - Privacy by Design | Datenschutz durch Technikgestaltung | Namespace-Isolation, Verschlüsselung |
| Art. 32 - Sicherheit der Verarbeitung | Technisch-organisatorische Massnahmen | RBAC, Network Policies, PSS |
| Art. 33 - Meldepflicht bei Datenschutzverletzungen | Erkennung und Meldung innerhalb 72h | Audit-Logging, Alerting |
| Art. 35 - Datenschutz-Folgenabschätzung | DSFA bei risikoreicher Verarbeitung | Dokumentierte Sicherheitsarchitektur |
Security Hardening Checkliste zum Abhaken
Cluster-Ebene
- Kubernetes auf aktuellem Patch-Level (mindestens n-1)
- etcd-Verschlüsselung aktiviert (
EncryptionConfiguration) - API-Server mit OIDC/LDAP statt statischen Tokens
- Audit-Logging aktiviert und an SIEM angebunden
-
kube-benchCIS-Benchmark regelmässig ausgeführt
Namespace-Ebene
- Pod Security Standards auf
restrictedoder mindestensbaseline - ResourceQuotas und LimitRanges definiert
- Default-Deny NetworkPolicies aktiv
- Dedizierte ServiceAccounts pro Anwendung
Workload-Ebene
- Alle Container als Non-Root
- Read-Only Filesystem aktiviert
- Alle Linux Capabilities gedroppt
- Keine
:latest-Image-Tags - Liveness- und Readiness-Probes konfiguriert
- Resource Requests und Limits gesetzt
Netzwerk-Ebene
- CNI mit NetworkPolicy-Support (Cilium, Calico)
- Ingress-Controller mit TLS-Terminierung
- Egress-Filtering für ausgehenden Traffic
- Service Mesh für mTLS zwischen Services (optional, aber empfohlen)
Automatisierte Policy-Enforcement Tools
Manuelle Prüfungen skalieren nicht. Diese Open-Source-Tools automatisieren das Hardening:
| Tool | Funktion | Empfehlung |
|---|---|---|
| OPA/Gatekeeper | Policy-as-Code für Admission Control | Standard für Enterprise |
| Kyverno | Kubernetes-native Policies (einfacher als OPA) | Ideal für KMU |
| kube-bench | CIS Benchmark Prüfung | Regelmässig ausführen |
| Trivy | Image- und Cluster-Vulnerability-Scanning | In CI/CD integrieren |
| Falco | Runtime-Erkennung verdächtiger Aktivitäten | Für KRITIS-Betreiber |
| kubescape | MITRE ATT&CK + NSA-Hardening-Checks | Schneller Überblick |
Nächste Schritte
Sofort umsetzen (Tag 1-3)
- RBAC-Audit durchführen:
kubectl auth can-i --listfür alle ServiceAccounts - Default-Deny NetworkPolicies in allen Produktions-Namespaces aktivieren
- Pod Security Standards auf
baselinesetzen (als Warnung starten) - kube-bench ausführen und kritische Findings beheben
Kurzfristig (Woche 1-4)
- Audit-Logging aktivieren und an zentrales Logging anbinden
- Image-Scanning in die CI/CD-Pipeline integrieren
- Pod Security Standards auf
restrictedhochstufen - Egress-Policies für alle Namespaces definieren
Mittelfristig (Monat 1-3)
- OPA/Gatekeeper oder Kyverno für automatisierte Policy-Enforcement
- Service Mesh für mTLS zwischen Services evaluieren
- BSI IT-Grundschutz Compliance-Dokumentation erstellen
- Penetrationstest durch externen Dienstleister
Sie möchten Ihre Kubernetes-Sicherheit professionell aufstellen? Wir bieten Kubernetes Security Schulungen für Teams und unterstützen Sie mit unserem Managed Security Service bei der Absicherung Ihrer Cluster - DSGVO-konform und nach BSI IT-Grundschutz.
Weiterführende Artikel:
- Kubernetes RBAC Best Practices - Detaillierte RBAC-Strategien für grosse Organisationen
- BSI IT-Grundschutz für Kubernetes - Vollständiges BSI-Compliance-Mapping
- DSGVO-Compliance mit Kubernetes - Datenschutz in Container-Umgebungen
- Kubernetes Security Scanning automatisiert - CI/CD-Integration
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
§ 30 BSIG auf Kubernetes übersetzt: technische Pflichten
Die zehn Maßnahmenkategorien aus § 30 BSIG auf Kubernetes übersetzt: Audit-Policy, etcd-Backup, Secrets, RBAC, NetworkPolicies, Pod Security Standards.
Kubernetes Cluster absichern: Security-Checkliste 2026
Kubernetes Cluster absichern: 30-Minuten-Security-Check mit kube-bench, Trivy & Polaris plus 12-Punkte-Härtungs-Checkliste mit YAML-Templates für Audits.
Kubernetes RBAC Audit: Least-Privilege durchsetzen
Kubernetes RBAC Audit: überberechtigte Rollen, verwaiste Bindings und Escalation-Pfade finden — der komplette Audit-Workflow mit rbac-lookup und kubeaudit.
Kubernetes RBAC Best Practices 2026: Rollen, Bindings & Least Privilege
Kubernetes RBAC Best Practices mit vollständigen Role-, ClusterRole- und RoleBinding-Manifesten: Least-Privilege-Rollen für Entwickler, CI/CD und Auditoren bauen, mit kubectl auth can-i und rbac-lookup verifizieren und die häufigsten Fehlkonfigurationen systematisch eliminieren.
NIS2-Meldepflicht für Kubernetes-Vorfälle: Ablauf in Stunden
Meldepflicht nach NIS2/§ 32 BSIG für Kubernetes-Vorfälle: 24h-Erstmeldung, 72h-Meldung, Abschlussbericht. Welche Cluster-Ereignisse die Frist auslösen.
Kubernetes CIS Benchmark Hardening: Guide + Checkliste
Kubernetes CIS Benchmark Hardening: kube-bench ausführen, Report priorisieren, Top-15-Fehler beheben. Härtungs-Checkliste & Managed-Kubernetes-Fallstricke.
Kubernetes Compliance: DSGVO, BSI & regulatorische Anforderungen (2026)
Kubernetes Compliance: DSGVO, BSI IT-Grundschutz und regulatorische Anforderungen erfüllen. Praxis-Guide für deutsche Enterprise-Teams.
AI-Agent-Sandbox auf Kubernetes: VM-Isolation mit Kata Containers
AI-Agent-Sandbox auf Kubernetes: Warum Container-Isolation für untrusted Agents nicht reicht und wie Kata Containers VM-Isolation bei Standard-Container-Workflow liefert.