Skip to content
BotServBotServ
Mozilla SOPSSOPSSecretsVerschlüsselungAgePGP

Mozilla SOPS für Secrets

Secrets mit Mozilla SOPS in YAML, JSON und ENV verschlüsseln. PGP, Age, Git und Integration in KI-Projekte.

S

schutzgeist

3 min read
Mozilla SOPS für Secrets

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 dotenv für .env-Dateien.
  • Schlüssel in Git committen: Nur öffentliche Schlüssel in .sops.yaml, private niemals.
  • Falsche Schlüssel für Umgebung: .sops.yaml Regeln prüfen.
  • Aktualisierung vergessen: Nach dem Bearbeiten immer speichern und committen.

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

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.

Zurück zum KI Blog
Share:

Ähnliche Beiträge