Secrets Management
Die Plattform verwendet SOPS zur Verwaltung sensibler Daten innerhalb der GitOps-Repositories.
Secrets verbleiben verschlüsselt im Repository und werden erst während der Reconciliation durch FluxCD entschlüsselt.
Ziele
-
GitOps-kompatibles Secret Management
-
Schutz sensibler Daten im Repository
-
Versionierung von Secrets
-
Reproduzierbare Deployments
Architektur
Secret
|
v
SOPS
|
v
Git Repository
|
v
FluxCD
|
v
Kubernetes Secret
Unverschlüsselte Secrets werden niemals im Repository gespeichert.
Age Schlüssel
FluxCD Bootstrap
FluxCD Integration
FluxCD unterstützt die automatische Entschlüsselung von SOPS-verschlüsselten Ressourcen.
Beispiel:
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: application
spec:
decryption:
provider: sops
secretRef:
name: sops-age
Der Age-Schlüssel wird im Namespace flux-system bereitgestellt.
Während der Reconciliation entschlüsselt FluxCD die Ressourcen automatisch.
Verwendete Ressourcen
SOPS wird für Kubernetes Secrets verwendet.
Typische Inhalte:
-
Zugangsdaten
-
API Keys
-
Datenbank Passwörter
-
DNS Provider Credentials
-
Object Storage Credentials
Repository-Konfiguration
Die Verschlüsselung wird über .sops.yaml gesteuert.
Beispiel:
creation_rules:
- age: age1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Schlüsselrotation
Empfohlene Vorgehensweise:
-
Neuen Age-Schlüssel erzeugen
-
.sops.yamlaktualisieren -
Secrets erneut verschlüsseln
-
Neues Secret
sops-ageim Cluster erzeugen -
Alten Schlüssel entfernen
Die Rotation sollte regelmäßig überprüft werden.
Disaster Recovery
Für die Wiederherstellung werden benötigt:
-
Git Repository
-
Age Private Key
-
SOPS Konfiguration
Ohne den privaten Age-Schlüssel können gespeicherte Secrets nicht wiederhergestellt werden.