Daten mit Cloud KMS verschlüsseln und entschlüsseln

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 wird gezeigt, wie Sie Daten mit symmetrischen Cloud KMS-Schlüsseln verschlüsseln und entschlüsseln.

ERFAHREN SIE MEHR

  • Cloud KMS API aktivieren
  • Cloud KMS-Schlüsselbund erstellen
  • Kryptografischen Cloud KMS-Schlüssel für die symmetrische Verschlüsselung/Entschlüsselung erstellen
  • Symmetrischen kryptografischen Cloud KMS-Schlüssel rotieren

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. 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.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

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.

  1. 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:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

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-symmetric-key und dem Zweck encryption.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

5. Daten verschlüsseln

Erstellen Sie eine Datei mit den zu verschlüsselnden Daten und verwenden Sie das gcloud-Befehlszeilentool, um die Daten in der Datei zu verschlüsseln:

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./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. Ein gebräuchlicher Codierungsmechanismus 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

Entschlüsseln Sie den Geheimtext aus der Datei mit dem gcloud-Befehlszeilentool:

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --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. Schlüssel rotieren

In Cloud KMS ist ein kryptografischer Schlüssel eine Sammlung von Versionen kryptografischer Schlüssel. Sie können neue Versionen kryptografischer Schlüssel erstellen, um eine Schlüsselrotation durchzuführen. Cloud KMS kann auch Schlüssel nach einem Zeitplan automatisch rotieren.

Wenn Sie einen Schlüssel manuell rotieren möchten, erstellen Sie eine neue kryptografische Schlüsselversion und legen Sie sie als primäre Version fest:

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

Dieser neue Schlüssel wird bei allen zukünftigen Datenverschlüsselungsanfragen verwendet. Die älteren Schlüssel sind weiterhin zum Entschlüsseln von Daten verfügbar, die zuvor mit diesen Schlüsseln verschlüsselt wurden. Cloud KMS bestimmt automatisch den geeigneten Entschlüsselungsschlüssel anhand des bereitgestellten Geheimtexts. Sie müssen nicht angeben, welche Version des kryptografischen Schlüssels für die Entschlüsselung verwendet werden soll.

Um zu verhindern, dass Geheimtextwerte, die mit einer älteren Version eines kryptografischen Schlüssels verschlüsselt wurden, mit Cloud KMS entschlüsselt werden, können Sie diese Version des kryptografischen Schlüssels deaktivieren oder löschen. Das Deaktivieren ist ein umkehrbarer Vorgang, während das Löschen dauerhaft ist. So deaktivieren Sie eine Version:

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

8. Glückwunsch!

Sie haben die Cloud KMS API aktiviert, einen symmetrischen 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.