Dieses Thema bietet einen Überblick über Cloud HSM. Außerdem erfahren Sie, wie Sie HSM-geschützte Verschlüsselungsschlüssel in Cloud Key Management Service erstellen und verwenden.
Was ist Cloud HSM?
Cloud HSM ist ein in der Cloud gehosteter HSM-Dienst (Hardware Security Module), mit dem Sie Verschlüsselungsschlüssel hosten und kryptografische Vorgänge in einem Cluster von zertifizierten HSMs auf FIPS 140-2 Level 3 ausführen können. Google verwaltet den HSM-Cluster für Sie, sodass Sie sich keine Gedanken über Clustering, Skalierung oder Patching machen müssen. Da Cloud HSM Cloud KMS als Front-End verwendet, können Sie alle Features von Cloud KMS nutzen.
Schlüsselbund erstellen
Wenn Sie einen Schlüssel erstellen, fügen Sie ihn einem Schlüsselbund an einem bestimmten Google Cloud-Speicherort hinzu. Sie können einen neuen Schlüsselbund erstellen oder einen vorhandenen verwenden. In diesem Thema erstellen Sie einen neuen Schlüsselbund und fügen ihm einen neuen Schlüssel hinzu.
Erstellen Sie einen Schlüsselbund an einem Google Cloud-Standort, der Cloud HSM unterstützt.
Console
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
Klicken Sie auf Schlüsselbund erstellen.
Geben Sie unter Schlüsselbundname einen Namen für den Schlüsselbund ein.
Wählen Sie unter Schlüsselbund-Speicherort einen Standort wie
"us-east1"
aus.Klicken Sie auf Erstellen.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
-
Führen Sie in Ihrer Umgebung den Befehl
gcloud kms keyrings create
aus:gcloud kms keyrings create KEY_RING \ --location LOCATION
Ersetzen Sie Folgendes:
KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.LOCATION
: 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.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Projekts, das den Schlüsselbund enthält.KEY_RING
: der Name des Schlüsselbunds, der den Schlüssel enthält.LOCATION
: der Cloud KMS-Speicherort des Schlüsselbunds.
Weitere Informationen finden Sie in der KeyRing.create
API-Dokumentation.
Schlüssel erstellen
Führen Sie die folgenden Schritte aus, um einen Cloud HSM-Schlüssel für den angegebenen Schlüsselbund und Speicherort zu erstellen.
Console
Rufen Sie in der Google Cloud Console die Seite Schlüsselverwaltung auf.
Klicken Sie auf den Namen des Schlüsselbunds, für den Sie einen Schlüssel erstellen.
Klicken Sie auf Schlüssel erstellen.
Wählen Sie unter Welchen Schlüsseltyp möchten Sie erstellen? die Option Generierter Schlüssel aus.
Geben Sie im Feld Schlüsselname einen Namen für den Schlüssel ein.
Klicken Sie auf das Drop-down-Menü Schutzstufe und wählen Sie HSM aus.
Klicken Sie auf das Drop-down-Menü Zweck und wählen Sie Symmetrisches Ver-/Entschlüsseln aus.
Übernehmen Sie die Standardwerte für Rotationszeitraum und Beginnt am.
Klicken Sie auf Erstellen.
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 auf die neueste Version durchführen.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
Geben Sie für key einen Namen für den neuen Schlüssel an. Ersetzen Sie key-ring durch den Namen des vorhandenen Schlüsselbunds, in dem sich der Schlüssel befinden wird. Ersetzen Sie location durch den Cloud KMS-Speicherort 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.
Daten verschlüsseln
Mit dem erstellten Schlüssel können Sie Text oder binären Inhalt verschlü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 auf die neueste Version durchführen.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
Ersetzen Sie key durch den Namen des Schlüssels, der für die Verschlüsselung verwendet werden soll. 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. Ersetzen Sie file-with-data-to-encrypt und file-to-store-encrypted-data durch die lokalen Dateipfade, um die Klartextdaten zu lesen und die verschlüsselte Ausgabe zu speichern.
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 base-64 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-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
Hier ein Beispiel für eine Nutzlast mit base64-codierten Daten:
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
Geheimtext entschlüsseln
Zum Entschlüsseln von verschlüsselten Inhalten müssen Sie den gleichen Schlüssel verwenden, mit dem auch der Inhalt verschlüsselt wurde.
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 auf die neueste Version durchführen.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
Ersetzen Sie key durch den Namen des Schlüssels, der für die Entschlüsselung verwendet werden soll. Ersetzen Sie key-ring durch den Namen des Schlüsselbunds, in dem sich der Schlüssel befinden wird. Ersetzen Sie location durch den Cloud KMS-Standort für den Schlüsselbund. Ersetzen Sie file-path-with-encrypted-data und file-path-to-store-plaintext durch die lokalen Dateipfade, um die verschlüsselten Daten zu lesen und die entschlüsselte Ausgabe zu speichern.
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
-Anforderung und geben Sie das entsprechende Projekt und die Schlüsselinformationen sowie den verschlüsselten Text 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-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
Hier ein Beispiel für eine Nutzlast mit base64-codierten Daten:
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
Weitere Informationen
Beim Verschlüsselungsbeispiel in diesem Thema wurde ein symmetrischer Schlüssel mit dem Schutzniveau HSM verwendet. Führen Sie die Schritte unter Daten mit einem asymmetrischen Schlüssel verschlüsseln und entschlüsseln mit diesen Änderungen aus, um eine Codierung mit einem asymmetrischen Schlüssel mit dem Schutzniveau HSM durchzuführen:
- Erstellen Sie den Schlüsselbund in einer der unterstützten Regionen für Cloud HSM.
- Erstellen Sie den Schlüssel mit dem Schutzniveau HSM.
Wenn Sie einen asymmetrischen Schlüssel mit dem Schutzniveau HSM für Elliptische-Kurven-Signaturen oder RSA-Signaturen verwenden möchten, führen Sie die Schritte unter Signaturen erstellen und validieren mit diesen Änderungen aus:
- Erstellen Sie den Schlüsselbund in einer der unterstützten Regionen für Cloud HSM.
- Erstellen Sie den Schlüssel mit dem Schutzniveau HSM.
Mit der Verwendung der API beginnen.
Die Cloud KMS API-Referenz ansehen.
Lesen Sie Anleitungen, um mit dem Erstellen, Rotieren und Festlegen von Berechtigungen für Schlüssel zu beginnen.
Lesen Sie die Konzepte, um mehr über Objekthierarchie, Schlüsselstatus und Schlüsselrotation zu erfahren.
Weitere Informationen zu Logging in Cloud KMS. Beachten Sie, dass das Logging auf Vorgängen basiert und für Schlüssel mit HSM- und Softwareschutzniveau gilt.
Weitere Informationen zum Schutz Ihrer Daten durch Cloud HSM finden Sie im Whitepaper zur Cloud HSM-Architektur.
Bekannte Einschränkungen
Die Nachrichtengröße ist für vom Nutzer bereitgestellten Klartext und Geheimtext, einschließlich der zusätzlichen authentifizierten Daten, auf 8 KiB (im Gegensatz zu 64 KiB für Cloud KMS-Softwareschlüssel) begrenzt.
Cloud HSM ist möglicherweise in bestimmten Multi- oder Dual-Regionen nicht verfügbar. Weitere Informationen finden Sie unter Unterstützte Regionen für Cloud HSM.
Wenn Sie Cloud HSM-Schlüssel mit Integrationen für vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) in anderen Google Cloud-Diensten verwenden, müssen die Standorte, die Sie für die Dienste verwenden, mit den Speicherorten Ihrer Cloud HSM-Schlüssel genau übereinstimmen. Dies gilt für regionale, dual-regionale und multiregionale Standorte.
Weitere Informationen zu CMEK-Integrationen finden Sie im entsprechenden Abschnitt des Artikels Verschlüsselung inaktiver Daten.
Derzeit können Schlüsselvorgänge für asymmetrische Schlüssel, die in Cloud HSM gespeichert sind, im Vergleich zur Verwendung von Cloud KMS-Softwareschlüsseln eine deutlich höhere Latenz verursachen.
Bare-Metal-Rack HSM
Google Cloud bietet zusätzliche HSM-Optionen, z. B. Einzelmandantenfähigkeit. Mit Bare-Metal-Rack-HSMs können Kunden ihre eigenen HSMs im von Google bereitgestellten Bereich hosten. Weitere Informationen erhalten Sie von Ihrem Kundenbetreuer.