Ressourcen mit Cloud KMS-Schlüsseln schützen

Standardmäßig werden von Compute Engine inaktive Kundeninhalte verschlüsselt. Die Verschlüsselung wird von Compute Engine durchgeführt und verwaltet, ohne dass Sie weiter tätig werden müssen. Wenn Sie die Verschlüsselung jedoch selbst steuern und verwalten möchten, können Sie Schlüsselverschlüsselungsschlüssel verwenden. Damit werden nicht Ihre Daten direkt verschlüsselt, sondern die Datenverschlüsselungsschlüssel, mit denen Ihre 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 zu Verschlüsselungsoptionen in der Google Cloud Platform

Vorbereitung

  1. Machen Sie sich mit den Informationen zu Laufwerken, Images, Snapshots von nichtflüchtigem Speicher und Instanzen vertraut.

  2. Entscheiden Sie, ob Sie Compute Engine und Cloud KMS im selben Google Cloud Platform-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.

    Informationen zu IDs und Projektnummern von GCP-Projekten finden Sie unter Projekte identifizieren.

  3. Richten Sie für das GCP-Projekt, in dem Compute Engine ausgeführt wird, den API-Zugriff für Compute Engine ein.

  4. Für das GCP-Projekt, in dem Cloud KMS ausgeführt wird:

    1. Aktivieren Sie die Cloud KMS API.
    2. Erstellen Sie einen Schlüsselbund und einen Schlüssel, wie in Schlüsselbunde und Schlüssel erstellen beschrieben.
  5. Weisen Sie die Cloud KMS CryptoKey Encrypter/Decrypter-Rolle dem Compute Engine-Dienst-Agent zu. Dieses Konto hat das folgende Format:

    service-[PROJECT_NUMBER]@compute-system.iam.gserviceaccount.com
    

    Sie können für die Rollenzuweisung das gcloud-Befehlszeilentool verwenden:

    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 GCP-Projekts, in dem Cloud KMS ausgeführt wird, und ersetzen Sie [PROJECT_NUMBER] durch die Projektnummer (nicht die Projekt-ID) Ihres GCP-Projekts, in 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

  1. Gehen Sie in der Cloud Platform Console auf die Seite Laufwerke.

    Weiter zur Seite "Laufwerke"

  2. Klicken Sie auf Laufwerk erstellen und geben Sie die Attribute für das neue Laufwerk ein.
  3. Wählen Sie unter Verschlüsselung die Option Vom Kunden verwalteter Schlüssel aus.
  4. Wählen Sie aus dem Drop-down-Menü den Cloud KMS-Schlüssel aus, mit dem Sie das Laufwerk verschlüsseln möchten.
  5. 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

Sie haben die Möglichkeit, ein Laufwerk mit dem Attribut diskEncryptionKey und kmsKeyName zu verschlüsseln. Während der Instanzerstellung können Sie etwa ein neues Laufwerk mit Ihrem Cloud KMS-Schlüssel verschlüsseln:

POST
https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances

{
"machineType": "zones/[ZONE]/machineTypes/n1-standard-1",
"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://www.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

  1. Gehen Sie in der Google Cloud Platform Console auf die Seite Snapshots.

    Zur Seite "Snapshots"

  2. Klicken Sie auf Snapshot erstellen.
  3. 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://www.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 Image müssen Sie eine Laufwerk-Image-Datei erstellen und komprimieren und diese komprimierte Datei in Google Cloud Storage hochladen.

Console

  1. Rufen Sie in der Google Cloud Platform Console die Seite Images auf.

    Weiter zur Seite "Images"

  2. Klicken Sie auf Image erstellen.
  3. Wählen Sie unter Quelllaufwerk das Laufwerk aus, von dem Sie ein Image erstellen möchten.
  4. Wählen Sie unter Verschlüsselung die Option Vom Kunden verwalteter Schlüssel aus.
  5. Wählen Sie aus dem Drop-down-Menü den Cloud KMS-Schlüssel aus, mit dem Sie das Image verschlüsseln möchten.
  6. 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

Ein importiertes Image verschlüsseln Sie folgendermaßen: 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://www.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 aus 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

  1. Gehen Sie in der Cloud Platform Console auf die Seite Laufwerke.

    Weiter zur Seite "Laufwerke"

  2. Klicken Sie auf Laufwerk erstellen und geben Sie die Attribute für das neue Laufwerk ein.
  3. Wählen Sie unter Quelltyp den gewünschten Schnappschuss oder das Image aus.
  4. 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://www.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

  1. Öffnen Sie in der Google Cloud Platform Console die Seite VM-Instanzen.

    Zur Seite "VM-Instanzen"

  2. Klicken Sie auf Instanz erstellen.
  3. Klicken Sie unter Bootlaufwerk auf die Option Ändern.
  4. Klicken Sie auf Vorhandene Laufwerke.
  5. Wählen Sie ein vorhandenes Laufwerk aus, um es der Instanz hinzuzufügen.
  6. 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.

  1. Erstellen Sie ein Image des verschlüsselten Laufwerks und legen Sie für das neue Image die automatische Verschlüsselung fest.
  2. 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 dies 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.

Beschränkungen

  • Regionale Ressourcen (Laufwerke) können durch Schlüssel am selben Standort oder am Standort global verschlüsselt werden. So kann ein Laufwerk in der Zone us-west1-a z. B. mit einem Schlüssel in der Zone us-west1 oder global verschlüsselt werden. Globale Ressourcen (Images, Snapshots) können mit Schlüsseln an jedem beliebigen Standort verschlüsselt werden.
Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation