Sealed Secrets: geheimen veilig opslaan in Git
GitOps stelt dat Git de enige bron van waarheid is — maar hoe verhoud je dat tot geheimen die nooit in leesbare vorm in een repository mogen staan? Sealed Secrets lost dit op met asymmetrische versleuteling.
Een kernprincipe van GitOps is dat Git de enige bron van waarheid is voor de gewenste staat van een cluster. Dat botst met een even fundamenteel beveiligingsprincipe: geheimen (wachtwoorden, API-sleutels) horen nooit in leesbare vorm in versiebeheer te staan, ook niet in een privérepository. Sealed Secrets (oorspronkelijk van Bitnami) lost deze spanning op met asymmetrische versleuteling.
Het principe: versleutelen met een publieke sleutel
Een engineer gebruikt de kubeseal-CLI om een gewone Kubernetes Secret te versleutelen met de publieke sleutel van de Sealed Secrets-controller die in het doelcluster draait. Het resultaat is een SealedSecret-custom resource: een versleutelde blob die veilig gecommit kan worden naar Git, want zonder de bijbehorende privésleutel is de inhoud onleesbaar.
Ontsleutelen kan alleen in het cluster
Zodra de SealedSecret via GitOps wordt toegepast op het cluster, herkent de daar draaiende Sealed Secrets-controller — die als enige de privésleutel bezit — het object en ontsleutelt het automatisch tot een gewone Kubernetes Secret. Buiten dat specifieke cluster is de versleutelde waarde nutteloos: zelfs iemand met volledige leestoegang tot de Git-repository kan de oorspronkelijke waarde niet terugrekenen zonder de privésleutel.
Verschil met External Secrets Operator
Waar de External Secrets Operator geheimen ophaalt uit een externe, centrale secrets manager, keert Sealed Secrets de aanpak om: het geheim wordt lokaal versleuteld en direct in Git opgeslagen, zonder externe afhankelijkheid. Dat maakt Sealed Secrets eenvoudiger op te zetten voor kleinere teams, maar mist functionaliteit die een dedicated secrets manager wel biedt, zoals dynamische, tijdelijke credentials en centraal auditlog van alle toegang.
Examentip: Verlies je de privésleutel van de Sealed Secrets-controller (bijvoorbeeld bij een clusterherinstallatie zonder back-up van die sleutel), dan kunnen alle bestaande SealedSecrets nooit meer ontsleuteld worden — back-up die sleutel dus net zo zorgvuldig als je andere kroonjuwelen.