SOPS
Zweck
SOPS wird zur Verschlüsselung sensibler Daten innerhalb der Plattform verwendet.
Sowohl FluxCD als auch TOPF nutzen SOPS zur Verwaltung vertraulicher Informationen.
Ziele
-
Schutz sensibler Daten
-
Einheitliche Secret-Verwaltung
-
Reproduzierbare Infrastruktur
-
GitOps-kompatibler Betrieb
Architektur
+--> FluxCD
|
SOPS ---------- +
|
+--> TOPF
Die Plattform verwendet einen gemeinsamen Mechanismus für Kubernetes- und Cluster-Secrets.
Schlüsselverwaltung
Die Verschlüsselung erfolgt über Age.
Es wird ein zentraler Age-Schlüssel verwendet.
Der private Schlüssel wird außerhalb der Git-Repositories gespeichert.
Ein Verlust des privaten Schlüssels verhindert die Entschlüsselung vorhandener Secrets.
Verschlüsselte Ressourcen
Aktuell werden ausschließlich Kubernetes Secrets verschlüsselt.
Üblicherweise werden folgende Felder geschützt:
data:
stringData:
Andere Kubernetes-Ressourcen werden derzeit nicht verschlüsselt.
Beispiel
Unverschlüsselt:
apiVersion: v1
kind: Secret
metadata:
name: example
stringData:
password: secret
Verschlüsselt:
apiVersion: v1
kind: Secret
metadata:
name: example
stringData:
password: ENC[AES256_GCM,...]
sops:
...
TOPF Integration
Cluster-Secrets werden ebenfalls mit SOPS verschlüsselt gespeichert.
Typische Dateien:
secrets.yaml
.sops.yaml
TOPF verarbeitet die entschlüsselten Werte zur Erzeugung der Talos-Konfiguration.
Vorteile
-
Einheitliche Secret-Verwaltung
-
Integration mit FluxCD und TOPF
-
Secrets verbleiben verschlüsselt im Repository
-
Keine zusätzlichen Secret-Management-Systeme erforderlich
Einschränkungen
-
Schutz hängt vom privaten Age-Schlüssel ab
-
Schlüsselverlust verhindert die Entschlüsselung vorhandener Secrets
-
Keine automatische Secret-Rotation