Für sensible Daten muss man die Verschlüsselungsschlüssel in der Public Cloud selber verwalten können. Man nennt dies allgemein Customer Managed Encryption Key, kurz CMEK. Die meisten Public Cloud Provider stellen dazu verschiedene Möglichkeiten zur Verfügung, welche verschiedene Schutzbedürfnisse adressieren. Neben der eigentlichen Schlüsselverwaltung unterscheiden sich diese Verfahren hauptsächlich darin, wo 1) diese Schlüssel generiert und gespeichert werden und vor allem 2) wo die eigentlich Ver- und Entschlüsselung der Daten stattfindet.
Was sich in der Theorie einfach und schön anhört, ist dann in der Praxis im Detail doch nicht ganz so trivial. Respektive wenn man es an einem Ort besonders sicher machen will, öffnet sich mindestens ein Spalt weit an anderer Stelle eine kleine Unsicherheit. Kurz: CMEK ist mit Aufwand in der Organisation verbunden. Man muss organisieren wie granular man Schlüsselbunde und Schlüssel definiert. Die Schlüsselrotationen müssen dann zum jeweiligen Produkt passen. Nicht bei allen Produkten haben Schlüsselrotationen einen unmittelbaren Effekt, weil die zu Grunde liegenden Daten nicht jedes Mal komplett neu verschlüsselt werden. Das alles muss wieder organisatorisch mit dem Berechtigungskonzept übereinstimmen und effizient sein, schliesslich muss man genau wissen, wer auf Schlüssel Zugriff hat, wer sie generieren und deaktivieren oder gar löschen darf.
Verwendet man, wie es sinnvoll ist, Infrastructur as Code (IaC), hat man in diesem Kontext meist das Problem, dass der User - ein persönlicher oder ein Service-User, je nach dem wie man es auf- und umgesetzt hat - eigentlich zu viele Rechte hat. Denn die IaC-Lösung, bspw. Terraform, braucht das Recht zur Schlüsselverwaltung, damit die notwendigen Ressourcen angelegt und verwaltet werden können. Das aber möchte man eigentlich nicht.
Nachdem wir nun ein paar Probleme mit CMEK aufgefrischt haben, hier ein Lichtblick von Google für die Google Cloud Platform GCP. Google hat vor 3 Wochen Cloud KMS Autokey vorgestellt. Zurzeit befindet sich das Feature noch in der Preview. (Update 24.09.2024: Cloud KMS Autokey ist nun offizielle verfügbar - GA).
Ich empfehle jedoch allen GCP Engineers/Administratoren, sich das Feature einmal anzuschauen. Es bietet unter anderem die folgenden Vorteile:
- Best practise und einheitliche Umsetzungen: Wenn Sie einen Schlüssel anfordern, generiert das Cloud KMS Autokey-Servicekonto automatisch Schlüssel in Übereinstimmung mit den in Cloud KMS Autokey eingebetteten Empfehlungen.
- Erstellung fein granularer Verschlüsselungsschlüssel: Ein neuer Schlüssel wird automatisch mit einer für jeden Ressourcentyp geeigneten Granularität erstellt, was Ihnen eine bessere Kontrolle über Vorgänge wie Crypto-Shredding ermöglicht, wenn Sie einen Schlüssel deaktivieren oder löschen müssen, ohne dass mehrere geschützte Ressourcen betroffen sind.
- Kürzere Wege ohne (Sicherheits-) Kompromisse: Sie erstellen schnell CMEK-geschützte Ressourcen, ohne dass ein Entwickler neue Schlüssel von einem anderen Team anfordern muss (weil er sinnvollerweise nicht selber berechtigt ist).
- Durchgehende Gewaltentrennung: Autorisierte User können einen Schlüssel direkt über das Cloud KMS Autokey-Servicekonto anfordern, wobei die Gewaltentrennung gewahrt bleibt. So müssen bspw. User für Terraform oder andere IaC-Tools, nicht mehr mit erhöhten Privilegien für die Schlüsselerstellung berechtigt werden, was die Sicherheit insgesamt erhöht.
Aus meiner Sicht adressiert Google damit die meisten der heutigen Schmerzpunkte bei der Anwendung von CMEK in der GCP.