Training Module

Kubernetes Security Vertiefung — Pod Security Admission & Secrets-Härtung

In diesem 90-Minuten-Modul verlässt ihr die Workload-lokale Sicht auf einzelne Container und wechselt zur Namespace-weiten Policy-Ebene. Los geht es mit den Pod Security Standards als Konzept: den drei Profilen privileged, baseline und restricted, und der Abgrenzung, die den Einstieg trägt – ein securityContext (aus dem Modul Anwendungsdesign bereits bekannt) wirkt pro Workload, eine Pod-Security-Policy wirkt pro Namespace und trifft jeden Pod darin, egal wer ihn einreicht. Im Hands-on setzt ihr genau dieses Bordmittel ein: Mit dem Label pod-security.kubernetes.io/enforce=restricted auf einem Namespace seht ihr live, wie ein Pod mit privileged: true und ohne runAsNonRoot vom Admission-Controller abgewiesen wird, bevor er überhaupt geplant wird – danach ordnet ihr den Unterschied zu den Modi warn und audit ein. Der dritte Block geht über Base64 hinaus, das ihr aus dem Modul Workloads & Konfiguration bereits als “kodiert, nicht verschlüsselt” kennt: Encryption at Rest für Secrets über eine EncryptionConfiguration am API-Server, als Konzept-Demo direkt gegen etcd – ohne Cloud-KMS, dazu eine Abgrenzung zu Vault/External-Secrets-Operator als eigenständigem Betriebsmodell. Zum Abschluss ein bewusster Ausblick ohne eigenes Hands-on: eingebaute Pod Security Admission gegen Policy-Engines wie Kyverno oder OPA Gatekeeper – Scope-Grenze offen benannt, ohne unbelegte Tool-Empfehlung. Das eigene, mehrstündige Hands-on-Modul dazu gibt es inzwischen: siehe Kubernetes Admission Controllers & Policy Engines — Kyverno vs. OPA Gatekeeper. Voraussetzung sind die Module “Kubernetes Administration” (RBAC/ ServiceAccounts) und “Kubernetes Anwendungsdesign” ( securityContext) – beide werden hier vorausgesetzt und nicht wiederholt. Die Session läuft weiterhin vollständig lokal über Minikube oder kind, ohne Cloud-Account und ohne Kostenwirkung.

Format

90 Minuten, live (remote oder vor Ort), Input & Hands-on

Teilnehmende

Ops/Admins, die Namespace-weite Security-Policies durchsetzen und Secrets über Base64 hinaus absichern wollen

Voraussetzungen

Abgeschlossene Module “Kubernetes Administration” und “Kubernetes Anwendungsdesign” oder gleichwertige Vorkenntnisse, lauffähige lokale Docker-Umgebung für Minikube oder kind

Warum dieses Training für deine Organisation wirkt

Vom Workload zur Namespace-Policy

Ein securityContext schützt nur den Pod, in dem er steht – ein vergessenes Feld in einem einzigen Manifest reicht für eine Lücke. Pod Security Admission durchsetzt dieselbe Härtung für jeden Pod in einem Namespace, unabhängig davon, wer ihn schreibt.

Ablehnung ist kein Fehler, sondern die Funktion

Wer restricted nur aus der Dokumentation kennt, unterschätzt, wie hart die Durchsetzung tatsächlich ist. Wer live sieht, wie kubectl apply mit einer klaren Admission-Fehlermeldung abbricht, erkennt den Unterschied zu warn/audit sofort.

Base64 war nie das Ende der Secrets-Geschichte

“Ein Secret ist Base64-kodiert, nicht verschlüsselt” ist der Merksatz aus dem Workloads-Modul. Dieses Modul zeigt, was direkt gegen etcd tatsächlich mit Encryption at Rest passiert – vorher und nachher, live vergleichbar.

Was Teilnehmende mitnehmen

  • Die drei Pod-Security-Standards-Profile privileged/baseline/restricted benennen und gegen den bereits bekannten securityContext abgrenzen: Workload-lokal vs. Namespace-weite Policy.
  • Einen Namespace mit dem Label pod-security.kubernetes.io/enforce=restricted versehen und live erleben, wie ein Pod mit privilegierten Feldern vom Admission-Controller abgewiesen wird, bevor er läuft.
  • Den Unterschied zwischen den Modi enforce, warn und audit einordnen und begründen, wann welcher Modus sinnvoll ist.
  • Ein zuvor abgewiesenes Pod-Manifest gezielt um securityContext (runAsNonRoot: true, capabilities.drop: [ALL]) ergänzen, bis es die restricted-Policy besteht.
  • Eine EncryptionConfiguration mit dem aescbc-Provider konzeptionell einordnen und den Unterschied zwischen einem Secret vor und nach aktivierter Encryption at Rest direkt gegen etcd nachvollziehen.
  • Encryption at Rest von Vault/External-Secrets-Operator als eigenständigem Betriebsmodell abgrenzen – beide lösen unterschiedliche Probleme, keines ersetzt das andere.
  • Eingebaute Pod Security Admission gegen Policy-Engines wie Kyverno oder OPA Gatekeeper als Ausblick einordnen, ohne Tool-Empfehlung – das Hands-on dazu liegt im eigenständigen Aufbaumodul Kubernetes Admission Controllers & Policy Engines.

