Ein gehärteter Cluster ist einer, der nie ungehärtet war
Ich zeige dir ein Passwort aus einem Kubernetes-Cluster. Ohne kubectl, ohne Login, ohne ein einziges Recht im Cluster. Nur Lesezugriff auf eine Datei:
sesam-oeffne-dich-4711
Das ist der Klartext-Wert eines Kubernetes-Secrets, direkt aus der Datei, in der k3s seinen kompletten Zustand speichert. k3s legt alles in eine einzelne SQLite-Datenbank auf der Platte, und Kubernetes-Secrets sind ohne eigenes Zutun nur base64-kodiert. base64 ist aber keine Verschlüsselung, sondern eine Umschrift, die jeder in beide Richtungen liest.
Das Beunruhigende ist nicht der Trick. Es ist, dass ein frisches k3s aus dem Schnellstart-Einzeiler genau so aussieht: Secrets im Klartext, privilegierte Pods erlaubt, die API erreichbar. Man kann das alles nachträglich einschalten. Nur schützt das rückwirkend nichts:
Ein gehärteter Cluster ist einer, der nie ungehärtet war.
Der Unterschied ist keine Kosmetik. secrets-encryption nachträglich einschalten verschlüsselt nur, was danach geschrieben wird, die Bestandssecrets bleiben offen. Und ein privilegierter Pod, der vor der Härtung gestartet ist, läuft einfach weiter, denn die Pod Security Standards prüfen beim Erzeugen, nicht im Betrieb. Nachträglich härten heißt hoffen, dass aus der offenen Zeit nichts übrig ist.
| Video ansehen → |
Im Video baue ich den Cluster so, dass es diese offene Zeit nie gibt. Vier Zeilen k3s-Config liegen über cloud-init auf der Platte, bevor die Installation überhaupt startet: verschlüsselte Secrets, eine Datei, die privilegierte Pods ab dem allerersten Pod ablehnt, und eine API, die nur durch den WireGuard-Tunnel aus Teil 1 erreichbar ist. Danach werfe ich den Cluster live weg und baue ihn mit einem Kommando identisch wieder auf.
Und ich zeige den Zombie-Pod: einen privilegierten Container, der vor der Härtung gestartet ist und danach munter weiterläuft, obwohl der Cluster gehärtet aussieht. Das ist der eigentliche Grund, warum die Reihenfolge zählt.
Zum Ausdrucken und Weitergeben: die vier Config-Zeilen, die Admission-Datei, die Prüf-Kommandos und das Wegwerf-Rezept, als Spickzettel im PDF-Format, vier Seiten, auch fürs Team.
Lieber lesen als schauen? Die Langfassung mit allen Nachweisen steht als Beitrag im Blog, inklusive der Frage, was secrets-encryption wirklich schützt und wo die Grenze liegt.
Der Satz, der davon bleibt: Wer vor dem ersten Start härtet, muss nicht wissen, was aus der ungehärteten Zeit übrig ist. Es gab keine.
Bis nächste Woche,
Christian