In diesem Thema erfahren Sie, wie Sie Laufwerke mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln verschlüsseln.
Weitere Informationen zur Laufwerksverschlüsselung finden Sie unter Laufwerkverschlüsselung.
Informationen zum Verschlüsseln von Laufwerken mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) finden Sie unter Ressourcen mit Cloud KMS-Schlüsseln schützen.
Bei Verwendung von CSEKs stellen Sie Ihre eigenen Verschlüsselungsschlüssel bereit. Compute Engine verwendet Ihre Schlüssel zum Schutz der von Google generierten Schlüssel, die für die Ver- und Entschlüsselung Ihrer Daten verwendet werden. Nur Nutzer, die den korrekten Schlüssel angeben können, haben die Möglichkeit, Ressourcen zu verwenden, die durch einen vom Kunden bereitgestellten Verschlüsselungsschlüssel (CSEK) gesichert werden.
Google speichert Ihre Schlüssel nicht auf seinen Servern und kann nicht auf Ihre gesicherten Daten zugreifen – es sei denn, Sie stellen den Schlüssel zur Verfügung. Sollten Sie Ihren Schlüssel also vergessen oder verlieren, kann Google ihn unter keinen Umständen wiederherstellen. Das gilt auch für die Daten, die mit dem verlorenen Schlüssel verschlüsselt wurden.
Wenn Sie einen nichtflüchtigen Speicher löschen, verwirft Google die Codierschlüssel und die Daten werden unwiederbringlich gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden.
Hinweise
- Informieren Sie sich über Laufwerke, Images und Snapshots von Laufwerken.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich so bei Compute Engine authentifizieren.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Python
Wenn Sie die Python Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung verwenden möchten, installieren und initialisieren Sie die gcloud CLI und richten dann die Standardanmeldedaten für Anwendungen mit Ihren Nutzeranmeldedaten ein.
Weitere Informationen unter Set up authentication for a local development environment.
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
-
Einschränkungen
Für CSEK gelten die folgenden Einschränkungen:
Allgemeine Einschränkungen
Die Verfügbarkeit der vom Kunden bereitgestellten Verschlüsselungsschlüssel hängt vom Standort Ihres Rechnungskontos und nicht vom Standort der Ressource ab.
Vom Kunden bereitgestellte Verschlüsselungsschlüssel sind nicht für Rechnungskonten in den folgenden Ländern verfügbar:
- Brasilien
- Indien
Technische Einschränkungen
Sie können nur neue nichtflüchtige Speicher mit einem eigenen Schlüssel verschlüsseln. Vorhandene nichtflüchtige Speicher können nicht mit einem eigenen Schlüssel verschlüsselt werden.
Sie können Ihre eigenen Schlüssel nicht mit lokalen SSDs verwenden, da Daten auf lokalen SSDs nur so lange zugänglich sind wie die entsprechende VM. Lokale SSDs sind bereits durch einen sitzungsspezifischen Verschlüsselungsschlüssel gesichert, der von Google nicht aufbewahrt wird.
Compute Engine speichert mit Instanzvorlagen keine Verschlüsselungsschlüssel. Sie müssen Ihren eigenen Schlüssel also in KMS speichern, um Laufwerke in einer verwalteten Instanzgruppe zu verschlüsseln.
Sie können keine Instanzen anhalten, an die CSEK-geschützte Laufwerke angehängt sind.
Spezifikationen
In diesem Abschnitt werden die Verschlüsselungsspezifikation und das Format von CSEK beschrieben.
Verschlüsselung
Compute Engine verwendet Ihren Verschlüsselungsschlüssel, um die Verschlüsselungsschlüssel von Google mit AES-256-Verschlüsselung zu schützen.
Erforderliches Schlüsselformat
Sie selbst generieren und verwalten Ihre Schlüssel. Sie müssen Compute Engine einen Schlüssel bereitstellen, der ein 256 Bit langer String und mit base64 (RFC 4648) codiert ist.
Das folgende Beispiel zeigt einen base64-codierten Schlüssel, der mit dem String "Hello from Google Cloud Platform" generiert wurde:
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
Er kann auch mit dem folgenden Skript generiert werden:
read -sp "String:" ; \ [[ ${#REPLY} == 32 ]] && \ echo "$(echo -n "$REPLY" | base64)" || \ (>&2 echo -e "\nERROR:Wrong Size"; false)
RSA-Key-Wrapping
Sie haben zusätzlich zur base64-Codierung Ihres Schlüssels die Möglichkeit, Ihren Schlüssel mit einem von Google bereitgestellten RSA-Public-Key-Zertifikat zu verpacken. Anschließend können Sie ihn in base64 codieren und in Ihren Anfragen verwenden.
Beim RSA-Wrapping verwenden Sie einen öffentlichen Schlüssel für die Verschlüsselung Ihrer Daten. Nachdem diese Daten mit dem öffentlichen Schlüssel verschlüsselt wurden, können sie nur mit dem entsprechenden privaten Schlüssel entschlüsselt werden. In diesem Fall ist der private Schlüssel nur den Google Cloud-Diensten bekannt. Durch die Verpackung Ihres Schlüssels mit dem RSA-Zertifikat wird sichergestellt, dass Ihr Schlüssel nur von Google Cloud-Diensten entpackt und für den Schutz Ihrer Daten verwendet werden kann.
Mehr hierzu erfahren Sie unter RSA-Verschlüsselung.
So erstellen Sie einen mit RSA verpackten Schlüssel für Compute Engine:
- Verpacken Sie Ihren Schlüssel mit dem öffentlichen Schlüssel, der in einem von Compute Engine verwalteten Zertifikat bereitgestellt wird. Achten Sie darauf, Ihren Schlüssel mit OAEP-Padding und nicht mit PKCS-#1-Padding (Version 1.5) zu verpacken.
- Codieren Sie Ihren mit RSA verpackten Schlüssel mit standardmäßiger base64-Codierung.
Laden Sie das öffentliche und von Compute Engine gewartete Zertifikat hier herunter:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Es gibt zahlreiche Möglichkeiten, Ihren Schlüssel zu generieren und mit RSA zu verpacken. Entscheiden Sie sich für eine Methode, mit der Sie vertraut sind. Im Folgenden sehen Sie zwei Beispiele, wie Sie Ihren Schlüssel mit RSA verpacken können.
Beispiel 1
In der folgenden Anleitung wird das Befehlszeilendienstprogramm openssl verwendet, um einen Schlüssel mit RSA zu verpacken und zu verschlüsseln.
Optional: Generieren Sie einen zufälligen 256-Bit-Schlüssel (32 Byte). Wenn Sie bereits einen Schlüssel haben, den Sie verwenden möchten, können Sie diesen Schritt überspringen. Es gibt viele Möglichkeiten, einen Schlüssel zu generieren. Beispiel:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt
Laden Sie das Public-Key-Zertifikat herunter:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
Extrahieren Sie den öffentlichen Schlüssel aus dem Zertifikat:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem
Verpacken Sie Ihren Schlüssel mit RSA und achten Sie dabei darauf,
mykey.txt
durch Ihre eigene Schlüsseldatei zu ersetzen.$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt
Codieren Sie Ihren mit RSA verpackten Schlüssel in base64.
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
Beispiel 2
Mit dem folgenden Beispielskript in Python wird mithilfe der Kryptografie-Bibliothek ein zufälliger 256-Bit-String (32 Byte) generiert und ein base64-codierter, mit RSA verpackter Schlüssel erstellt:
Ihr Schlüssel ist jetzt einsatzbereit.
Mit RSA verpackten Schlüssel verwenden
Mit dem Google Cloud CLI können Sie einen normalen und einen mit RSA verpackten Schlüssel auf dieselbe Weise angeben.
Wenn Sie einen mit RSA verpackten Schlüssel nutzen möchten, verwenden Sie in der API das Attribut sha256
statt rawKey
.
Ressourcen mit CSEK mit dem Befehlszeilentool verschlüsseln
Einrichtung
Verschlüsselungsschlüssel können über das Google Cloud CLI verwendet werden.
Laden Sie gcloud
herunter und installieren Sie es.
Schlüsseldatei
Wenn Sie Ihre Schlüssel mit dem Befehlszeilentool gcloud compute
einrichten, stellen Sie codierte Schlüssel mit einer Schlüsseldatei bereit, die Ihre codierten Schlüssel als JSON-Liste enthält. Eine Schlüsseldatei kann mehrere Schlüssel enthalten. So haben Sie die Möglichkeit, mehrere Schlüssel zentral an einem Ort zu verwalten. Sie können aber auch einzelne Schlüsseldateien erstellen, um jeden Schlüssel separat zu handhaben. Eine Schlüsseldatei kann nur mit dem gcloud CLI verwendet werden.
Wenn Sie REST verwenden, müssen Sie den Schlüssel direkt in Ihrer Anfrage angeben.
Jeder Eintrag in Ihrer Schlüsseldatei muss Folgendes enthalten:
- Den voll qualifizierten URI zu der Ressource, die durch den Schlüssel gesichert wird
- Den entsprechenden Schlüssel
- Den Typ des Schlüssels, entweder
raw
oderrsa-encrypted
Wenn Sie die Schlüsseldatei in Ihren Anfragen verwenden, sucht das Tool nach passenden Ressourcen und verwendet die entsprechenden Schlüssel. Wenn keine übereinstimmenden Ressourcen gefunden werden, schlägt die Anfrage fehl.
Ein Beispiel für eine Schlüsseldatei:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Best Practices zum Verwalten Ihrer Schlüsseldatei
Beim Verwenden einer Schlüsseldatei beschränken Sie den Zugriff auf Ihre Datei auf diejenigen Nutzer, die Zugriff benötigen. Achten Sie darauf, die Berechtigungen für diese Dateien einzurichten und ziehen Sie in Erwägung, diese Dateien mit weiteren Tools zu verschlüsseln:
- Unter Windows mit BitLocker oder Encrypting File System (EFS).
- Unter macOS mit FileVault 2
- Unter Linux mit Linux Unified Key Setup (LUKS) oder eCryptfs
Neuen nichtflüchtigen Speicher mit CSEK verschlüsseln
Sie können einen neuen nichtflüchtigen Speicher verschlüsseln, wenn Sie bei der Erstellung der VM oder des Laufwerks einen Schlüssel bereitstellen.
Console
Gehen Sie zur Seite Laufwerke.
Klicken Sie auf Laufwerk erstellen und geben Sie die Attribute für das neue Laufwerk ein.
Wählen Sie unter Verschlüsselung die Option Vom Kunden bereitgestellter Schlüssel aus.
Geben Sie im Textfeld den Verschlüsselungsschlüssel für das Laufwerk an und wählen Sie Verpackter Schlüssel aus, wenn der Schlüssel mit einem öffentlichen RSA-Schlüssel verpackt wurde.
gcloud
Verschlüsseln Sie im Tool gcloud compute
während der VM-Erstellung ein Laufwerk mit dem Flag --csek-key-file
. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
So verschlüsseln Sie einen eigenständigen nichtflüchtigen Speicher:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
REST
Sie können ein Laufwerk mit dem Attribut diskEncryptionKey
verschlüsseln und eine Anfrage an die v1 API für einen Standardschlüssel (nicht mit RSA verpackt) oder an die Beta API für einen RSA-verschlüsselten Schlüssel stellen. Stellen Sie in Ihrer Anfrage eines der folgenden Attribute bereit:
rawKey
: Wenn Ihr Schlüssel base64-codiert istrsaEncryptedKey
: Wenn Ihr Schlüssel mit RSA verpackt und base64-codiert ist
Sie können beispielsweise während der VM-Erstellung ein neues Laufwerk mit einem mit RSA verpackten Schlüssel verschlüsseln:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances { "machineType": "zones/us-central1-a/machineTypes/e2-standard-2", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619" }, "boot": true } ], ... }
Ähnlich können Sie REST verwenden, um einen neuen nichtflüchtigen Speicher zu erstellen und mit Ihrem eigenen Schlüssel zu verschlüsseln:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/ us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619 { "name": "new-encrypted-disk-key", "diskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "type": "zones/us-central1-a/diskTypes/pd-standard" }
Snapshot von einem mit CSEK verschlüsselten Laufwerk erstellen
Wenn Sie von einem verschlüsselten Laufwerk einen Snapshot erstellen, muss auch der Snapshot verschlüsselt werden. Sie müssen einen Schlüssel angeben, um den Snapshot zu verschlüsseln. Sie können verschlüsselte Laufwerke oder verschlüsselte Snapshots nicht zur Verwendung mit der Compute Engine-Standardverschlüsselung konvertieren – es sei denn, Sie erstellen ein neues Laufwerk-Image und einen neuen nichtflüchtigen Speicher.
Snapshots von Laufwerken, die mit CSEK verschlüsselt wurden, sind immer vollständige Snapshots. Dies unterscheidet sich von Snapshots von Laufwerken, die mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEKs) verschlüsselt sind und inkrementell sind. Die Preise für Snapshots richten sich nach der Gesamtgröße des Snapshots. Ein vollständiger Snapshot kann also mehr kosten als ein inkrementeller Snapshot.
Um einen Snapshot einer persistenten Festplatte zu erstellen, muss Ihr Request für eine Snapshot-Erstellung den Verschlüsselungsschlüssel enthalten, den Sie verwendet haben, um die persistente Festplatte zu verschlüsseln.
Lesen Sie die Best Practices für Snapshots von nichtflüchtigem Speicher, bevor Sie den Snapshot erstellen.
Console
Zur Seite Snapshots.
Klicken Sie auf Snapshot erstellen.
Wählen Sie unter Quelllaufwerk das verschlüsselte Laufwerk aus, von dem Sie einen Snapshot erstellen möchten.
Geben Sie im Textfeld den Verschlüsselungsschlüssel für das Laufwerk an und wählen Sie Verpackter Schlüssel aus, wenn der Schlüssel mit einem öffentlichen RSA-Schlüssel verpackt wurde.
Verschlüsseln Sie den neuen Snapshot. Geben Sie dazu unter dem Abschnitt Verschlüsselung einen weiteren Verschlüsselungsschlüssel an.
REST
Stellen Sie für die Anfrage das Attribut sourceDiskEncryptionKey
bereit, um auf den nichtflüchtigen Quellspeicher zuzugreifen. Sie müssen den neuen Snapshot mit dem Attribut snapshotEncryptionKey
verschlüsseln.
Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht RSA-verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten.
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot { "snapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "name": "snapshot-encrypted-disk" }
Das Attribut sourceDiskEncryptionKey
muss mit dem Schlüssel übereinstimmen, der für die Verschlüsselung des nichtflüchtigen Speichers verwendet wurde. Andernfalls schlägt die Anfrage fehl.
Mit dem snapshotEncryptionKey
können Sie einen Schlüssel zum Verschlüsseln des Snapshots bereitstellen. Wenn der Snapshot zum Erstellen neuer nichtflüchtiger Speicher verwendet wird, muss ein passender Schlüssel bereitgestellt werden. Dieser Schlüssel muss dem vorherigen Schlüsselformat entsprechen. Sie können auch auf die Definition dieser Property verzichten. Der Snapshot kann dann verwendet werden, um neue persistente Festplatten zu erstellen, ohne dass ein Schlüssel erforderlich ist.
Neues Image aus einem Laufwerk oder mit CSEK verschlüsselten benutzerdefinierten Image erstellen
Sie können benutzerdefinierte Images von verschlüsselten nichtflüchtigen Speichern erstellen oder verschlüsselte Images kopieren. Zum Kopieren von Images können Sie nicht die Konsole verwenden. Verwenden Sie das Google Cloud CLI oder REST, um Images zu kopieren.
Console
Wechseln Sie zur Seite Images.
Klicken Sie auf Image erstellen.
Wählen Sie unter Quelllaufwerk das verschlüsselte Laufwerk aus, von dem Sie ein Image erstellen möchten.
Wählen Sie unter Verschlüsselung eine Schlüsselverwaltungslösung für die Verschlüsselung aus.
Wenn der Schlüssel mit einem öffentlichen RSA-Schlüssel verpackt wurde, wählen Sie Verpackter Schlüssel aus.
gcloud
Folgen Sie der Anleitung zum Erstellen eines Images und fügen Sie das Flag --csek-key-file
mit einem Pfad zur Verschlüsselungsschlüsseldatei für das verschlüsselte Quellobjekt hinzu. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute images create .... --csek-key-file example-file.json
Wenn Sie das neue Image mit Ihrem Schlüssel verschlüsseln möchten, fügen Sie den Schlüssel der Schlüsseldatei hinzu:
[ { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk", "key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=", "key-type": "raw" }, { "uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image", "key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=", "key-type": "raw" } ]
REST
Ihre Anfrage zur API-Erstellung muss das Verschlüsselungsschlüssel-Attribut für Ihr Quellobjekt enthalten. Fügen Sie abhängig vom Typ des Quellobjekts beispielsweise eines der folgenden Attribute ein:
- Nichtflüchtiger Speicher:
sourceDiskEncryptionKey
- Image:
sourceImageEncryptionKey
Fügen Sie je nach Schlüsseltyp auch das Attribut rawKey
oder rsaEncryptedKey
ein. Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht RSA-verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten. Im folgenden Beispiel wird eine verschlüsselte und ein mit RSA verpackter nichtflüchtiger Speicher in ein Image umgewandelt, das denselben Verschlüsselungsschlüssel verwendet.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "name": "image-encrypted-disk", "sourceDiskEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks" }
Mit dem optionalen Attribut imageEncryptionKey
können Sie einen Schlüssel bereitstellen, um das Image zu verschlüsseln. Wenn das Image also für die Erstellung neuer nichtflüchtiger Speicher verwendet wird, muss ein übereinstimmender Schlüssel angegeben werden. Dieser Schlüssel muss im oben beschriebenen Format vorliegen. Sie können auch auf die Definition dieses Attributs verzichten. Das Image kann dann verwendet werden, um neue nichtflüchtige Speicher zu erstellen, ohne dass ein Schlüssel erforderlich ist.
Importiertes Image mit CSEK verschlüsseln
Sie können ein neues Image verschlüsseln, wenn Sie manuell ein benutzerdefiniertes Image in Compute Engine importieren. Vor dem Importieren eines Images müssen Sie eine Image-Datei des Laufwerks erstellen und komprimieren und diese komprimierte Datei in Cloud Storage hochladen.
Importieren Sie das benutzerdefinierte Compute Engine-Image, das Sie verschlüsseln möchten. Geben Sie den URI für die komprimierte Datei und einen Pfad zu Ihrer Verschlüsselungsschlüsseldatei an.
Console
Wechseln Sie zur Seite Images.
Klicken Sie auf Image erstellen.
Wählen Sie unter Quelle die Option Cloud Storage-Datei aus.
Geben Sie unter Cloud Storage-Datei den Cloud Storage-URI ein.
Wählen Sie unter Verschlüsselung die Option Vom Kunden bereitgestellter Schlüssel aus und stellen Sie im Textfeld den Verschlüsselungsschlüssel bereit, um das Image zu verschlüsseln.
gcloud
Erstellen Sie mit dem Befehl compute images create
ein neues Image und geben Sie das Flag --csek-key-file
mit einer Verschlüsselungsschlüsseldatei an. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute images create [IMAGE_NAME] \ --source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \ --csek-key-file [KEY_FILE]
Dabei gilt:
[IMAGE_NAME]
: Name für das neue benutzerdefinierte Image.[BUCKET_NAME]
: Name des Cloud Storage-Buckets, der Ihre komprimierte Image-Datei enthält.[COMPRESSED_FILE]
: Name der komprimierten Image-Datei.[KEY_FILE]
: Pfad zu einer Verschlüsselungsschlüsseldatei auf Ihrer lokalen Workstation.
REST
Um ein neues Bild zu verschlüsseln, das aus einer RAW-Datei erstellt wurde, fügen Sie der Anfrage zur Image-Erstellung das neue Attribut imageEncryptionKey
gefolgt von rawKey
oder rsaEncryptedKey
hinzu. Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht RSA-verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten.
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "new-encrypted-image", "sourceType": "RAW", "imageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Nichtflüchtigen Speicher von einer mit CSEK verschlüsselten Ressource erstellen
Laufwerk aus einem mit CSEK verschlüsselten Snapshot erstellen
Console
Gehen Sie zur Seite Laufwerke.
Klicken Sie auf Laufwerk erstellen.
Wählen Sie unter Quelltyp die Option Snapshot aus.
Wählen Sie unter Verschlüsselung eine Schlüsselverwaltungslösung für die Verschlüsselung aus.
Wenn der Schlüssel mit einem öffentlichen RSA-Schlüssel verpackt wurde, wählen Sie Verpackter Schlüssel aus.
gcloud
Geben Sie bei der Laufwerkserstellung im gcloud compute
-Tool den Verschlüsselungsschlüssel für den Snapshot mithilfe des Flags --csek-key-file
an. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute disks create ... --source-snapshot example-snapshot --csek-key-file example-file.json
REST
Um einen verschlüsselten Snapshot zu verwenden, geben Sie in Ihrer Anfrage sourceSnapshotEncryptionKey
gefolgt von rawKey
oder rsaEncryptedKey
an. Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht mit RSA verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten. Beispiel einer Anfrage für einen neuen nichtflüchtigen Speicher mit einem verschlüsselten Snapshot:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot", "sourceSnapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }
Laufwerk von einem Image erstellen, das mit CSEK verschlüsselt wurde
Console
Gehen Sie zur Seite Laufwerke.
Klicken Sie auf Laufwerk erstellen.
Wählen Sie unter Quelltyp die Option Image aus.
Wählen Sie unter Verschlüsselung eine Schlüsselverwaltungslösung für die Verschlüsselung aus.
Wenn der Schlüssel mit einem öffentlichen RSA-Schlüssel verpackt wurde, wählen Sie Verpackter Schlüssel aus.
gcloud
Stellen Sie bei der Laufwerkserstellung im gcloud compute
-Tool den Verschlüsselungsschlüssel für das Image mithilfe des Flags --csek-key-file
bereit. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
REST
Um ein verschlüsseltes Image zu verwenden, geben Sie sourceImageEncryptionKey
gefolgt von entweder rawKey
oder rsaEncryptedKey
an. Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht mit RSA verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten.
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-image", "sourceImageEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" }, "sourceImage": "global/images/encrypted-image" }
Mit CSEK verschlüsseltes Laufwerk an eine neue VM anhängen
Console
Gehen Sie zur Seite Instanz erstellen.
Klicken Sie im Abschnitt Bootlaufwerk auf Ändern und gehen Sie so vor:
- Klicken Sie auf der Seite Bootlaufwerk auf den Tab Vorhandene Laufwerke.
- Wählen Sie in der Liste Laufwerk ein vorhandenes verschlüsseltes Laufwerk aus, das an die VM angehängt werden soll.
Geben Sie in dem Textfeld den Verschlüsselungsschlüssel an und wählen Sie Verpackter Schlüssel aus, wenn der Schlüssel mit dem öffentlichen RSA-Schlüssel verpackt wurde.
Klicken Sie auf Auswählen.
Fahren Sie mit dem VM-Erstellungsprozess fort.
gcloud
Wenn Sie eine VM erstellen und dieser ein verschlüsseltes Laufwerk hinzufügen möchten, erstellen Sie eine Schlüsseldatei und geben Sie bei der VM-Erstellung den Schlüssel mit dem Flag --csek-key-file
an. Wenn Sie einen mit RSA verpackten Schlüssel verwenden, nutzen Sie die Komponente gcloud beta
:
gcloud (beta) compute instances create example-instance \ --disk name=example-disk,boot=yes \ --csek-key-file example-file.json
REST
Verwenden Sie die Compute Engine API zum Erstellen einer VM und geben Sie in der Laufwerkspezifikation entweder den rawKey
oder den rsaEncryptedKey
an. Senden Sie eine Anfrage an die v1 API, um einen Standardschlüssel (nicht mit RSA verpackt) zu erhalten bzw. an die Beta API, um einen mit RSA verpackten Schlüssel zu erhalten.
Dies ist ein Snippet einer Beispielspezifikation eines Laufwerks:
"disks": [ { "deviceName": "encrypted-disk", "source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk", "diskEncryptionKey": { "rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=" } } ]
VMs mit verschlüsselten CSEKs starten oder neu starten
Weitere Informationen zum Stoppen oder Starten einer VM mit verschlüsselten Laufwerken finden Sie unter VM mit einem verschlüsselten Laufwerk neu starten.
Mit der Befehlszeile gemischte Ressourcen erstellen
Wenn Sie mit dem Google Cloud CLI eine Mischung aus vom Kunden verschlüsselten und standardverschlüsselten Ressourcen in einer einzigen Anfrage erstellen möchten, können Sie das Flag --csek-key-file
mit einer Schlüsseldatei und das Flag --no-require-csek-key-create
in Ihrer Anfrage verwenden. Durch Angabe der beiden Flags werden mit dem gcloud CLI alle vom Kunden verschlüsselten Ressourcen, die in Ihrer Schlüsseldatei explizit definiert wurden, und ebenso alle von Ihnen angegebenen Standardressourcen erstellt.
Angenommen, eine Schlüsseldatei enthält Folgendes:
[ { "uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk", "key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==", "key-type": "rsa-encrypted" } ]
Wenn Sie in derselben Anfrage eine VM mit einem vom Kunden verschlüsselten Laufwerk mithilfe der Schlüsseldatei und gleichzeitig eine VM mit einem standardmäßig verschlüsselten Laufwerk erstellen möchten, können Sie so vorgehen:
gcloud beta compute instances create example-disk example-disk-2 \ --csek-key-file mykeyfile.json --no-require-csek-key-create
Normalerweise wäre es nicht möglich, example-disk-2
zu erstellen, wenn Sie vorher nur das Flag --csek-key-file
angegeben haben, weil das Laufwerk nicht explizit in der Schlüsseldatei definiert wurde. Durch Hinzufügen von --no-require-csek-key-create
werden beide Laufwerke erstellt – ein mit der Schlüsseldatei verschlüsseltes Laufwerk und ein mit der Google-Verschlüsselung verschlüsseltes Laufwerk.
CSEK aus einem nichtflüchtigen Speicher entfernen
Sie können die Inhalte eines vom Kunden verschlüsselten Laufwerks entschlüsseln und ein neues Laufwerk erstellen, das stattdessen die Compute Engine-Standardverschlüsselung verwendet.
- Erstellen Sie ein Image des verschlüsselten Laufwerks und legen Sie für das neue Image die automatische Verschlüsselung fest.
- Verwenden Sie das neue Image, um einen neuen nichtflüchtigen Speicher zu erstellen.
Nachdem Sie den neuen nichtflüchtigen Speicher erstellt haben, werden die Inhalte des Laufwerks durch die Compute Engine-Standardverschlüsselung gesichert. Auch die Snapshots, die Sie von diesem Laufwerk erstellen, müssen die Standardverschlüsselung verwenden.