Für wen dieses Modul ideal ist

  • • Ops/Admins mit abgeschlossenen Modulen “Kubernetes Administration” und “Kubernetes Anwendungsdesign” oder gleichwertigen Vorkenntnissen
  • • Alle, die demnächst eine Namespace-weite Security-Baseline durchsetzen sollen, statt sich auf einzelne, disziplinierte Manifest-Autor:innen zu verlassen
  • • Teams, die vor dem nächsten Compliance-Audit wissen wollen, was “Secret” in ihrem Cluster tatsächlich bedeutet – kodiert oder verschlüsselt

Rahmendaten

  • • Dauer: 90 Minuten live (remote oder vor Ort)
  • • Format: Input, Live-Demo, zwei Hands-on-Übungen (PSA-Durchsetzung, Secrets-Encryption-at-Rest), Admission-Controller-Ausblick als reiner Konzeptteil
  • • Voraussetzungen: abgeschlossene Module “Kubernetes Administration” und “Kubernetes Anwendungsdesign”, lauffähige lokale Docker-Umgebung für Minikube oder kind, keine Cloud-Kostenwirkung

Modulaufbau & Agenda

  1. Pod Security Standards als Konzept (15 min): die drei Profile privileged/baseline/restricted, Abgrenzung zum bereits gelehrten securityContext — Workload-lokal vs. Namespace-weite Policy.

  2. Hands-on 1: Pod Security Admission (25 min, Hands-on): Namespace-Label pod-security.kubernetes.io/enforce=restricted setzen, einen Pod mit privilegierten Feldern live abgewiesen sehen, danach den Unterschied zu warn/audit zeigen.

  3. Secrets jenseits Base64 (20 min): Encryption at Rest via EncryptionConfiguration als Konzept, kein Cloud-KMS nötig, Abgrenzung zu Vault/External-Secrets-Operator als Betriebsmodell.

  4. Admission-Controller-Konzept: eingebaut vs. Policy-Engines (15 min): PSA gegen Kyverno/OPA Gatekeeper als Ausblick, ohne vollständiges Hands-on — Scope-Grenze offen benannt, keine unbelegte Tool-Empfehlung, mit Verweis auf das Aufbaumodul Kubernetes Admission Controllers & Policy Engines für das dortige Hands-on.

  5. Puffer/Q&A (15 min): offene Fragen, individuelle Vertiefung je nach Compliance-Anforderung der Teilnehmenden.

Dieses Modul setzt zwei Vertiefungsmodule voraus: Kubernetes Administration — RBAC, Node-Betrieb und Cluster-Netzwerk für RBAC und ServiceAccounts, die hier als bekannt gelten und nicht wiederholt werden, sowie Kubernetes Anwendungsdesign — Multi-Container-Patterns, Jobs & Security Context für den securityContext, der ebenfalls als bekannt vorausgesetzt und nicht erneut eingeführt wird. Wer einen der beiden Kurse noch nicht abgeschlossen hat, sollte ihn zuerst buchen.

Dieses Modul vertieft damit konkret zwei Vorgängerkurse gleichzeitig, anders als die sieben gleichrangigen Vertiefungsmodule auf “Kubernetes Workloads & Konfiguration”, die jeweils nur das gemeinsame Workloads-Fundament voraussetzen.

Wer den Ausblick aus Block 4 dieses Moduls – eingebaute Pod Security Admission gegen Policy-Engines – in ein echtes Hands-on überführen will, findet das im aufbauenden Modul Kubernetes Admission Controllers & Policy Engines — Kyverno vs. OPA Gatekeeper. Der dort behandelte Admission-Webhook-Mechanismus setzt genau auf dem hier gelehrten Pod-Security-Admission-Konzept auf.

Hands-on Inhalte (Auszug)

Namespace mit restricted-Policy

  • Namespace secure-demo mit dem Label pod-security.kubernetes.io/enforce=restricted anlegen
  • Ein Pod-Manifest mit privileged: true und ohne runAsNonRoot anwenden und die Admission-Fehlermeldung violates PodSecurity “restricted:latest” live lesen

Manifest bis zur Zulassung nachschärfen

  • Dasselbe Manifest um securityContext mit runAsNonRoot: true und capabilities.drop: [ALL] ergänzen
  • Erneut anwenden und live bestätigen, dass der Pod jetzt läuft – derselbe Namespace, dieselbe Policy, ein konformes Manifest

Secret vor Encryption at Rest

  • Ein Secret anlegen und den gespeicherten Wert direkt über etcdctl get gegen etcd auslesen
  • Den lesbaren Base64-Wert im Rohzugriff live bestätigen – derselbe Zugriffsweg, den Angreifer:innen mit etcd-Zugriff hätten

Secret nach Encryption at Rest

  • EncryptionConfiguration mit aescbc-Provider aktivieren und denselben Secret-Wert erneut per etcdctl get auslesen
  • Den jetzt verschlüsselten Inhalt dem vorherigen Klartext-Base64-Wert gegenüberstellen

Dieses Modul ist Teil unserer Pilotphase. Gemeinsam mit euch definieren wir passende Metriken (z. B. Zeit von der Namespace-Policy bis zum zugelassenen Manifest) und werten sie im Anschluss transparent aus. Ergebnisse veröffentlichen wir, sobald sie belastbar sind.

Bereit, das Modul zu buchen?

Wir passen die Hands-on-Übung auf euren Erfahrungsstand und eure Zielumgebung an.

Academy Briefing anfragen