Cloud KMS ist ein in der Cloud gehosteter Schlüsselverwaltungsdienst, mit dem Sie kryptografische Schlüssel für Ihre Cloud-Dienste genauso verwalten können wie lokal bei Ihnen vor Ort. Er bietet Unterstützung für Verschlüsselung, Entschlüsselung, Signierung 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 die erweiterten Funktionen der Cloud Security and Privacy APIs verwenden, einschließlich:
- Sichere Cloud Storage-Buckets einrichten
- Schlüssel und verschlüsselte Daten mit Cloud KMS verwalten
- Cloud Storage-Audit-Logs aufrufen
Sie verwenden dazu gekürzte Daten aus dem Enron Corpus, verschlüsseln sie und laden sie in Cloud Storage.
Lerninhalte
- Mit dem Key Management Service (KMS) Daten verschlüsseln und Verschlüsselungsschlüssel verwalten
Sie sind zur Nutzung
- Cloud KMS
- Cloud Storage
- Cloud SDK
Einrichtung der Umgebung im eigenen Tempo
Wenn Sie noch kein Google-Konto (Gmail oder Google Apps) haben, müssen Sie eins erstellen. Melden Sie sich in der Google Cloud Platform Console (console.cloud.google.com) an und erstellen Sie ein neues Projekt:
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 die Abrechnung in der Cloud Console aktivieren, um Google Cloud-Ressourcen verwenden zu können.
Dieses Codelab sollte Sie nicht mehr als ein paar Dollar kosten, aber es könnte mehr sein, wenn Sie sich für mehr Ressourcen entscheiden oder wenn Sie sie laufen lassen (siehe Abschnitt „Bereinigen“ am Ende dieses Dokuments).
Neuen Nutzern der Google Cloud Platform steht eine kostenlose Testversion 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 dauert nur einen Moment. Anschließend sehen Sie in etwa Folgendes:
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.
Erstellen Sie einen Cloud Storage-Bucket, um Daten für diese Anleitung zu speichern. Da Cloud Storage-Bucket-Namen global eindeutig sein müssen, stellen Sie dem Bucket-Namen Ihre Projekt-ID voran:
$ export BUCKET_NAME=${GOOGLE_CLOUD_PROJECT}_enron_emails
Erstellen Sie dann den Bucket:
$ gsutil mb gs://${BUCKET_NAME}
Der Enron Corpus ist eine riesige Datenbank mit über 600.000 E‑Mails,die von 158 Mitarbeitern der Enron Corporation verfasst wurden. Diese Daten wurden in den Cloud Storage-Bucket namens gs://enron_emails/
kopiert.
Laden Sie eine der E‑Mail-Dateien lokal herunter:
$ gsutil cp gs://enron_emails/allen-p/inbox/1. . # <-- don't forget the dot!
Prüfen Sie die heruntergeladene Datei, um zu bestätigen, dass es sich tatsächlich um eine E‑Mail handelt:
$ tail 1.
Die E-Mail enthält eine Nachricht wie diese:
Attached is the Delta position for 1/18... # ...
Neben E‑Mails enthält der Bucket auch Bilder. In dieser Anleitung werden sowohl die Nur-Text-E‑Mails als auch die Bilder verwendet.
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. Der Befehl meldet Erfolg, wenn er abgeschlossen ist.
Erstellen Sie einen Cloud KMS-Schlüsselbund. In Cloud KMS ist ein Schlüsselbund eine logische Sammlung von kryptografischen Schlüsseln. Der Schlüsselbund enthält Metadaten zu den Schlüsseln, z. B. ihren Speicherort. Erstellen Sie in der Region global
einen Schlüsselbund mit dem Namen my-keyring
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Erstellen Sie nun im soeben erstellten KeyRing einen CryptoKey mit dem Namen enron-emails
und dem Zweck encryption
.
$ gcloud kms keys create "enron-emails" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
Öffnen Sie die Web-UI für kryptografische Schlüssel und sehen Sie sich die neu erstellten Ressourcen an. Sie finden diese Option im Hauptmenü unter IAM & Verwaltung.
Sie können Schlüsselbunde und kryptografische Schlüssel in der Cloud Console ansehen und verwalten.
Verschlüsseln Sie den Inhalt der E-Mail, die wir zuvor heruntergeladen haben, mit Cloud KMS. In dieser Anleitung wird das gcloud
-Befehlszeilentool verwendet. Sie können Daten aber auch mit der Cloud KMS API verschlüsseln.
$ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "enron-emails" \ --plaintext-file ./1. \ --ciphertext-file ./1.enc
Dadurch wird eine neue Datei auf dem Datenträger 1.enc
erstellt, die den verschlüsselten Dateiinhalt enthält. Nachdem die Daten mit Cloud KMS verschlüsselt wurden, laden Sie die verschlüsselte Datei in den Cloud Storage-Bucket hoch.
$ gsutil cp ./1.enc gs://${BUCKET_NAME}
Cloud KMS ist in Google Cloud Identity and Access Management (IAM) eingebunden. Cloud KMS IAM-Rollen lassen sich im Wesentlichen in zwei Kategorien unterteilen:
- Berechtigung zum Verwalten von Schlüsseln
- Berechtigung zum Verwenden von Schlüsseln
Mit der Rolle roles/cloudkms.admin
kann der Inhaber beispielsweise Schlüsselbunde und kryptografische Schlüssel erstellen, IAM-Richtlinien festlegen und verwaltungsbezogene Vorgänge ausführen. Mit der Rolle roles/cloudkms.cryptoKeyEncrypterDecrypter
kann der Inhaber Daten verschlüsseln und entschlüsseln, sie umfasst jedoch keine Verwaltungsberechtigungen.
IAM-Rollen werden von der übergeordneten Ressource übernommen. Wenn ein Nutzer die Rolle roles/cloudkms.admin
für das Google Cloud-Projekt hat, ist er Administrator aller Schlüssel in diesem Projekt. Wenn sie die Rolle roles/cloudkms.admin
für einen Schlüsselbund haben, sind sie Administrator aller Schlüssel in diesem Schlüsselbund. Wenn sie roles/cloudkms.admin
für einen einzelnen kryptografischen Schlüssel haben, sind sie nur Administrator dieses Schlüssels.
Verwenden Sie für diese Übung Ihre Identität:
$ export MY_IDENTITY=you@gmail.com # or you@example.com
Weisen Sie der Identität die Berechtigung zu, Cloud KMS-Ressourcen im oben erstellten Schlüsselbund mit dem gcloud
-Befehlszeilentool zu verwalten:
$ gcloud kms keyrings add-iam-policy-binding "my-keyring" \ --location "global" \ --member "user:${MY_IDENTITY}" \ --role "roles/cloudkms.admin"
Die Rolle roles/cloudkms.admin
enthält keine Berechtigung zum Verwenden von Schlüsseln, sondern nur zum Verwalten von Schlüsseln. So erteilen Sie Ihrer Identität die Berechtigung, Daten mit dem enron-emails
-Kryptoschlüssel zu verschlüsseln und zu entschlüsseln:
$ gcloud kms keys add-iam-policy-binding "enron-emails" \ --location "global" \ --keyring "my-keyring" \ --member "user:${MY_IDENTITY}" \ --role "roles/cloudkms.cryptoKeyEncrypterDecrypter"
Mit dem ersten Befehl wird die Rolle roles/cloudkms.admin
für den Schlüsselbund gewährt, was alle untergeordneten CryptoKey-Ressourcen einschließt. Mit dem zweiten Befehl wird roles/cloudkms.cryptoKeyEncrypterDecrypter
gewährt, aber nur für den CryptoKey enron-emails
.
Sie können Rollen auch in der Cloud KMS-UI in der Cloud Console ansehen und zuweisen.
Neben der Verschlüsselung einer einzelnen Datei können Sie mit einigen Skripts auch eine Sammlung von Dateien verschlüsseln. In diesem Beispiel werden alle E-Mails für allen-p gestreamt, verschlüsselt und die resultierenden verschlüsselten Werte in den Cloud Storage-Bucket hochgeladen:
DIR="gs://enron_emails/allen-p" for file in $(gsutil ls ${DIR}/**); do ENC_NAME="$(basename ${file}).enc" gsutil cat ${file} \ | \ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "enron-emails" \ --plaintext-file - \ --ciphertext-file - \ | \ gsutil -q cp - gs://${BUCKET_NAME}/${ENC_NAME} echo "Copied ${ENC_NAME}" done
Dabei werden alle Dateien im angegebenen Verzeichnis im Beispiel-Cloud Storage-Bucket durchlaufen, mit Cloud KMS verschlüsselt und in Ihren Google Cloud Storage-Bucket hochgeladen.
Nachdem das Skript abgeschlossen ist, können Sie die verschlüsselten Dateien in der Cloud Storage-Benutzeroberfläche aufrufen. Auf dem Bildschirm sollte Folgendes zu sehen sein:
Cloud-Audit-Logging umfasst zwei Logstreams: Administratoraktivitäts-Logs und Datenzugriffs-Logs. Diese werden von Google Cloud-Diensten generiert, um Ihnen bei der Beantwortung der Frage zu helfen, wer in Ihren Google Cloud-Projekten was, wo und wann getan hat.
Wenn Sie sich die Aktivitäten einer Ressource in KMS ansehen möchten, klicken Sie auf den Schlüsselbund und wählen Sie Aktivität ansehen aus. So gelangen Sie auf die UI für die Cloud-Aktivität. Dort sollten Sie die Erstellung des KeyRing sowie alle daran vorgenommenen Änderungen sehen können.
Sie haben Daten mit Cloud KMS verschlüsselt und verschlüsselte Daten in Cloud Storage gespeichert.
Clean-up
Geben Sie die in dieser Anleitung erstellten Ressourcen frei. Löschen Sie den zuvor erstellten Cloud Storage-Bucket:
$ gsutil rm -r gs://${BUCKET_NAME}
Cloud KMS-Ressourcen können nicht gelöscht werden. Sie können das Schlüsselmaterial jedoch vernichten, damit es nicht wieder verwendet werden kann:
$ gcloud kms keys versions destroy "1" \ --location "global" \ --key "enron-emails" \ --keyring "my-keyring"
Behandelte Themen
- Cloud IAM zum Verwalten von Cloud KMS-Berechtigungen verwenden
- Daten mit Cloud KMS verschlüsseln
- Cloud Storage zum Speichern verschlüsselter Daten verwenden
- Mithilfe von Cloud-Audit-Logging die Aktivitäten von Schlüsseln und Schlüsselringen ansehen
Nächste Schritte
- Cloud KMS zum Verschlüsseln einer Spalte in einer Datenbank wie BigQuery verwenden
- Automatischen Rotationsplan für Ihre Cloud KMS-Schlüssel festlegen
Weitere Informationen
- Schlüsselrotation
- Umschlagverschlüsselung
- Datenverschlüsselung verwalten für Cloud Storage-Buckets
- Bei Stack Overflow mit dem Tag google-cloud-kms versehene Fragen stellen und Antworten erhalten
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.