In Compute Engine werden standardmäßig alle Daten im inaktiven Zustand verschlüsselt. Diese Verschlüsselung wird von Compute Engine durchgeführt und verwaltet. Zusätzliche Maßnahmen Ihrerseits sind nicht erforderlich. Sollten Sie diese Verschlüsselung allerdings selbst durchführen und verwalten wollen, können Sie Ihre eigenen Verschlüsselungsschlüssel angeben.
Wenn Sie Ihre eigenen Verschlüsselungsschlüssel bereitstellen, sichert Compute Engine die von Google generierten Schlüssel, die für die Ver- und Entschlüsselung Ihrer Daten verwendet werden, mithilfe Ihres Schlüssels. 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 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
- Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten:
- Installieren Sie das gcloud-Befehlszeilentool oder aktualisieren Sie es auf die neueste Version.
- Legen Sie eine Standardregion und -zone fest.
- Wenn Sie die API-Beispiele in dieser Anleitung verwenden möchten, richten Sie den API-Zugriff ein.
- Informieren Sie sich über Laufwerke, Images und Snapshots von nichtflüchtigen Speichern.
Spezifikationen
Verschlüsselung
Compute Engine verwendet Ihren Verschlüsselungsschlüssel, um die Verschlüsselungsschlüssel von Google mit AES-256-Verschlüsselung zu schützen.
Einschränkungen
Die Nutzung dieser Funktion unterliegt einigen Einschränkungen:
Allgemeine Einschränkungen
Vom Kunden bereitgestellte Verschlüsselungsschlüssel sind in folgenden Ländern nicht 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 virtuelle Maschine. 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.
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.
Für die Erstellung eines mit RSA verpackten Schlüssels für Compute Engine ist Folgendes erforderlich:
- 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 zahlreiche Möglichkeiten, einen Schlüssel zu generieren. Das folgende Beispiel ist also nur eine Option:
$ 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 gcloud
-Befehlszeilentool 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 dem Befehlszeilentool verschlüsseln
Einrichtung
Verschlüsselungsschlüssel können über das gcloud
-Befehlszeilentool 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
-Tool verwendet werden.
Wenn Sie die API 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 eigenen Schlüsseln verschlüsseln
Sie können einen neuen nichtflüchtigen Speicher verschlüsseln, wenn Sie bei der Erstellung der Instanz oder des Laufwerks einen Schlüssel bereitstellen.
Console
- Rufen Sie in der Google Cloud Console die Seite Laufwerke auf.
- 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 Instanzerstellung 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
API
Verschlüsseln Sie in der API ein Laufwerk mit dem Attribut diskEncryptionKey
und beantragen Sie bei der v1 API einen Standardschlüssel (nicht RSA-verpackt) oder bei der Beta API einen mit RSA verpackten Schlüssel. Stellen Sie in Ihrer Anfrage eines der folgenden Attribute bereit:
rawKey
– wenn Ihr Schlüssel nur base64-codiert istrsaEncryptedKey
– wenn Ihr Schlüsselmit RSA verpackt und base64-codiert ist
Sie können beispielsweise während der Instanzerstellung 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 die API 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 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 komplett neues Laufwerk-Image und einen neuen nichtflüchtigen Speicher.
Snapshots verschlüsselter Laufwerke sind immer vollständige Snapshots, deren Speicherung mehr kostet als das Speichern von inkrementellen Snapshots.
Wenn Sie einen Snapshot von einem nichtflüchtigen Speicher eines verschlüsselten Laufwerks erstellen möchten, muss Ihre Anfrage für eine Snapshot-Erstellung den Verschlüsselungsschlüssel enthalten, den Sie verwendet haben, um den nichtflüchtigen Speicher zu verschlüsseln.
Lesen Sie die Best Practices für Snapshots von nichtflüchtigem Speicher, bevor Sie den Snapshot erstellen.
Console
- Rufen Sie in der Google Cloud Console die Seite Snapshots auf.
- 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.
API
Stellen Sie in der API das Attribut sourceDiskEncryptionKey
bereit, um auf den nichtflüchtigen Quellspeicher zuzugreifen. Sie können den neuen Snapshot auch optional 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 scheitert die Anfrage.
Mit dem optionalen Attribut 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 im oben beschriebenen Format vorliegen. Sie können auch auf die Definition dieser Eigenschaft verzichten. Der Snapshot kann dann verwendet werden, um neue nichtflüchtige Speicher zu erstellen, ohne dass ein Schlüssel erforderlich ist.
Neues Image aus einem verschlüsselten Laufwerk oder einem 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 zum Kopieren von Images das gcloud
-Befehlszeilentool oder die API.
Console
- Rufen Sie in der Google Cloud Console die Seite Images auf.
- 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 ebenfalls mit Ihrem Schlüssel verschlüsseln möchten, fügen Sie der Schlüsseldatei den Schlüssel hinzu. Beispiel:
[
{
"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"
}
]
API
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 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
- Rufen Sie in der Google Cloud Console die Seite Images auf.
- 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 verwalteter 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]
ist ein Name für das neue benutzerdefinierte Image.[BUCKET_NAME]
ist der Name des Cloud Storage-Buckets, in dem sich Ihre komprimierte Image-Datei befindet.[COMPRESSED_FILE]
ist der Name der komprimierten Image-Datei.[KEY_FILE]
ist der Pfad zu einer Verschlüsselungsschlüsseldatei auf Ihrer lokalen Workstation.
API
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 verschlüsselten Ressource erstellen
Laufwerk von einem verschlüsselten Snapshot erstellen
Console
- Rufen Sie in der Google Cloud Console die Seite Laufwerke auf.
- 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
API
Um einen verschlüsselten Snapshot zu verwenden, geben Sie in Ihrer Anfrage sourceSnapshotEncryptionKey
gefolgt von rawKey
oder rsaEncryptedKey
an. Beantragen Sie bei der v1 API einen Standardschlüssel (nicht RSA-verpackt) oder bei der Beta API einen mit RSA verpackten Schlüssel. 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 verschlüsselten Image erstellen
Console
- Rufen Sie in der Google Cloud Console die Seite Laufwerke auf.
- 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
API
Um ein verschlüsseltes Image zu verwenden, geben Sie sourceImageEncryptionKey
gefolgt von entweder rawKey
oder rsaEncryptedKey
an. Beantragen Sie bei der v1 API einen Standardschlüssel (nicht RSA-verpackt) oder bei der Beta API einen mit RSA verpackten Schlüssel.
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"
}
Einer neuen Instanz ein verschlüsseltes Laufwerk hinzufügen
Console
- Öffnen Sie in der Google Cloud Console die Seite VM-Instanzen.
- Klicken Sie auf Instanz erstellen.
- Klicken Sie unter Bootlaufwerk auf die Option Ändern.
- Wählen Sie Vorhandenes Laufwerk aus.
- Wählen Sie ein vorhandenes Laufwerk aus, um es der Instanz hinzuzufügen.
- 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.
- Fahren Sie mit der Erstellung der Instanz fort.
gcloud
Wenn Sie eine Instanz erstellen und dieser ein verschlüsseltes Laufwerk hinzufügen möchten, erstellen Sie eine Schlüsseldatei und geben Sie bei der Instanzerstellung 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
API
Verwenden Sie die Compute Engine API zum Erstellen einer Instanz und geben Sie in der Laufwerkspezifikation entweder den rawKey
oder den rsaEncryptedKey
an. Beantragen Sie bei der v1 API einen Standardschlüssel (nicht RSA-verpackt) oder bei der Beta API einen mit RSA verpackten Schlüssel.
Dies ist ein Snippet aus einer Beispielspezifikation eines Laufwerks:
"disks": [
{
"deviceName": "encrypted-disk",
"source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk",
"diskEncryptionKey": {
"rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0="
}
}
]
Instanzen mit verschlüsselten Laufwerken starten oder neu starten
Weitere Informationen zum Stoppen oder Starten einer Instanz mit verschlüsselten Laufwerken finden Sie unter Instanzen mit verschlüsselten Laufwerken neu starten.
Mit der Befehlszeile gemischte Ressourcen erstellen
Wenn Sie mit dem gcloud
-Befehlszeilentool 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
-Tool 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 Instanz mit einem vom Kunden verschlüsselten Laufwerk mithilfe der Schlüsseldatei und eine Instanz 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.
Vom Kunden bereitgestellte Verschlüsselungsschlüssel von 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.