- In Entwicklung
- Rails 8.1, PostgreSQL 18, GoodJob, React 19, TypeScript, libsodium, RbNaCl, Thor
Das Problem
Secrets wandern per Chat, liegen in .env-Dateien auf Laptops und stehen doppelt in den
CI-Variablen von GitLab. Niemand weiss verlässlich, welche Werte gerade gültig sind, wer sie
zuletzt gesehen hat und was beim Ausscheiden einer Person rotiert werden müsste. Die üblichen
Secret-Manager lösen das, aber ihr Server kann jeden Wert lesen. Damit verschiebt sich das
Vertrauensproblem nur.
Wie es das löst
Env Manager ordnet Secrets in Workspaces, Projekte und Umgebungen. Verschlüsselt und entschlüsselt wird ausschliesslich beim Client, im Browser über libsodium-wasm und im CLI über RbNaCl. Der Server bekommt Ciphertext und Metadaten. Er kann nichts entschlüsseln, weil er nichts hat, womit er es könnte.
Kein Passwort, kein privater Schlüssel und kein Klartextwert erreichen den Server, und das ist eine Eigenschaft des Aufbaus, nicht eine Betriebsregel.
Was es kann
Ein CLI ohne Rails. envm ist ein Thor-Gem mit RbNaCl und der Standardbibliothek. Sein
Token liegt im Schlüsselbund des Betriebssystems. Die Datei .envm.yml enthält nur Slugs für
Workspace, Projekt und Umgebung und darf deshalb committet werden. In einem frischen Worktree
genügt envm pull.
Injizieren, ohne eine Datei zu schreiben. envm run -- reicht die Werte direkt in den
Prozess. Auf der Platte bleibt nichts liegen.
GitLab-Bindungen gehören dem Server. Welches GitLab-Projekt zu welcher Umgebung gehört, entscheidet und prüft der Server, nicht der aufrufende Client. Ein lokal verwaltetes Projekt kann deshalb keine fremde Projekt-ID unterschieben. Die Bindung ist endgültig, ein Widerruf wird protokolliert.
Jede Änderung ist eine Transaktion. Validieren, autorisieren, ausführen: als
Dry::Transaction mit kaskadierenden Schritten. Der Controller übersetzt nur noch das Ergebnis
in einen HTTP-Status. Alle Antworten unter /api sind Problem Details nach RFC 9457, aus einer
einzigen Quelle.
Rollen und geschützte Umgebungen. Eine Leiter von Guest bis Owner gilt pro Workspace und pro Projekt, die stärkere gewinnt. Geschützte Umgebungen verlangen mindestens Maintainer, auch zum Lesen. Jedes Aufdecken und jeder Export von Secret-Material schreibt eine Audit-Zeile; die Werte selbst stehen weder im Log noch in den Audit-Metadaten.
Was es nicht tut
Es kann einen verlorenen Schlüssel nicht wiederherstellen. Das ist der Preis dafür, dass der Server nichts entschlüsseln kann, und er ist nicht verhandelbar.
Es läuft heute als internes Produktionssystem bei uns selbst. Es gibt keine externen Nutzer und keine Self-Service-Registrierung.
Es rotiert Secrets nicht selbst und spricht heute nur mit GitLab. Andere CI-Systeme sind nicht angebunden.
Env Manager
Auf die Warteliste
Schreiben Sie uns, was Sie damit vorhaben. Wir melden uns, sobald Env Manager für Sie bereitsteht.
Auf die Warteliste