Informationen zu diesem Codelab
1. Übersicht
Cloud KMS ist ein in der Cloud gehosteter Schlüsselverwaltungsdienst, mit dem Sie kryptografische Schlüssel Ihrer Cloud-Dienste genauso wie lokal bei Ihnen vor Ort verwalten können. Es unterstützt die Verschlüsselung, Entschlüsselung, Signatur und Überprüfung mit einer Vielzahl von Schlüsseltypen und ‑quellen, einschließlich Cloud HSM für auf Hardware gesicherte Schlüssel. In dieser Anleitung erfahren Sie, wie Sie Daten mit asymmetrischen Cloud KMS-Schlüsseln signieren und verifizieren.
Sie lernen
- Cloud KMS API aktivieren
- So erstellen Sie einen Schlüsselbund
- Crypto-Schlüssel für die asymmetrische Signatur/Bestätigung erstellen
2. Einrichtung und Anforderungen
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie eines erstellen.
Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird später in diesem Codelab als PROJECT_ID
bezeichnet.
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Die Ausführung dieses Codelabs sollte nur wenige Kosten verursachen, wenn überhaupt. Folgen Sie unbedingt der Anleitung im Abschnitt „Bereinigen“, um Ressourcen herunterzufahren, damit keine weiteren Kosten anfallen. Neuen Nutzern der Google Cloud Platform steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.
Cloud Shell starten
In diesem Codelab verwenden Sie Cloud Shell, eine kostenlose virtualisierte Umgebung, die in Google Cloud ausgeführt wird. Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf der Google Cloud, wodurch Netzwerkleistung und Authentifizierung deutlich verbessert werden. Führen Sie alle Befehle, sofern nicht anders angegeben, über diese Shell aus.
3. Cloud KMS-Dienst aktivieren
Bevor Sie Cloud KMS verwenden können, müssen Sie den Dienst in Ihrem Projekt aktivieren. Dies muss nur einmal pro Projekt durchgeführt werden. Führen Sie den folgenden Befehl aus, um den Cloud KMS-Dienst zu aktivieren:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
Die Aktivierung kann bis zu einer Minute dauern. Nach Abschluss des Befehls wird ein Erfolg gemeldet.
4. KMS-Schlüssel erstellen
Erstellen Sie einen Cloud KMS-Schlüsselbund. In Cloud KMS ist ein Schlüsselbund eine logische Sammlung kryptografischer Schlüssel. Der Schlüsselbund enthält Metadaten zu den Schlüsseln, z. B. ihren Speicherort. Erstellen Sie in der global
-Region einen Schlüsselbund mit dem Namen my-keyring
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Erstellen Sie jetzt einen Kryptoschlüssel mit dem Namen my-asymmetric-signing-key
und dem Zweck asymmetric-signing
im gerade erstellten Schlüsselbund.
$ gcloud kms keys create "my-asymmetric-signing-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-signing" \ --default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. Signaturdaten
Im Gegensatz zur Verschlüsselung ist für die Entschlüsselung von Daten, die mit einem asymmetrischen Cloud KMS-Schlüssel verschlüsselt wurden, ein Onlinezugriff auf den Cloud KMS-Dienst erforderlich. Entschlüsseln Sie den Geheimtext aus der Datei mit dem gcloud
-Befehlszeilentool:
Erstellen Sie eine Datei mit zu signierenden Daten und verwenden Sie das Befehlszeilentool gcloud
, um die Daten mit dem Cloud KMS-Schlüssel zu signieren:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --version "1" \ --digest-algorithm "sha512" \ --input-file ./data.txt \ --signature-file ./data.txt.sig
Die Signatur wird auf dem Laufwerk in data.txt.sig
gespeichert. Wenn Sie die data.txt.sig
-Datei öffnen, stellen Sie fest, dass sie seltsame, nicht druckbare Zeichen enthält. Das liegt daran, dass die resultierenden Daten im Binärformat vorliegen.
Wenn Sie die Signatur in einer Datenbank speichern oder als Teil einer HTTP-Anfrage übertragen, müssen Sie die Daten möglicherweise codieren. Ein gängiger Codierungsmechanismus ist Base64.
6. Daten prüfen
Bei asymmetrischen Schlüsseln führt Cloud KMS die Überprüfung nicht direkt durch. Stattdessen bietet es Zugriff auf einen öffentlichen Schlüssel und Sie verifizieren Daten mit diesem öffentlichen Schlüssel über die Public-Key-Kryptografie. Bei asymmetrischen Schlüsseln kann die Überprüfung vollständig offline erfolgen und erfordert keinen Zugriff auf Cloud KMS oder andere Google Cloud APIs. Die Überprüfung erfolgt mit einem kryptografischen Tool wie openssl
oder mit einer Programmiersprache oder Bibliothek, die Public-Key-Kryptografie unterstützt.
Laden Sie den öffentlichen Schlüssel aus Cloud KMS herunter:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-signing-key" \ --output-file ./key.pub
Prüfen Sie die Signatur mit dem openssl
-Befehlszeilentool anhand des öffentlichen Schlüssels:
$ openssl dgst -sha256 \ -verify ./key.pub \ -signature ./data.txt.sig ./data.txt
In der Console wird eine Erfolgsmeldung angezeigt, dass die digitale Signatur gültig ist.
Verified OK
7. Glückwunsch!
Sie haben die Cloud KMS API aktiviert, einen asymmetrischen Signaturschlüssel erstellt und Daten signiert und verifiziert. Cloud KMS ist ein leistungsstarkes Produkt und Signatur/Bestätigung ist nur ein kleiner Teil seiner Funktionen.
Aufräumen
Wenn Sie mit der explorativen Datenanalyse fertig sind, sollten Sie Ihr Projekt löschen.
- Rufen Sie die Cloud Platform Console auf.
- Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie oben auf „Löschen“. Dadurch wird das Projekt zum Löschen geplant.
Weitere Informationen
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.