Dieser Beitrag gibt dir eine kurze Einführung in das Open-Source-Tool SecretSpec und erklärt, warum es eine gute Wahl für dein nächstes Projekt sein könnte. Er richtet sich an Entwickler, die Secrets auf ihren Entwicklungsmaschinen sauberer und sicherer verwalten wollen.
Warum Secret-Management wichtig ist
Secret-Management ist immer ein heißes Thema, besonders im Zeitalter von KI-Agenten, in dem Secrets noch einfacher und schneller geleakt werden können. Umgebungsvariablen-Dateien sind eine schlechte Idee. Sie sind mühsam zu pflegen, und man kann sie leicht leaken, selbst wenn man sie in der .gitignore ausgeschlossen hat. SecretSpec adressiert dies, indem es die committete Deklaration der Secrets von der Wertespeicherung und -bereitstellung trennt. Der Artikel Where env went wrong erklärt die Gründe für diesen Ansatz im Detail.
Das Leitprinzip ist Scoping. Secrets sollten nur dort verfügbar sein, wo sie benötigt werden, und nur für die Anwendungen zugänglich sein, die sie brauchen. Passwörter im Home-Verzeichnis oder in .env-Dateien zu speichern, verletzt dieses Prinzip und ist immer eine schlechte Idee.
Was SecretSpec macht
SecretSpec stellt eine Schnittstelle und ein Schema für deine Entwicklungsumgebung bereit, um zu definieren, welche Secrets in einem Projekt verfügbar sein müssen und wie sie abgerufen werden. Es funktioniert hauptsächlich, indem es den Zielbefehl wrappt, zum Beispiel secretspec run -- myCommand. Die Secrets werden nur diesem Befehl als Umgebungsvariablen bereitgestellt, nicht deiner gesamten Shell.
So bleiben die Secrets außerhalb deines Repositorys. Aber natürlich gibt es auch einen Provider für sops und age, falls du sie im Repository behalten möchtest. Das könnte besonders für GitOps-Tooling wie Flux interessant sein.
Das Tool bietet außerdem lokales Audit-Logging, sodass du erkennen kannst, welche Secrets von wem verwendet wurden. Für noch bessere Integration und Sicherheit gibt es ein SDK für die gängigsten Programmiersprachen.
Wichtige Fakten:
- Es werden mehrere Provider unterstützt, zum Beispiel 1Password, Unix Pass sowie age- und sops-Dateien. Damit bekommst du eine einheitliche Schnittstelle für alle deine Secret-Provider und eine einzige Datei für alle deine Secret-Deklarationen.
- Eine Auto-Generierungs-Funktion kann lokale Secrets erzeugen und im Secret-Store ablegen.
- SecretSpec erlaubt die Verwendung mehrerer Profile, zum Beispiel eines
dev- und einesprod-Profils.
Beispiel-Nutzung
SecretSpec ist ein einfaches CLI-Tool. Folge einfach den Installationsanweisungen aus dem Quick Start.
Definiere eine secretspec.toml im Projekt-Root:
Das Beispiel definiert zwei Profile. Im dev-Profil wird das Secret bei jedem Lauf auf jeder Maschine neu generiert und verlässt die lokale Maschine nie, weil es den null-Provider nutzt. Im prod-Profil wird ein Secret aus einem 1Password-Vault gelesen — und generiert, falls es noch nicht existiert — während ein anderes auf ein bestehendes 1Password-Item verweist. Der Scope myApp beschränkt den Zugriff auf nur die Secrets, die er auflistet.
Jetzt kannst du die Secrets für das dev-Profil so nutzen:
Wenn du nur scoped Secrets mit deiner Anwendung teilen möchtest, zum Beispiel mit dem prod-Profil:
Natürlich muss dein 1Password-Tooling für dieses Beispiel korrekt eingerichtet sein, siehe auch Get started with 1Password CLI.
Du kannst dein aktuelles Setup jederzeit mit folgendem Befehl prüfen:
Auditing
Du kannst alle Operationen auf Secrets mit dem Audit-Log prüfen. Das geht einfach über die Kommandozeile:
Der Grund wird beim Ausführen des Befehls angegeben:
Du kannst die Audit-Logs auch manuell prüfen:
Das ergibt ein strukturiertes Audit-Log wie dieses:
Falls nachverfolgbar, kann das Audit-Log sogar prüfen, ob ein Coding-Agent auf deine Secrets zugegriffen hat. Siehe auch Audit Logging, um zum Beispiel den Pfad zu überschreiben.
Zusammenfassung
SecretSpec bietet eine einheitliche Schnittstelle für alle Secrets deines Projekts und bringt dich einen Schritt näher zu besserem Secret-Management. Das Projekt entwickelt sich weiter, und weitere Features und Integrationen werden folgen.
Weitere Artikel in diesem Themenbereich
Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.
Blog-Autor*in
Florian
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.
Du hast noch Fragen zu diesem Thema? Dann sprich mich einfach an.