In Compute Engine werden inaktive Kundeninhalte standardmäßig verschlüsselt. Diese Verschlüsselung wird von Compute Engine durchgeführt und verwaltet. Zusätzliche Maßnahmen Ihrerseits sind nicht erforderlich. Wenn Sie die Verschlüsselung jedoch selbst steuern und verwalten möchten, können Sie Schlüsselverschlüsselungsschlüssel verwenden. Schlüsselverschlüsselungsschlüssel verschlüsseln nicht direkt Ihre Daten, sondern die Datenverschlüsselungsschlüssel, mit denen Daten verschlüsselt werden.
Compute Engine bietet Ihnen zwei Optionen für Schlüsselverschlüsselungsschlüssel:
Mit dem Cloud Key Management Service können Sie Schlüsselverschlüsselungsschlüssel erstellen und verwalten. Weitere Informationen finden Sie unter Schlüsselverwaltung Unter diesem Thema finden Sie detaillierte Informationen zu dieser Option. Sie wird auch als Vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) bezeichnet.
Sie können auch Ihre eigenen Schlüsselverschlüsselungsschlüssel erstellen und verwalten. Weitere Informationen zu dieser Option, die auch als Vom Kunden bereitgestellte Verschlüsselungsschlüssel (Customer-Supplied Encryption Keys, CSEK) bezeichnet wird, finden Sie unter Laufwerke mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln verschlüsseln.
Nach dem Erstellen einer Compute Engine-Ressource, die durch Cloud KMS gesichert ist, brauchen Sie den Schlüssel nicht anzugeben, da Compute Engine den verwendeten KMS-Schlüssel kennt. Dies unterscheidet sich von der Art, wie Compute Engine auf Ressourcen zugreift, die durch vom Kunden bereitgestellte Schlüssel gesichert sind. Für diesen Zugriff müssen Sie den vom Kunden bereitgestellten Schlüssel angeben.
Weitere Informationen finden Sie unter Verschlüsselung inaktiver Daten.
Hinweis
Machen Sie sich mit den Informationen zu Laufwerken, Images, Snapshots von nichtflüchtigem Speicher und Instanzen vertraut.
Überlegen Sie sich, ob Sie Compute Engine und Cloud KMS im selben Google Cloud-Projekt oder in verschiedenen Projekten ausführen möchten. Zu Beispielzwecken wird in diesem Dokument die folgende Konvention verwendet:
[PROJECT_ID]
ist die Projekt-ID des Projekts, in dem Compute Engine ausgeführt wird.[PROJECT_NUMBER]
ist die Projektnummer des Projekts, in dem Compute Engine ausgeführt wird.[KMS_PROJECT_ID]
ist die Projekt-ID des Projekts, in dem Cloud KMS ausgeführt wird. Dies gilt auch, wenn es dasselbe Projekt ist, in dem Compute Engine läuft.
Weitere Informationen zu Google Cloud-Projekt-IDs und -Projektnummern finden Sie unter Projekte identifizieren.
Richten Sie für das Google Cloud-Projekt, in dem Compute Engine ausgeführt wird, den API-Zugriff für Compute Engine ein.
Für das Google Cloud-Projekt, in dem Cloud KMS ausgeführt wird:
- Aktivieren Sie die Cloud KMS API.
- Erstellen Sie einen Schlüsselbund und einen Schlüssel, wie in Schlüsselbunde und Schlüssel erstellen beschrieben.
Weisen Sie dem Compute Engine Service-Agent die Rolle
Cloud KMS CryptoKey Encrypter/Decrypter
zu. Dieses Konto hat das folgende Format:service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com
Sie können das
gcloud
-Befehlszeilentool verwenden, um die Rolle zuzuweisen:gcloud projects add-iam-policy-binding [KMS_PROJECT_ID] \ --member serviceAccount:service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Ersetzen Sie
[KMS_PROJECT_ID]
durch die ID Ihres Google Cloud-Projekts, auf dem Cloud KMS ausgeführt wird, und[PROJECT_NUMBER]
durch die Projektnummer (nicht die Projekt-ID) Ihres Google Cloud-Projekts, auf dem die Compute Engine-Ressourcen ausgeführt werden.
Spezifikationen
Verschlüsselung
Zum Schutz Ihrer Daten in Compute Engine verwendet Cloud KMS AES-256-Schlüssel. Dabei handelt es sich um Schlüsselverschlüsselungsschlüssel zur Verschlüsselung der Datenverschlüsselungsschlüssel, die Ihre Daten verschlüsseln.
Beschränkungen
Sie können nur neue nichtflüchtige Speicher, Images und Snapshots mit Ihrem eigenen Schlüssel verschlüsseln. Vorhandene Ressourcen 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.
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 verwalteter Schlüssel aus.
- Wählen Sie aus dem Drop-down-Menü den Cloud KMS-Schlüssel aus, mit dem Sie das Laufwerk verschlüsseln möchten.
- Klicken Sie auf Erstellen, um das Laufwerk anzulegen.
Befehlszeile
gcloud compute disks \ create encrypted-disk \ --kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]
API
Verwenden Sie zum Verschlüsseln eines Laufwerks das Attribut diskEncryptionKey
mit dem Attribut kmsKeyName
. Während der Instanzerstellung können Sie etwa ein neues Laufwerk mit Ihrem Cloud KMS-Schlüssel verschlüsseln:
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances { "machineType": "zones/[ZONE]/machineTypes/e2-standard-2", "disks": [ { "type": "PERSISTENT", "diskEncryptionKey": { "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]" }, "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/debian-8-jessie-v20160301" }, "boot": true } ], ... }
Die API können Sie in ähnlicher Weise nutzen und damit auch einen neuen eigenständigen nichtflüchtigen Speicher erstellen und diesen mit Ihrem Cloud KMS-Schlüssel verschlüsseln:
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/ [ZONE]/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F projects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-8-jessie-v20160301 { "name": "new-encrypted-disk-key", "diskEncryptionKey": { "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]" }, "type": "zones/[ZONE]/diskTypes/pd-standard" }
Snapshot aus einem verschlüsselten Laufwerk erstellen
Wenn Sie einen Snapshot von einem mit CMEK verschlüsselten Laufwerk erstellen, muss der Snapshot durch denselben Verschlüsselungsschlüssel gesichert sein, mit dem das Laufwerk verschlüsselt ist.
Console
- Rufen Sie in der Google Cloud Console die Seite Snapshots auf.
- Klicken Sie auf Snapshot erstellen.
- Wählen Sie unter Quelllaufwerk das Quelllaufwerk für den Snapshot aus. Der Snapshot wird automatisch mit demselben Schlüssel verschlüsselt wie das Quelllaufwerk.
Befehlszeile
gcloud compute \ disks snapshot encrypted-disk \ --zone [ZONE]
API
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/example-disk/createSnapshot { "snapshotEncryptionKey": { "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[SNAPSHOT_KEY]" }, "name": "snapshot-encrypted-disk" }
Ein durch CMEK gesicherter Snapshot kann nur dann erstellt werden, wenn das Laufwerk selbst bereits durch CMEK gesichert ist. Darüber hinaus können verschlüsselte Laufwerke oder verschlüsselte Snapshots nur auf die Standardverschlüsselung von Compute Engine konvertiert werden, wenn ein vollständig neues Laufwerk-Image und ein neuer nichtflüchtiger Speicher erstellt werden.
Importiertes Image verschlüsseln
Sie können ein neues Image verschlüsseln, wenn Sie ein benutzerdefiniertes Image in Compute Engine importieren. Vor dem Import eines Images müssen Sie eine Image-Datei des Laufwerks erstellen und komprimieren und diese komprimierte Datei in Google Cloud Storage hochladen.
Console
- Rufen Sie in der Google Cloud Console die Seite Images auf.
- Klicken Sie auf Image erstellen.
- Wählen Sie unter Quelllaufwerk das Laufwerk aus, von dem Sie ein Image erstellen möchten.
- Wählen Sie unter Verschlüsselung die Option Vom Kunden verwalteter Schlüssel aus.
- Wählen Sie aus dem Drop-down-Menü den Cloud KMS-Schlüssel aus, mit dem Sie das Image verschlüsseln möchten.
- Fahren Sie dann mit der Erstellung des Images fort.
Befehlszeile
gcloud compute \ images create [...] \ --kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]
API
So können Sie ein importiertes Image verschlüsseln: Geben Sie den URI für die komprimierte Datei an, fügen Sie der Anfrage zum Erstellen des Images das Attribut imageEncryptionKey
hinzu und geben Sie im Attribut kmsKeyName
den Schlüssel zum Verschlüsseln des Images an:
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images { "rawDisk": { "source": "http://storage.googleapis.com/example-image/example-image.tar.gz" }, "name": "new-encrypted-image", "sourceType": "RAW", "imageEncryptionKey": { "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[IMAGE_KEY]" } }
Nichtflüchtigen Speicher von einer verschlüsselten Ressource erstellen
Laufwerk aus einem verschlüsselten Snapshot erstellen
So erstellen Sie einen neuen eigenständigen nichtflüchtigen Speicher mit einem verschlüsselten Snapshot:
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 Quelltyp den gewünschten Schnappschuss oder das Image aus.
- Fahren Sie dann mit der Erstellung des nichtflüchtigen Speichers fort.
Befehlszeile
gcloud compute \ disks create [...] \ --source-snapshot example-snapshot \ --kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]
Wenn Sie statt eines Snapshots ein Image verwenden möchten, ersetzen Sie --source-snapshot
example-snapshot
durch --image example-image
.
API
POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot" }
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.
- Klicken Sie auf Vorhandene Laufwerke.
- Wählen Sie ein vorhandenes Laufwerk aus, um es der Instanz hinzuzufügen.
- Fahren Sie mit der Erstellung der Instanz fort.
Befehlszeile
gcloud compute instances \ create example-instance \ --disk name=encrypted-disk,boot=yes
API
"disks": [ { "deviceName": "encrypted-disk", "source": "projects/[PROJECT_ID]/zones/[ZONE]/disks/encrypted-disk" } } ]
Cloud KMS-Verschlüsselungsschlüssel aus nichtflüchtigem Speicher entfernen
Sie können den Inhalt eines verschlüsselten Laufwerks entschlüsseln und ein neues Laufwerk erstellen, das stattdessen die Standardverschlüsselung von Compute Engine 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 für Snapshots, die von diesem Laufwerk erstellt werden, muss die Standardverschlüsselung verwendet werden.
Was passiert, wenn Verschlüsselungsschlüssel deaktiviert und aktiviert werden?
Wird ein Verschlüsselungsschlüssel deaktiviert oder gelöscht, hat das folgende Auswirkungen auf die damit geschützten Inhalte:
- VMs mit angehängten Laufwerken, die durch den Schlüssel gesichert sind, können nicht gestartet werden.
- Durch den Schlüssel gesicherte Laufwerke können nicht an virtuelle Maschinen angehängt und es können auch keine Snapshots von ihnen erstellt werden.
- Durch den Schlüssel gesicherte Snapshots können nicht zum Erstellen von Laufwerken verwendet werden.
- Durch den Schlüssel gesicherte Images können nicht zum Erstellen von Laufwerken verwendet werden.
Wenn Sie den Schlüssel deaktivieren, können die vorstehenden Auswirkungen durch Aktivieren des Schlüssels umgekehrt werden. Wenn Sie den Schlüssel löschen, können die obigen Auswirkungen nicht rückgängig gemacht werden.
Einschränkungen
- Regionale Ressourcen (Laufwerke) können durch Schlüssel am selben Standort oder am Standort
global
verschlüsselt werden. Beispielsweise kann ein Laufwerk in Zoneus-west1-a
mit einem Schlüssel inus-west1
oderglobal
verschlüsselt werden. Globale Ressourcen (Images, Snapshots) können mit Schlüsseln an jedem beliebigen Standort verschlüsselt werden.