Back openDesk Edu for a sovereign, open-source education — every vote counts.
Vote nowSave products you love by clicking the heart icon.
Data-driven survey of open-source Kubernetes security tools from a 2,080-repo corpus — scanning, secrets, policy, runtime, and supply chain integrity.
GitOps verspricht eine einzige Quelle der Wahrheit (Single Source of Truth) für die Infrastruktur: die gesamte Konfiguration in Git, automatisch synchronisiert mit der Produktion. Secrets brechen dieses Versprechen. Datenbankpasswörter, API-Token und TLS-Zertifikate können nicht im Klartext in einem Git-Repository gespeichert werden, aber man kann sie auch nicht außerhalb von Git verwalten, ohne die Reproduzierbarkeit und den Audit-Trail zu verlieren, die GitOps bietet.
Dieser Artikel behandelt fünf praxiserprobte Muster für die Verwaltung von Secrets in GitOps-Workflows, sortiert nach Komplexität und Funktionsumfang.
Sealed Secrets ermöglichen es, Kubernetes Secrets in SealedSecret-Custom-Resources zu verschlüsseln, die sicher in Git gespeichert werden können. Nur der im Cluster laufende Controller kann diese entschlüsseln.
kubeseal, um ein Secret in ein SealedSecret zu verschlüsselnkubeseal --format yaml < secret.yaml > sealed-secret.yaml
# Encrypt a literal value
echo -n "my-db-password" | kubeseal --raw \
--name db-password \
--namespace production \
--from-file=/dev/stdin
| Aspekt | Gegenmaßnahme |
|---|---|
| Key Rotation | Regelmäßige Rotation des Verschlüsselungs-Keys des Controllers |
| Audit Trail | Git-Log zeigt, wer was wann verschlüsselt hat |
| Disaster Recovery | Sicherung des privaten Keys des Controllers |
| Multi-Cluster | Unterschiedliche Keys pro Cluster; pro Cluster verschlüsseln |
Der External Secrets Operator synchronisiert Secrets von externen Providern (AWS Secrets Manager, GCP Secret Manager, Azure Key Vault, HashiCorp Vault) in Kubernetes Secrets.
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-credentials
namespace: production
spec:
refreshInterval: 1h
secretStoreRef:
name: vault-backend
kind: SecretStore
target:
name: db-credentials
data:
- secretKey: password
remoteRef:
key: secret/production/database
property: password
SOPS (Secrets OPerationS) ist ein Tool zur Verschlüsselung auf Dateiebene. Sie verschlüsseln einzelne Werte in YAML-Dateien, während die Struktur lesbar bleibt:
apiVersion: v1
kind: Secret
metadata:
name: api-credentials
type: Opaque
stringData:
api_key: ENC[AES256_GCM,data:encrypted-base64,iv:...,tag:...]
Sops verschlüsselt spezifische Werte in Ihrem YAML, und ArgoCD-Plugins oder CI-Pipelines entschlüsseln diese während der Synchronisation. So bleibt das vollständige Secret-Manifest in Git, während sensible Werte geschützt werden.
Für Teams, die bereits Vault einsetzen, ersetzt das Vault-Plugin von ArgoCD (argocd-vault-plugin) Vault-Secrets während der Synchronisation:
apiVersion: v1
kind: Secret
metadata:
name: app-config
annotations:
avp.kubernetes.io/path: "secret/data/production/app"
type: Opaque
stringData:
db_password: <vault:secret/data/production/app#db_password>
Der CSI Secrets Store Driver mountet Secrets als Volumes – niemals als Kubernetes Secrets. Dies ist das sicherste Muster, da Secrets niemals in etcd gelangen:
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: vault-db
spec:
provider: vault
parameters:
vaultAddress: https://vault.example.com
roleName: app-role
objects: |
- objectName: db_password
secretPath: secret/data/production/database
secretKey: password
| Muster | Komplexität | Sicherheit | Git Audit | Bestens geeignet für |
|---|---|---|---|---|
| Sealed Secrets | Niedrig | Mittel | Vollständig | Kleine Teams, statische Secrets |
| External Secrets | Mittel | Hoch | Teilweise | Cloud-native, dynamische Secrets |
| SOPS | Mittel | Mittel | Vollständig | Verschlüsselung auf Dateiebene |
| Vault Plugin | Hoch | Hoch | Teilweise | Bestehende Vault-Nutzer |
| CSI Driver | Hoch | Höchste | Teilweise | Maximale Sicherheitsanforderungen |
Für die meisten Teams zu Beginn bietet Sealed Secrets die beste Balance aus Sicherheit, Einfachheit und Git-nativem Workflow. Wenn Ihre Infrastruktur skaliert, ist die Ergänzung durch den External Secrets Operator für dynamische Secrets (rotierende Datenbankpasswörter, API-Token mit Ablaufdatum) der natürliche nächste Schritt.