Mozilla SOPS für Secrets
Was dieser Artikel über Mozilla SOPS behandelt
- Was SOPS ist und wofür es gedacht ist.
- Wie man SOPS mit Age oder PGP verwendet.
- Wie man YAML-, JSON- und .env-Dateien verschlüsselt.
- Wie SOPS in Git und CI/CD integriert wird.
- Typische Stolpersteine und Best Practices.
Einleitung: Mozilla SOPS für Secrets
Mozilla SOPS ist ein Open-Source-Editor für verschlüsselte Dateien. Damit lassen sich YAML-, JSON-, .env- oder BINARY-Dateien mit PGP, Age oder Cloud-KMS-Schlüsseln verschlüsseln. SOPS ist besonders beliebt, weil es nur die Werte verschlüsselt und die Schlüssel im Klartext lässt. Dadurch bleiben Dateien versionierbar und übersichtlich.
Für lokale KI-Projekte ist SOPS praktisch, um Konfigurationsdateien mit API-Keys oder Datenbankpasswörtern sicher in Git zu speichern und gleichzeitig im Team zu teilen.
Wichtige Begriffe
- SOPS: Secrets OPerationS, ein Verschlüsselungstool von Mozilla.
- Age: Moderne Alternative zu PGP, einfacher und sicherer.
- PGP: Klassisches Verschlüsselungsverfahren.
- Master Key: Zentrale Verschlüsselungsschlüssel.
- Data Key: Schlüssel, mit dem die eigentlichen Werte verschlüsselt werden.
- .sops.yaml: Konfigurationsdatei für Schlüssel und Verschlüsselungsregeln.
- KMS: Cloud-Key-Management-Service.
Warum SOPS?
- Nur Werte verschlüsselt: Schlüssel bleiben lesbar, Werte nicht.
- Mehrere Schlüssel: Ein Schlüssel pro Datei oder pro Projekt.
- Git-freundlich: Versionsverlauf bleibt nutzbar.
- Mehrere Backends: Age, PGP, AWS KMS, GCP KMS, Azure Key Vault.
- CI/CD-Integration: Entschlüsselung im Deployment.
- Kein Vendor-Lock-in: Offener Standard, lokal betreibbar.
Installation
SOPS steht für Linux, macOS und Windows bereit:
wget https://github.com/getsops/sops/releases/download/v3.9.0/sops-v3.9.0.linux.amd64 -O sops
chmod +x sops
sudo mv sops /usr/local/bin/
Age-Schlüssel erzeugen
age-keygen -o key.txt
Die Datei key.txt enthält den öffentlichen und privaten Schlüssel. Der private Schlüssel muss sicher aufbewahrt werden.
Erste verschlüsselte Datei
Eine YAML-Datei erstellen:
anthropic_api_key: DEIN_ANTHROPIC_KEY
ollama_host: http://localhost:11434
Verschlüsseln:
sops --age $(cat key.txt | grep "public key" | cut -d ' ' -f 3) -e -i secrets.yaml
Das Ergebnis ist eine Datei, bei der die Werte verschlüsselt und die Schlüssel lesbar sind.
Entschlüsseln und bearbeiten
Anzeigen:
sops -d secrets.yaml
Bearbeiten:
sops secrets.yaml
SOPS öffnet den Standardeditor, zeigt die entschlüsselten Werte an und verschlüsselt sie nach dem Speichern erneut.
.sops.yaml für automatische Regeln
creation_rules:
- path_regex: \.env\.dev$
age: AGE_PUBLIC_KEY
- path_regex: \.env\.prod$
age: AGE_PUBLIC_KEY_PROD
So werden Dateien automatisch mit dem passenden Schlüssel verschlüsselt.
.env-Dateien verschlüsseln
sops --input-type dotenv --output-type dotenv -e .env > .env.enc
Zur Laufzeit:
eval $(sops -d --output-type dotenv .env.enc)
Integration in CI/CD
Im GitHub Actions-Workflow:
- name: Decrypt secrets
env:
SOPS_AGE_KEY: ${{ secrets.SOPS_AGE_KEY }}
run: |
sops -d secrets.yaml > secrets_decrypted.yaml
Der private Age-Key wird als Repository-Secret hinterlegt.
SOPS vs. dotenvx und Secret-Manager
- SOPS: Dateibasiert, Git-freundlich, lokal.
- dotenvx: Fokus auf .env-Dateien, einfache Verschlüsselung.
- HashiCorp Vault: Zentrale Verwaltung, dynamische Secrets.
- Infisical: Team-Secret-Manager mit Web-UI.
SOPS ist ideal für Konfigurationsdateien, die in Git liegen sollen.
Typische Stolpersteine
- Privaten Schlüssel verlieren: Werte sind ohne Schlüssel nicht entschlüsselbar.
- Falsches Format angeben:
--input-type dotenvfür .env-Dateien. - Schlüssel in Git committen: Nur öffentliche Schlüssel in
.sops.yaml, private niemals. - Falsche Schlüssel für Umgebung:
.sops.yamlRegeln prüfen. - Aktualisierung vergessen: Nach dem Bearbeiten immer speichern und committen.
Weiterführende Links und Infos
FAQ: Mozilla SOPS
Ist SOPS kostenlos? Ja, es ist Open Source.
Sollte ich PGP oder Age nutzen? Für neue Projekte ist Age einfacher und moderner.
Kann ich SOPS mit Docker nutzen? Ja, der SOPS-Binary kann in Container-Images integriert werden.
Wer kann die Dateien entschlüsseln? Jeder, der einen hinterlegten privaten Schlüssel besitzt.
Sind SOPS-Dateien sicher in öffentlichen Repos? Ja, wenn nur die öffentlichen Schlüssel und die verschlüsselten Werte enthalten sind.
Quellen und weiterführende Literatur
- SOPS GitHub: https://github.com/getsops/sops
- SOPS Docs: https://getsops.io/docs/
- Age: https://age-encryption.org/
Zusammenfassung: Mozilla SOPS für Secrets
Mozilla SOPS ist ein mächtiges Werkzeug, um Konfigurationsdateien mit verschlüsselten Werten in Git zu speichern. Es eignet sich besonders für .env, YAML- und JSON-Dateien in lokalen KI-Projekten. Age ist die empfohlene Schlüsselmethode für neue Projekte. Wichtig sind der sichere Umgang mit dem privaten Schlüssel, korrekte Formateinstellungen und saubere .sops.yaml-Regeln. Wer SOPS beherrscht, hat eine flexible und transparente Alternative zu reinen Secret-Managern.


