In diesem Thema wird erläutert, wie Daten mit einem symmetrischen Schlüssel für den Cloud Key Management Service neu verschlüsselt werden. Sie können diese Beispiele für asymmetrische Schlüssel anpassen. Wenn Sie den Verdacht haben, dass ein Schlüssel ohne Autorisierung verwendet wird, sollten Sie die durch den betroffenen Schlüssel geschützten Daten neu verschlüsseln und die alte Schlüsselversion anschließend deaktivieren oder zum Löschen vormerken.
Hinweis
Für dieses Szenario gelten die folgenden Voraussetzungen.
Sie haben mit Cloud KMS bereits Daten verschlüsselt.
Die für die Verschlüsselung verwendete Schlüsselversion wurde nicht deaktiviert, zum Löschen vorgemerkt oder gelöscht. Diese Schlüsselversion wird benötigt, um die verschlüsselten Daten zu entschlüsseln.
Sie haben bereits Schlüssel rotiert. Bei Schlüsselrotationen wird eine neue primäre Schlüsselversion erstellt. Sie benötigen die neue primäre Schlüsselversion, um die Daten neu zu verschlüsseln.
Daten mit asymmetrischen Schlüsseln neu verschlüsseln
Die Beispiele in diesem Thema zeigen, wie Daten mit einem symmetrischen Schlüssel noch einmal verschlüsselt werden. Wenn Sie einen symmetrischen Schlüssel verwenden, leitet Cloud KMS automatisch die Schlüsselversion zur Verwendung für die Entschlüsselung ab. Wenn Sie einen asymmetrischen Schlüssel verwenden, müssen Sie die Schlüsselversion angeben.
- Wenn Sie die Google Cloud CLI nach Anleitung verwenden, schließen Sie immer das Flag
--version
mit ein. - Wenn Sie die API nach Anleitung verwenden, verwenden Sie
CryptoKeyVersions
stattCryptoKeys
. Weitere Informationen zur Verschlüsselung und Entschlüsselung von Daten mit einem asymmetrischen Schlüssel
Der Workflow zum erneuten Verschlüsseln von Daten mit asymmetrischen Schlüsseln ähnelt dem in diesem Thema beschriebenen.
Daten verschlüsseln – Workflow
Führen Sie die folgenden Schritte aus, um Daten neu zu verschlüsseln und die Schlüsselversion der ursprünglichen Verschlüsselung zu deaktivieren oder zum Löschen vorzumerken.
Daten mit der neuen primären Schlüsselversion neu verschlüsseln
Alte Schlüsselversion deaktivieren oder zum Löschen vormerken
Daten mit der alten Schlüsselversion entschlüsseln
Cloud KMS entschlüsselt Daten automatisch mit der korrekten Schlüsselversion, wenn sie nicht deaktiviert, zum Löschen vorgemerkt oder gelöscht wurde. Die folgenden Beispiele zeigen, wie Daten entschlüsselt werden. Dabei wird derselbe Entschlüsselungscode verwendet wie unter Daten verschlüsseln und entschlüsseln.
gcloud
Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst die neueste Version der Google Cloud CLI installieren oder ein Upgrade ausführen.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
Ersetzen Sie Folgendes:
KEY_NAME
: Der Name des Schlüssels, den Sie für die Entschlüsselung verwenden möchten.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältLOCATION
: der Cloud KMS-Speicherort, der den Schlüsselbund enthält.FILE_TO_DECRYPT
: der Pfad zur Datei, die Sie entschlüsseln möchten.DECRYPTED_OUTPUT
: der Pfad, unter dem Sie die entschlüsselte Ausgabe speichern möchten.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.
Node.js
Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.
PHP
Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.
Ruby
Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.
API
In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.
Der vom Cloud KMS im JSON-Dokument zurückgegebene entschlüsselte Text ist Base64-codiert.
Erstellen Sie eine POST
-Anfrage und geben Sie das entsprechende Projekt und die Schlüsselinformationen sowie den zu entschlüsselnden verschlüsselten Text (Chiffretext) im Feld ciphertext
des Anfragetexts an, um verschlüsselte Daten zu entschlüsseln.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das den Schlüsselbund und den Schlüssel enthält, die Sie für die Entschlüsselung verwenden möchten.LOCATION
: der Cloud KMS-Speicherort, der den Schlüsselbund enthält.KEY_RING
: Der Schlüsselbund, der den Schlüssel enthält, den Sie für die Entschlüsselung verwenden möchten.KEY_NAME
: Der Name des Schlüssels, den Sie für die Entschlüsselung verwenden möchten.ENCRYPTED_DATA
: die verschlüsselten Daten, die Sie entschlüsseln möchten.
Hier ein Beispiel für eine Nutzlast mit base64-codierten Daten:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Daten mit der neuen primären Schlüsselversion neu verschlüsseln
Cloud KMS verwendet automatisch die neue primäre Schlüsselversion zum Verschlüsseln von Daten. Die folgenden Beispiele zeigen, wie die Daten verschlüsselt werden. Derselbe Verschlüsselungscode wird auch in Daten verschlüsseln und entschlüsseln verwendet.
gcloud
Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst die neueste Version der Google Cloud CLI installieren oder ein Upgrade ausführen.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
Ersetzen Sie Folgendes:
KEY_NAME
: Der Name des Schlüssels, den Sie für die Verschlüsselung verwenden möchten.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältLOCATION
: der Cloud KMS-Speicherort, der den Schlüsselbund enthält.FILE_TO_ENCRYPT
: der Pfad zur Datei, die Sie verschlüsseln möchten.ENCRYPTED_OUTPUT
: der Pfad, unter dem Sie die verschlüsselte Ausgabe speichern möchten.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.
Node.js
Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.
PHP
Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.
Ruby
Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.
API
In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.
Wenn Sie JSON und die REST API verwenden, müssen Inhalte mit base64 codiert sein, bevor sie von Cloud KMS verschlüsselt werden können.
Erstellen Sie eine POST
-Anfrage und geben Sie die entsprechenden Projekt- und Schlüsselinformationen an. Außerdem geben Sie den zu verschlüsselnden base64-codierten Text im Feld plaintext
des Anfragetexts an, um Daten zu verschlüsseln.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das den Schlüsselbund und den Schlüssel enthält, die Sie für die Verschlüsselung verwenden möchten.LOCATION
: der Cloud KMS-Speicherort, der den Schlüsselbund enthält.KEY_RING
: der Schlüsselbund, der den Schlüssel enthält, den Sie für die Verschlüsselung verwenden möchten.KEY_NAME
: Der Name des Schlüssels, den Sie für die Verschlüsselung verwenden möchten.PLAINTEXT_TO_ENCRYPT
: Die Klartextdaten, die Sie verschlüsseln möchten. Der Klartext muss base64-codiert sein, bevor du die Methodeencrypt
aufrufst.
Hier ein Beispiel für eine Nutzlast mit base64-codierten Daten:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Alte Schlüsselversion deaktivieren oder zum Löschen vormerken
Wenn Sie einen Schlüssel als Sicherheitsmaßnahme bei einem vermuteten unautorisierten Zugriff rotiert haben, müssen die Daten neu verschlüsselt werden. Anschließend muss die alte Schlüsselversion deaktiviert oder zum Löschen vorgemerkt werden.
Eine aktivierte Schlüsselversion deaktivieren
Nur eine Schlüsselversion, die aktiviert ist, kann deaktiviert werden. Dazu verwenden Sie die Methode UpdateCryptoKeyVersion
.
Console
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
Klicken Sie auf den Namen des Keyrings, der den Schlüssel enthält, dessen Schlüsselversion Sie deaktivieren möchten.
Klicken Sie auf den Schlüssel, dessen Schlüsselversion Sie deaktivieren möchten.
Klicken Sie auf das Kästchen neben den Schlüsselversionen, die Sie deaktivieren möchten.
Klicken Sie im Header auf Deaktivieren.
Klicken Sie in der Bestätigungsaufforderung auf Deaktivieren.
gcloud
Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst die neueste Version der Google Cloud CLI installieren oder ein Upgrade ausführen.
gcloud kms keys versions disable key-version \ --key key \ --keyring key-ring \ --location location
Ersetzen Sie key-version durch die Version des Schlüssels, die deaktiviert werden soll. Ersetzen Sie key durch den Namen des Schlüssels. Ersetzen Sie key-ring durch den Namen des Schlüsselbunds, in dem sich der Schlüssel befindet. Ersetzen Sie location durch den Cloud KMS-Standort für den Schlüsselbund.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.
Node.js
Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.
PHP
Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.
Ruby
Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.
Schlüsselversion zum Löschen vormerken
Nur eine Schlüsselversion, die aktiviert oder deaktiviert ist, kann zum Löschen vorgemerkt werden. Dies geschieht mit der Methode DestroyCryptoKeyVersion
.
Console
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
Klicken Sie das Kästchen neben der Schlüsselversion an, deren Löschen Sie planen möchten.
Klicken Sie im Header auf Löschen.
Geben Sie in der Bestätigungsaufforderung den Schlüsselnamen ein und klicken Sie auf Löschung planen.
gcloud
Wenn Sie Cloud KMS in der Befehlszeile verwenden möchten, müssen Sie zuerst die neueste Version der Google Cloud CLI installieren oder ein Upgrade ausführen.
gcloud kms keys versions destroy KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION
Ersetzen Sie Folgendes:
KEY_VERSION
: die Versionsnummer der Schlüsselversion, die Sie löschen möchten.KEY_NAME
: Der Name des Schlüssels, für den Sie eine Schlüsselversion löschen möchten.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthältLOCATION
: der Cloud KMS-Speicherort des Schlüsselbunds.
Wenn Sie Informationen zu allen Flags und möglichen Werten erhalten möchten, führen Sie den Befehl mit dem Flag --help
aus.
C#
Um diesen Code auszuführen, müssen Sie zuerst eine C#-Entwicklungsumgebung einrichten und das Cloud KMS C# SDK installieren.
Go
Um diesen Code auszuführen, müssen Sie zuerst eine Go-Entwicklungsumgebung einrichten und das Cloud KMS Go SDK installieren.
Java
Um diesen Code auszuführen, müssen Sie zuerst eine Java-Entwicklungsumgebung einrichten und das Cloud KMS Java SDK installieren.
Node.js
Um diesen Code auszuführen, richten Sie zuerst eine Node.js-Entwicklungsumgebung ein und installieren Sie das Cloud KMS Node.js SDK.
PHP
Um diesen Code auszuführen, müssen Sie zuerst PHP in Google Cloud verwenden lernen und das Cloud KMS PHP SDK installieren.
Python
Um diesen Code auszuführen, müssen Sie zuerst eine Python-Entwicklungsumgebung einrichten und das Cloud KMS Python SDK installieren.
Ruby
Um diesen Code auszuführen, müssen Sie zuerst eine Ruby-Entwicklungsumgebung einrichten und das Cloud KMS Ruby SDK installieren.
API
In diesen Beispielen wird curl als HTTP-Client verwendet, um die Verwendung der API zu demonstrieren. Weitere Informationen zur Zugriffssteuerung finden Sie unter Auf die Cloud KMS API zugreifen.
Rufen Sie die Methode CryptoKeyVersions.destroy auf, um eine Schlüsselversion zu löschen.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions/KEY_VERSION:destroy" \ --request "POST" \ --header "authorization: Bearer TOKEN"