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, Signierung und Überprüfung mit einer Vielzahl von Schlüsseltypen und Quellen, einschließlich Cloud HSM für hardwaregestützte Schlüssel. In dieser Anleitung erfahren Sie, wie Sie Daten mit asymmetrischen Cloud KMS-Schlüsseln verschlüsseln und entschlüsseln.
ERFAHREN SIE MEHR
- Cloud KMS API aktivieren
- Schlüsselbund erstellen
- So erstellen Sie einen kryptografischen Schlüssel für die asymmetrische Verschlüsselung/Entschlüsselung
2. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder G Suite-Konto haben, müssen Sie ein Konto 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 in diesem Codelab später als PROJECT_ID
bezeichnet.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.
Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. Neue Google Cloud-Nutzer können an einem kostenlosen Testzeitraum mit 300$Guthaben teilnehmen.
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 dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:
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. Sofern nicht anders angegeben, führen Sie alle Befehle über diese Shell aus.
3. Cloud KMS-Dienst aktivieren
Bevor Sie Cloud KMS verwenden können, müssen Sie den Dienst zuerst in Ihrem Projekt aktivieren. Dies muss nur einmal pro Projekt erfolgen. 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. Der Befehl meldet Erfolg, wenn er abgeschlossen ist.
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. deren Position. Erstellen Sie in der Region global
einen Schlüsselbund namens my-keyring
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Erstellen Sie nun im soeben erstellten Schlüsselbund einen kryptografischen Schlüssel mit dem Namen my-asymmetric-encryption-key
und dem Zweck asymmetric-encryption
.
$ gcloud kms keys create "my-asymmetric-encryption-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "asymmetric-encryption" \ --default-algorithm "rsa-decrypt-oaep-4096-sha512"
5. Daten verschlüsseln
Bei asymmetrischen Schlüsseln führt Cloud KMS die Verschlüsselung nicht durch. Stattdessen erhalten Sie Zugriff auf einen öffentlichen Schlüssel und Sie verschlüsseln die Daten mit diesem öffentlichen Schlüssel mithilfe von Public-Key-Kryptografie. Mit asymmetrischen Schlüsseln kann die Verschlüsselung vollständig offline erfolgen und erfordert keinen Zugriff auf Cloud KMS oder andere Google Cloud APIs. Die Verschlüsselung erfolgt mithilfe eines kryptografischen Tools wie openssl
oder mit einer Programmiersprache oder Bibliothek, die Public-Key-Kryptografie unterstützt.
Laden Sie den öffentlichen Schlüssel von Cloud KMS herunter:
$ gcloud kms keys versions get-public-key "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --output-file ./key.pub
Erstellen Sie eine Datei mit den zu verschlüsselnden Daten und verwenden Sie das openssl
-Befehlszeilentool, um die Daten in der Datei zu verschlüsseln:
$ echo "my-contents" > ./data.txt
$ openssl pkeyutl -encrypt -pubin \ -in ./data.txt \ -inkey ./key.pub \ -pkeyopt "rsa_padding_mode:oaep" \ -pkeyopt "rsa_oaep_md:sha512" \ -pkeyopt "rsa_mgf1_md:sha512" > ./data.txt.enc
Die verschlüsselten Daten (auch als „Geheimtext“ bezeichnet) werden in data.txt.enc
auf dem Laufwerk gespeichert. Wenn Sie die Datei data.txt.enc
öffnen, werden Sie feststellen, dass sie seltsame, nicht druckbare Zeichen enthält. Das liegt daran, dass die resultierenden Daten im Binärformat vorliegen.
Wenn der Geheimtext in einer Datenbank gespeichert oder als Teil einer HTTP-Anfrage übertragen wird, müssen die Daten möglicherweise codiert werden. Der gängigste Codierungsmechanismus für Geheimtext ist base64.
Cloud KMS speichert keinen von Ihnen bereitgestellten Klartext. Sie müssen diesen Geheimtext an einem sicheren Ort speichern, da er zum Abrufen des Klartextwerts erforderlich ist.
6. Daten entschlüsseln
Anders als bei der 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:
$ gcloud kms asymmetric-decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-asymmetric-encryption-key" \ --version "1" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
Das gcloud
-Befehlszeilentool liest den Geheimtext aus der Datei und entschlüsselt ihn mit Cloud KMS. In diesem Beispiel wird das Argument --plaintext-file
als -
angegeben. Dadurch wird gcloud
angewiesen, das Ergebnis im Terminal auszugeben.
Die Konsole gibt my-contents
aus, was dem Klartextwert aus der obigen Datei entspricht.
7. Glückwunsch!
Sie haben die Cloud KMS API aktiviert, einen asymmetrischen Verschlüsselungsschlüssel erstellt und Daten verschlüsselt und entschlüsselt. Cloud KMS ist ein leistungsstarkes Produkt, dessen Funktionen bei der Verschlüsselung/Entschlüsselung nur an der Oberfläche kratzen.
Aufräumen
Wenn Sie die Untersuchung abgeschlossen haben, können 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 auf „Löschen“. ganz oben. Dadurch wird das Projekt zum Löschen vorgemerkt.
Weitere Informationen
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.