SecretSpec bietet ein einheitliches Interface um Anwendungs-Secrets zu managen. Es bietet einerseit ein standardisiertes Datei-Format um zudefinieren welche Secrets und welche Environments (z.B. Prod, Test, Dev) es gibt, und woher diese bezogen werden sollen (z.B. SOPS, Vault, Bitwarden, Google Secret Manager).
Andererseits bietet es ein CLI, mit welchem diese Secrets verwaltet, abgerufen und an die Anwendung oder die Entwicklungsumgebung übergeben werden können.
Der Vorteil: Man muss nicht mehr bei jedem Projekt zuerst herausfinden welche Secrets benötigt werden und woher diese bezogen werden sollen. Zudem kann auch geprüft werden, ob wirklch alle Secrets vorhanden sind, welche die Anwendung benötigt. Die Konfigurationsdatei ist hier die Dokumentation.
Entwickler müssen nur noch den Umgang mit einem Tool lernen, egal wo und wie die Secrets dieses Projekts abgelegt sind.
Es ist über das CLI auch möglich neue Secrets anzulegen, oder den Wert von bestehenden Secrets zu ändern, ohne mit dem eigentlichen Secret-Store zu interagieren.
Hier ein Beispiel einer Konfiguration, in welcher sämtliche Secrets sämtliche Secrets verschlüsselt mittels SOPS in der Datei “secrets.yaml” abgelegt werden:
[project]
name = "secretspec-test"
revision = "1.0"
[profiles.default]
SECRET_1 = { description = "secret 1", required = true }
SECRET_2 = { description = "secret 2", required = true }
[defaults]
providers = ["sops"]
[providers]
sops = "sops://secrets.yaml
Anders als bei vielen anderen Standars ist Secretspec meines Wissens der erste Versuch einen Standard für den Umgang mit Secrets zu etablieren.