Informationen zu vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-managed Encryption Keys, CMEK)

Auf dieser Seite wird beschrieben, wie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) mit Memorystore for Redis funktionieren. Wie Sie dieses Feature sofort nutzen können, erfahren Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden.

Ist CMEK etwas für mich?

Vom Kunden verwaltete Verschlüsselungsschlüssel sind für Organisationen mit vertraulichen oder regulierten Daten gedacht, für die eigene Verschlüsselungsschlüssel verwaltet werden müssen.

Von Google und vom Kunden verwaltete Verschlüsselung im Vergleich

Mit dem CMEK-Feature können Sie für inaktive Daten in Memorystore for Redis Ihre eigenen kryptografischen Schlüssel verwenden. Nachdem Sie vom Kunden verwaltete Verschlüsselungsschlüssel hinzugefügt haben, verwendet Memorystore bei jedem API-Aufruf Ihren Schlüssel für den Datenzugriff.

Memorystore verwendet von Google verwaltete Datenverschlüsselungsschlüssel (Data Encryption Keys, DEKs) und Schlüsselverschlüsselungsschlüssel (Key Encryption Keys, KEKs), um Memorystore for Redis zu verschlüsseln. Es gibt zwei Verschlüsselungsebenen:

  • Der DEK verschlüsselt Daten.
  • Der KEK verschlüsselt den DEK.

Die Memorystore-Instanz speichert den verschlüsselten DEK zusammen mit den verschlüsselten Daten im nichtflüchtigen Speicher und Google verwaltet den Google-KEK. Mit vom Kunden verwalteten Verschlüsselungsschlüsseln erstellen Sie einen Schlüssel, der den Google-KEK umschließt. Mit vom Kunden verwalteten Verschlüsselungsschlüsseln können Sie den KEK erstellen, widerrufen und löschen.

Kundenseitig verwaltete Verschlüsselungsschlüssel werden über die Cloud Key Management Service API verwaltet.

Die folgenden Diagramme zeigen, wie die Verschlüsselung inaktiver Daten in einer Memorystore-Instanz funktioniert, wenn entweder die standardmäßige Google-Verschlüsselung oder vom Kunden verwaltete Verschlüsselungsschlüssel verwendet werden.

Ohne CMEK

Die Daten werden auf Google hochgeladen, dann in Blöcke aufgeteilt und jeder Block wird mit einem eigenen Datenverschlüsselungsschlüssel verschlüsselt. Datenverschlüsselungsschlüssel werden mit einem Schlüsselverschlüsselungsschlüssel verpackt. Bei der standardmäßigen Google-Verschlüsselung wird der Schlüsselverschlüsselungsschlüssel aus dem internen Schlüsselspeicher von Google abgerufen. Verschlüsselte Blöcke und verpackte Verschlüsselungsschlüssel werden über die Speicherinfrastruktur von Google verteilt.

Mit CMEK

Die Daten werden auf Google hochgeladen, dann in Blöcke aufgeteilt und jeder Block wird mit einem eigenen Datenverschlüsselungsschlüssel verschlüsselt. Datenverschlüsselungsschlüssel werden mit einem Schlüsselverschlüsselungsschlüssel verpackt. Bei CMEK unter Verwendung von Cloud KMS wird der Schlüsselverschlüsselungsschlüssel vom Cloud KMS abgerufen. Verschlüsselte Blöcke und verpackte Verschlüsselungsschlüssel werden über die Speicherinfrastruktur von Google verteilt.

Beim Entschlüsseln von Daten, die mit vom Kunden verwalteten Verschlüsselungsschlüsseln verpackt sind, verwendet Memorystore den KEK, um den DEK zu entschlüsseln, und den unverschlüsselten DEK, um inaktive Daten zu entschlüsseln.

Mit DEK verschlüsselter und mit verpacktem DEK gespeicherter Datenblock. Eine Anfrage zum Entpacken des DEK wird an den KMS-Speicher gesendet, in dem der nicht exportierbare KEK gespeichert wird. Der KMS-Speicher gibt den entpackten DEK zurück.

Wann interagiert Memorystore mit CMEK-Schlüsseln?

Aktion Beschreibung
Instanzerstellung Während der Erstellung einer Instanz konfigurieren Sie die Instanz für die Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln.
Instanzaktualisierung Memorystore prüft den CMEK-Schlüssel bei Aktualisierungen einer CMEK-fähigen Instanz.

Welche Daten werden mit CMEK verschlüsselt?

CMEK verschlüsselt die folgenden Datentypen:

Informationen zu Dienstkonten

Wenn Sie eine Instanz mit CMEK erstellen, müssen Sie dem Memorystore-Dienstkonto die Rolle cloudkms.cryptoKeyEncrypterDecrypter zuweisen. Das Konto muss dabei das folgende Format haben:

  • service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Wenn Sie diese Berechtigung gewähren, kann das Dienstkonto den Schlüsselzugriff von Cloud KMS anfordern.

Eine Anleitung zum Gewähren dieser Berechtigung für das Dienstkonto finden Sie unter Dem Dienstkonto Zugriff auf den Schlüssel gewähren.

Informationen zu Schlüsseln

In Cloud KMS müssen Sie einen Schlüsselbund mit einem kryptografischen Schlüssel erstellen, der einen symmetrischen Verschlüsselungs-/Entschlüsselungsalgorithmus verwendet. Wenn Sie eine neue Memorystore-Instanz erstellen, wählen Sie diesen Schlüssel aus, um die Instanz zu verschlüsseln. Sie können ein Projekt sowohl für Schlüssel als auch für Memorystore-Instanzen erstellen oder für beide jeweils ein separates Projekt erstellen.

