Apptiva Logo

SecretSpec

Software-secrets werden meist mit händisch erstellen Lösungen oder Skripten in die Entwicklungsumgebung oder an die Produktiv-Anwendung übergeben, oder oft sogar manuell aus dem Secret-Store kopiert. SecretSpec vereinheitlicht dies unabhängig von der zugrundeliegenden Secret-Quelle.

Publiziert am von Patrik Stutz

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.