Warum Ihr Team eine Secret-Richtlinie braucht (nicht nur einen Tresor)
Sie betreten einen Teamraum und fragen fünf Entwickler, wo sie die Datenbank-Passwörter aufbewahren. Einer zeigt auf eine .env-Datei im Projektverzeichnis. Ein anderer hat eine private Notiz in seinem Passwort-Manager. Ein Dritter hat ein API-Token als Kommentar im Code hinterlassen, direkt über der Funktion, die es verwendet. Der vierte Entwickler schwört, er habe es in den Tresor gelegt, aber niemand sonst kann es finden. Der Fünfte zuckt nur mit den Schultern.
Das ist kein Sicherheitsversagen. Es ist ein Koordinationsversagen. Jeder Entwickler hatte einen Grund für seine Wahl. Die .env-Datei war schnell. Die private Notiz war bequem. Der Code-Kommentar war sichtbar. Der Tresor-Eintrag war technisch korrekt, aber undokumentiert. Das Achselzucken war ehrlich.
Das Problem ist nicht, dass es Secrets gibt. Das Problem ist, dass es keine gemeinsame Regel gibt, wie Secrets im Team und über Umgebungen hinweg verwaltet werden. Ohne eine Richtlinie optimiert jeder Entwickler seinen eigenen Workflow, und das Ergebnis ist Inkonsistenz. Inkonsistenz bedeutet, dass Sie nicht garantieren können, dass Produktions-Secrets genauso behandelt werden wie Entwicklungs-Secrets. Sie können nicht garantieren, dass ein rotiertes Secret jede Umgebung erreicht. Sie können nicht garantieren, dass ein ehemaliges Teammitglied keinen Zugriff mehr hat.
Eine Secret-Richtlinie ist kein formales Dokument, das nach einmaligem Lesen abgeheftet wird. Es ist eine Reihe von Regeln, die in die Vault-Konfiguration und das Pipeline-Verhalten übersetzt werden. Das Ziel ist einfach: Egal welche Umgebung Sie betrachten, Secrets werden auf die gleiche Weise abgerufen und verwaltet.
Wer darf worauf zugreifen
Die erste Regel betrifft den Zugriff. Wer darf ein Secret in der Entwicklung lesen? Wer darf ein Secret in der Produktion lesen? Das sind nicht dieselben Fragen.
In der Entwicklung benötigen die meisten Teammitglieder Zugriff auf Secrets, damit die Anwendung auf ihrem lokalen Rechner läuft. Das ist in Ordnung. Das Risiko ist gering, und die Blockierung des Zugriffs würde alle ausbremsen. Aber in der Produktion muss der Zugriff eingeschränkt werden. Nicht jeder Entwickler muss das Produktions-Datenbank-Passwort oder das API-Token des Zahlungsgateways kennen. Das Prinzip hier ist „Least Privilege“: Jede Person oder jedes System erhält nur die Secrets, die für ihre Aufgabe erforderlich sind.
Die Durchsetzung erfolgt über Vault-Policies. Eine Policy definiert, welche Pfade ein Benutzer oder System lesen darf. Beispielsweise könnte secret/development/* für alle Teammitglieder lesbar sein, während secret/production/* nur für die Deployment-Pipeline und einige wenige designierte Senior Engineers lesbar ist. Dies ist keine schriftliche Regel, die manuell befolgt werden muss. Es ist eine Konfiguration, die der Vault erzwingt. Wenn ein Entwickler versucht, ein Produktions-Secret von seinem Laptop aus zu lesen, verweigert der Vault den Zugriff. Das Audit-Log zeichnet den Versuch auf.
Umgebungen trennen
Die zweite Regel betrifft die Grenzen zwischen Umgebungen. Produktions-Secrets dürfen niemals in der Entwicklung oder im Staging verwendet werden. Entwicklungs-Secrets dürfen niemals in die Produktion gelangen.
Das klingt offensichtlich, passiert aber häufiger, als man denkt. Ein Team hat es eilig. Sie müssen eine Funktion testen, die mit einem externen Dienst kommuniziert. Anstatt separate Test-Anmeldedaten zu erstellen, kopieren sie das Produktions-Token ins Staging. Der Test funktioniert. Niemand erinnert sich daran, es zu entfernen. Später protokolliert ein Entwickler versehentlich die Staging-Umgebungsvariablen, und das Produktions-Token landet in einer Logdatei, die für das gesamte Team sichtbar ist. Jetzt ist die Produktion aufgrund einer Staging-Abkürzung gefährdet.
Die Durchsetzung hier ist strukturell. Separate Vault-Pfade pro Umgebung. Die Entwicklungspipeline hat nur Zugriff auf den Entwicklungspfad. Die Staging-Pipeline hat nur Zugriff auf den Staging-Pfad. Die Produktionspipeline hat nur Zugriff auf den Produktionspfad. Wenn eine Pipeline versucht, ein Secret aus einer anderen Umgebung zu lesen, verweigert der Vault den Zugriff und protokolliert den Versuch. Hier geht es nicht um Vertrauen. Es geht darum, die falsche Aktion unmöglich zu machen.
Rotation muss automatisiert sein
Die dritte Regel betrifft die Rotation. Wie oft sollten Secrets geändert werden? Die Antwort hängt von der Umgebung ab.
Entwicklungs-Secrets können seltener rotiert werden. Wenn ein Entwicklungs-Datenbank-Passwort durchsickert, ist der Schaden auf das Team beschränkt. Eine Rotation alle drei Monate ist in der Regel ausreichend. Produktions-Secrets müssen häufiger rotiert werden. Einmal im Monat ist eine vernünftige Baseline. Jedes Mal, wenn ein Teammitglied das Unternehmen verlässt, sollten Produktions-Secrets, auf die es Zugriff hatte, sofort rotiert werden.
Der entscheidende Punkt ist, dass die Rotation automatisiert sein muss. Menschen vergessen Dinge. Menschen sind beschäftigt. Menschen nehmen Abkürzungen, wenn eine Deadline naht. Die Pipeline sollte die Rotation nach einem Zeitplan durchführen. Wenn ein Secret bis zum geplanten Datum nicht rotiert wurde, sollte die Pipeline dies melden oder Deployments blockieren, bis die Rotation erfolgt ist. Es geht nicht darum, das Team zu bestrafen. Es geht darum, die kognitive Last des Erinnerns an die Rotation zu beseitigen.
Plan für die Wiederherstellung
Die vierte Regel betrifft die Wiederherstellung. Secrets gehen verloren. Vault-Pfade werden versehentlich gelöscht. Jemand rotiert ein Secret und vergisst, den nachgelagerten Dienst zu aktualisieren. Wenn das passiert, braucht das Team eine Möglichkeit zur Wiederherstellung, ohne die Anwendungskonfiguration zu ändern.
Die meisten Vaults bieten eine Versionshistorie. Ein gelöschtes Secret kann auf eine vorherige Version zurückgesetzt werden. Aber die Richtlinie muss definieren, wer zur Wiederherstellung berechtigt ist und wie der Vorgang protokolliert wird. Die Wiederherstellung sollte keine freie Aktion sein, die jeder durchführen kann. Sie sollte eine Genehmigung erfordern und einen Prüfpfad hinterlassen. Andernfalls wird die Wiederherstellung zu einer Hintertür, die alle anderen Regeln umgeht.
Machen Sie es durchsetzbar
Alle diese Regeln sind nutzlos, wenn sie nur als Dokument existieren. Eine Secret-Richtlinie, die in einem Wiki lebt und nie in eine Konfiguration übersetzt wird, ist keine Richtlinie. Es ist ein Vorschlag.
Drei Komponenten machen eine Secret-Richtlinie real:
- Vault-Policies, die Zugriffsregeln pro Umgebung durchsetzen.
- Pipelines, die pro Umgebung isoliert sind und Pfade nicht kreuzen können.
- Audit-Logs, die regelmäßig überprüft werden, nicht nur gespeichert.
Ohne diese drei Komponenten ist die Richtlinie nur heiße Luft. Mit ihnen wird die Richtlinie zum Standardverhalten des Systems. Entwickler müssen sich die Regeln nicht merken. Das System setzt sie automatisch durch.
Praktische Checkliste
Wenn Sie eine Secret-Richtlinie für Ihr Team einrichten, hier eine kurze Liste, die Sie durcharbeiten sollten:
- Definieren Sie, welche Vault-Pfade von welchen Rollen pro Umgebung gelesen werden können.
- Konfigurieren Sie Vault-Policies, um diese Regeln durchzusetzen, nicht nur zu dokumentieren.
- Trennen Sie den Pipeline-Zugriff, sodass jede Umgebung nur auf ihre eigenen Secrets zugreifen kann.
- Legen Sie Rotationszeitpläne pro Umgebung fest und automatisieren Sie sie in der Pipeline.
- Definieren Sie, wer gelöschte Secrets wiederherstellen kann und wie die Wiederherstellung protokolliert wird.
- Überprüfen Sie Audit-Logs mindestens einmal im Monat auf unerwartete Zugriffsversuche.
Das Fazit
Ein Secret-Vault ist ein Werkzeug. Eine Secret-Richtlinie ist das Regelwerk, das das Werkzeug nützlich macht. Ohne die Richtlinie ist der Vault nur ein weiterer Ort, an dem Secrets inkonsistent gespeichert werden. Mit der Richtlinie wird der Vault zu einem System, das erzwingt, wie Secrets in jeder Umgebung, die Ihr Team betreibt, abgerufen, rotiert und wiederhergestellt werden. Beginnen Sie mit den Regeln, dann konfigurieren Sie den Vault, um sie durchzusetzen. Das ist der Unterschied zwischen einem Secret-Management-Tool und echtem Secret-Management.