CMEK sind an allen Memorystore-Instanzstandorten verfügbar. Die Region für Schlüssel und Schlüsselbund muss mit der Region der Memorystore for Redis-Instanz übereinstimmen. Ein Schlüssel für mehrere Regionen oder für eine globale Region funktioniert nicht. Eine Anfrage zum Erstellen einer Memorystore-Instanz schlägt fehl, wenn die Regionen nicht übereinstimmen.

CMEK für Memorystore ist mit Cloud External Key Manager (Cloud EKM) kompatibel.

Vom Kunden verwaltete Verschlüsselungsschlüssel haben folgendes Format:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Wenn Memorystore nicht auf eine derzeit verwendete Schlüsselversion zugreifen kann (z. B. wenn Sie die Schlüsselversion deaktivieren), schaltet Memorystore die Instanz unverzüglich aus. In der Google Cloud Console wird bei einer angehaltenen Instanz auf der Seite Instanzen eine Kurzinfo mit einem roten Ausrufezeichen angezeigt. Wenn Sie den Mauszeiger auf die Kurzinfo bewegen, wird „Kein Status“ angezeigt. Sobald der Schlüssel wieder zugänglich ist, setzt Memorystore die Instanz automatisch fort.

Wie kann ich CMEK-verschlüsselte Daten dauerhaft unzugänglich machen?

Es kann vorkommen, dass Sie mit CMEK verschlüsselte Daten dauerhaft löschen möchten. Löschen Sie dazu die Version des vom Kunden verwalteten Verschlüsselungsschlüssels. Sie können zwar den Schlüsselbund oder Schlüssel nicht löschen, aber Sie können Versionen des Schlüssels löschen.

Wie exportiere und importiere ich Daten aus einer und in eine CMEK-fähige Instanz?

Wenn Ihre Daten während eines Exports oder Imports mit einem vom Kunden verwalteten Schlüssel verschlüsselt bleiben sollen, müssen Sie vor dem Exportieren von Daten in den Cloud Storage-Bucket einen vom Kunden verwalteten Verschlüsselungsschlüssel festlegen.

Es gibt keine besonderen Anforderungen oder Einschränkungen für den Import von Daten in eine neue Memorystore-Instanz, wenn die Daten zuvor auf einer CMEK-fähigen Memorystore-Instanz gespeichert wurden.

Verhalten beim Löschen/Deaktivieren einer CMEK-Schlüsselversion

Wenn Sie keinen Datenzugriff auf Ihre Instanz zulassen möchten, können Sie die primäre Schlüsselversion Ihres vom Kunden verwalteten Verschlüsselungsschlüssels deaktivieren. Dadurch wird Ihre Instanz unverzüglich heruntergefahren. Außerdem wird eine Instanz von Memorystore unverzüglich heruntergefahren, wenn ein verwendeter vom Kunden verwalteter Verschlüsselungsschlüssel deaktiviert oder gelöscht wird. Dazu gehören auch ältere Schlüsselversionen, die noch von einer Memorystore-Instanz verwendet werden. Sie können entweder gcloud oder die Google Cloud Console verwenden, um zu prüfen, ob Ihre Instanz gesperrt ist:

Wenn Ihre Instanz in der Google Cloud Console gesperrt ist, wird auf der Seite Instanzen von Memorystore for Redis neben der Instanz eine rote Kurzinfo angezeigt. Wenn Sie den Mauszeiger darauf bewegen, wird in der Kurzinfo „Kein Status“ angezeigt.

Wenn Sie in gcloud gcloud beta redis instances describe ausführen und in den Instanzmetadaten weder state: READY noch state: REPAIRING oder einen anderen Status sehen, ist Ihre Instanz gesperrt.

Eine verwendete CMEK-Schlüsselversion wieder aktivieren/wiederherstellen

Eine Instanz wird wieder angezeigt, nachdem eine verwendete CMEK-Schlüsselversion wieder aktiviert oder wiederhergestellt wurde.

Beschränkungen

Die folgenden Einschränkungen gelten für die Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln mit Memorystore:

  • Sie können keine vom Kunden verwalteten Verschlüsselungsschlüssel auf einer vorhandenen Memorystore-Instanz aktivieren.
  • Die Region für den Schlüssel, den Schlüsselbund und die Memorystore-Instanz muss identisch sein.
  • Sie müssen den Algorithmus für die symmetrische Verschlüsselung/Entschlüsselung für Ihren Schlüssel verwenden.
  • Verschlüsselungs- und Entschlüsselungsraten für Cloud KMS unterliegen einem Kontingent.

CMEK-Organisationsrichtlinien

Memorystore for Redis unterstützt Einschränkungen für Organisationsrichtlinien, die für den CMEK-Schutz verwendet werden können.

Richtlinien können einschränken, welche Cloud KMS-Schlüssel für den CMEK-Schutz verwendet werden können.

  • Wenn sich die Memorystore for Redis API in der Richtlinienliste Deny für Dienste unter der Einschränkung constraints/gcp.restrictNonCmekServices befindet, schlägt das Erstellen von Memorystore for Redis für Instanzen fehl, die nicht CMEK-geschützt sind.

  • Wenn constraints/gcp.restrictCmekCryptoKeyProjects konfiguriert ist, erstellt Memorystore for Redis CMEK-geschützte Instanzen, die mit einem Schlüssel aus einem zulässigen Projekt, Ordner oder einer Organisation verschlüsselt werden.

Weitere Informationen zum Konfigurieren von CMEK-Organisationsrichtlinien finden Sie unter CMEK-Organisationsrichtlinien.