Ressourcen mit Cloud KMS-Schlüsseln schützen


Dieses Dokument enthält Informationen zur Verwendung von Schlüsseln, die vom Cloud Key Management Service Cloud KMS verwaltet werden, um Laufwerke und andere speicherbezogene Ressourcen zu verschlüsseln. Vom Cloud KMS verwaltete Schlüssel werden als vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEKs) bezeichnet.

Sie können mit CMEKs Compute Engine-Ressourcen wie Laufwerke, Maschinen-Images und Instant Snapshots sowie Standard-Snapshots verschlüsseln.

Weitere Informationen zur Verwendung von vom Kunden bereitgestellten Verschlüsselungsschlüsseln (CSEKs) zum Verschlüsseln von Laufwerken und anderen Speicherressourcen finden Sie unter Laufwerke mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln verschlüsseln.

Weitere Informationen zur Laufwerksverschlüsselung.

Hinweise

  • Machen Sie sich mit den Informationen zu Laufwerken, Images, Snapshots von nichtflüchtigem Speicher und VM-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. Weitere Informationen zu Google Cloud-Projekt-IDs und -Projektnummern finden Sie unter Projekte identifizieren.
  • Gehen Sie für das Cloud-Projekt, in dem Cloud KMS ausgeführt wird, so vor:
    1. Cloud KMS API aktivieren.

      Aktivieren Sie die API

    2. Erstellen Sie einen Schlüsselbund und einen Schlüssel, wie in Symmetrische Schlüssel erstellen beschrieben.
  • 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.

    Wählen Sie den Tab für die Verwendung der Beispiele auf dieser Seite aus:

    Console

    Wenn Sie über die Google Cloud Console auf Google Cloud-Dienste und -APIs zugreifen, müssen Sie die Authentifizierung nicht einrichten.

    gcloud

    1. Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init
    2. Legen Sie eine Standardregion und -zone fest.

    REST

    Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.

      Installieren Sie die Google Cloud CLI und initialisieren Sie sie mit folgendem Befehl:

      gcloud init

Erforderliche Rollen

Damit der Compute Engine-Dienst-Agent die erforderlichen Berechtigungen zum Schutz von Ressourcen mithilfe von Cloud KMS-Schlüsseln hat, bitten Sie Ihren Administrator, dem Compute Engine-Dienst-Agent die Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (roles/cloudkms.cryptoKeyEncrypterDecrypter) IAM-Rolle für Ihr Projekt zu gewähren. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Ihr Administrator kann dem Compute Engine-Dienst-Agent möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

Der Compute Engine-Dienst-Agent hat das folgende Format:

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

Sie können die Google Cloud CLI 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 Folgendes:

  • KMS_PROJECT_ID: die ID Ihres Google Cloud-Projekts, in dem Cloud KMS ausgeführt wird (auch wenn dies dasselbe Projekt ist, in dem Compute Engine ausgeführt wird)
  • PROJECT_NUMBER: die Projektnummer (nicht die Google Cloud-Projekt-ID) des Cloud-Projekts, in dem die Compute Engine-Ressourcen ausgeführt werden

Verschlüsselungsspezifikationen

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, nicht die Daten selbst.

Die Daten auf den Laufwerken werden mit von Google generierten Schlüsseln verschlüsselt. Informationen zur Standardverschlüsselung in Google Cloud finden Sie in der Sicherheitsdokumentation unter Standardverschlüsselung ruhender Daten.

Beschränkungen

  • Sie können vorhandene Ressourcen nicht mit CMEKs verschlüsseln. Sie können Laufwerke, Images und Snapshots nur mit CMEKs verschlüsseln, wenn Sie sie erstellen.

  • Sie können Ihre eigenen Schlüssel nicht mit einer lokalen SSD verwenden, da Daten auf lokalen SSDs nur so lange zugänglich sind wie die entsprechende virtuelle Maschine. Lokale SSD-Laufwerke sind mit der Standardverschlüsselung von Google geschützt.

  • Regionale Ressourcen (Laufwerke) können durch Schlüssel am selben Standort oder am Standort global verschlüsselt werden. Beispielsweise kann ein Laufwerk in Zone us-west1-a mit einem Schlüssel in us-west1 oder global verschlüsselt werden. Globale Ressourcen (Images, Snapshots) können mit Schlüsseln an jedem beliebigen Standort verschlüsselt werden.

  • Die Verschlüsselung eines Laufwerks, eines Snapshots oder eines Images mit einem Schlüssel ist permanent. Sie können die Verschlüsselung nicht aus der Ressource entfernen oder den verwendeten Schlüssel ändern. Die einzige Möglichkeit zum Entfernen von Verschlüsselungs- oder Änderungsschlüsseln besteht darin, eine Kopie der Ressource zu erstellen und dabei eine neue Verschlüsselungsoption anzugeben.

Neue Persistent Disk mit CMEK verschlüsseln

Sie können eine neue Persistent Disk verschlüsseln, wenn Sie bei der Erstellung der VM oder des Laufwerks einen Schlüssel bereitstellen.

Console

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

    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 im Drop-down-Menü den Cloud KMS-Schlüssel aus, mit dem Sie dieses Laufwerk verschlüsseln möchten.
  5. Klicken Sie auf Erstellen, um das Laufwerk anzulegen.

gcloud

Erstellen Sie mit dem Befehl gcloud compute disks create ein verschlüsseltes Laufwerk und geben Sie den Schlüssel mit dem Flag --kms-key an.

gcloud compute disks create DISK_NAME \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Ersetzen Sie Folgendes:

  • DISK_NAME: Name des neuen Laufwerks
  • KMS_PROJECT_ID: Inhaber des Cloud KMS-Schlüssels
  • REGION: die Region, in der sich der Schlüssel befindet
  • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
  • KEY: der Name des Schlüssels, mit dem das Laufwerk verschlüsselt wird

REST

Senden Sie eine POST-Anfrage an die Methode instances.insert. Verwenden Sie zum Verschlüsseln eines Laufwerks das Attribut diskEncryptionKey mit dem Attribut kmsKeyName. Sie können beispielsweise während der VM-Erstellung ein neues Laufwerk mit Ihrem Cloud KMS-Schlüssel verschlüsseln. Geben Sie dazu Folgendes an:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE"
  },
  "boot": true
 }
],
...
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Google Cloud-Projekts, in dem Compute Engine ausgeführt wird
  • ZONE ist die Zone, in der die VM erstellt werden soll.
  • MACHINE_TYPE: der Maschinentyp, z. B. c3-standard-4
  • KMS_PROJECT_ID: Inhaber des Cloud KMS-Schlüssels
  • REGION: die Region, in der sich das Laufwerk befindet
  • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
  • KEY: der Name des Schlüssels, mit dem das Laufwerk verschlüsselt wird
  • SOURCE_IMAGE: das Image, das beim Erstellen der VM verwendet werden soll, z. B. projects/debian-cloud/global/images/debian-11-bullseye-v20231115

In ähnlicher Weise können Sie die Methode disks.insert verwenden, um eine neue eigenständige Persistent Disk zu erstellen und mit Ihrem Cloud KMS-Schlüssel zu verschlüsseln:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks?sourceImage=SOURCE_IMAGE
{
 "name": "DISK_NAME",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
 "type": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Google Cloud-Projekts, in dem Compute Engine ausgeführt wird
  • ZONE: Zone, in der die VM erstellt werden soll
  • SOURCE_IMAGE: das Image, das beim Erstellen des Laufwerks verwendet werden soll, z. B. projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: ein Name für das neue Laufwerk
  • KMS_PROJECT_ID: Inhaber des Cloud KMS-Schlüssels
  • REGION: die Region, in der sich das Laufwerk befindet
  • KEY_RING: der Name des Schlüsselbunds, der den Schlüssel enthält
  • KEY: der Name des Schlüssels, mit dem das Laufwerk verschlüsselt wird
  • DISK_TYPE: der zu erstellende Laufwerkstyp

Snapshot von einem mit CMEK verschlüsselten Laufwerk erstellen

Zum Schützen eines Snapshots, den Sie von einem mit CMEK verschlüsselten Laufwerk erstellen, müssen Sie denselben Verschlüsselungsschlüssel verwenden, mit dem das Laufwerk verschlüsselt wurde.

Ein Snapshot, der einen CMEK verwendet, kann nur erstellt werden, wenn das Quelllaufwerk ebenfalls CMEK verwendet. Darüber hinaus können CMEK-verschlüsselte Laufwerke oder Snapshots nicht für die Verwendung der Standardverschlüsselung von Google Cloud konvertiert werden, es sei denn, Sie erstellen ein völlig neues Laufwerk-Image und einen neuen nichtflüchtigen Speicher.

Snapshots von Laufwerken, die mit CMEK verschlüsselt wurden, sind inkrementell.

Console

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

    Zu "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.

gcloud

Bei der vom Kunden verwalteten Verschlüsselung wird der Cloud KMS-Schlüssel, der zum Verschlüsseln des Laufwerks verwendet wurde, auch zum Verschlüsseln des Snapshots verwendet.

Sie können den Snapshot in der Richtlinie für Speicherorte erstellen, die durch die Snapshot-Einstellungen oder einen alternativen Speicherort Ihrer Wahl festgelegt wird. Weitere Informationen finden Sie unter Snapshot-Speicherort für Snapshots auswählen.

  • Verwenden Sie den Befehl gcloud compute snapshots create, um einen Snapshot am vordefinierten oder benutzerdefinierten Standardspeicherort zu erstellen, der in Ihren Snapshot-Einstellungen konfiguriert ist.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • Alternativ können Sie die Snapshot-Einstellungen überschreiben und einen Snapshot an einem benutzerdefinierten Speicherort erstellen. Geben Sie dazu das Flag --storage-location an, um festzulegen, wo der Snapshot gespeichert werden soll:

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION
    

    Ersetzen Sie Folgendes:

    • SNAPSHOT_NAME: Ein Name für den Snapshot.
    • SOURCE_ZONE: Die Zone des Quelllaufwerks.
    • SOURCE_DISK_NAME: Der Name des Laufwerk-Volumes, von dem Sie einen Snapshot erstellen möchten.
    • SNAPSHOT_TYPE: Der Snapshot-Typ, entweder STANDARD oder ARCHIVE. Wenn kein Snapshot-Typ angegeben ist, wird ein STANDARD-Snapshot erstellt.
    • STORAGE_LOCATION: Optional: Der multiregionale Cloud Storage-Speicherort oder die Cloud Storage-Region, in der Sie den Snapshot speichern möchten. Sie können nur einen Speicherort angeben.

      Verwenden Sie den Parameter --storage-location nur, wenn Sie den vordefinierten oder benutzerdefinierten Standardspeicherort überschreiben möchten, der in Ihren Snapshot-Einstellungen konfiguriert ist.

REST

Sie können den Snapshot in der Richtlinie für Speicherorte erstellen, die durch die Snapshot-Einstellungen oder einen alternativen Speicherort Ihrer Wahl festgelegt wird. Weitere Informationen finden Sie unter Snapshot-Speicherort für Snapshots auswählen.

  • Zum Erstellen eines Snapshots am vordefinierten oder benutzerdefinierten Standardspeicherort, der in Ihren Snapshot-Einstellungen konfiguriert ist, senden Sie eine POST-Anfrage an die Methode snapshots.insert:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE"
    }
    
  • Wenn Sie alternativ die Snapshot-Einstellungen überschreiben und einen Snapshot an einem benutzerdefinierten Speicherort erstellen möchten, senden Sie eine POST-Anfrage an die snapshots.insertMethode und fügen Sie das Attribut storageLocations in Ihre Anfrage ein:

    POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
        "name": "SNAPSHOT_NAME",
        "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
        "snapshotEncryptionKey":  {
         "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KEY_REGION/keyRings/KEY_RING/cryptoKeys/SNAPSHOT_KEY"
        },
        "snapshotType": "SNAPSHOT_TYPE",
        "storageLocations": [
            "STORAGE_LOCATION"
        ],
    }
    

Ersetzen Sie Folgendes:

  • DESTINATION_PROJECT_ID: Die ID des Projekts, in dem Sie den Snapshot erstellen möchten.
  • SNAPSHOT_NAME: Ein Name für den Snapshot.
  • SOURCE_PROJECT_ID: Die ID des Projekts des Quelllaufwerks.
  • SOURCE_ZONE: Die Zone des Quelllaufwerks.
  • SOURCE_DISK_NAME: der Name des Laufwerks, von dem Sie einen Snapshot erstellen möchten
  • KMS_PROJECT_ID: das Projekt, das den im Cloud Key Management Service gespeicherten Verschlüsselungsschlüssel enthält
  • KEY_REGION: die Region, in der sich der Cloud KMS-Schlüssel befindet
  • KEY_RING: der Name des Schlüsselbunds, der den Cloud KMS-Schlüssel enthält
  • SNAPSHOT_KEY: der Name des Cloud KMS-Schlüssels, den Sie zum Verschlüsseln des Quelllaufwerks verwendet haben
  • SNAPSHOT_TYPE: der Snapshot-Typ, entweder STANDARD oder ARCHIVE Wenn kein Snapshot-Typ angegeben ist, wird ein STANDARD-Snapshot erstellt.
  • STORAGE_LOCATION: Optional: Der multiregionale Cloud Storage-Speicherort oder die Cloud Storage-Region, in der Sie den Snapshot speichern möchten. Sie können nur einen Speicherort angeben.

    Verwenden Sie den Parameter storageLocations nur, wenn Sie den vordefinierten oder benutzerdefinierten Standardspeicherort überschreiben möchten, der in Ihren Snapshot-Einstellungen konfiguriert ist.

Importiertes Image mit CMEK verschlüsseln

Sie können ein neues Image verschlüsseln, wenn Sie 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.

Console

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

    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 im 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.

gcloud

Mit dem Befehl gcloud compute images create können Sie ein Image importieren und verschlüsseln. Geben Sie für die vom Kunden verwaltete Verschlüsselung den Cloud KMS-Schlüssel für das Image an.

gcloud compute images create IMAGE_NAME \
    --source-disk=SOURCE_DISK  \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Ersetzen Sie Folgendes:

  • IMAGE_NAME: der Name des Images, das Sie erstellen
  • SOURCE_DISK: der Name des Laufwerks, von dem ein Snapshot erstellt werden soll
  • KMS_PROJECT_ID: das Projekt, das den Cloud KMS-Schlüssel enthält
  • REGION: die Region, in der sich der Cloud KMS-Schlüssel befindet
  • KEY_RING: der Schlüsselbund, der den Cloud KMS-Schlüssel enthält
  • KEY: der Name des Schlüssels, mit dem das neue Laufwerk verschlüsselt wird

REST

Erstellen Sie eine POST-Anfrage an die Methode images.insert, um ein importiertes Image zu 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": "IMAGE_NAME",
 "sourceType": "RAW",
 "imageEncryptionKey": {
   "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
   }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt, in dem das verschlüsselte Image erstellt werden soll
  • IMAGE_NAME: der Name des Images, das Sie erstellen
  • KMS_PROJECT_ID: das Projekt, das den Cloud KMS-Schlüssel enthält
  • REGION: die Region, in der sich der Cloud KMS-Schlüssel befindet
  • KEY_RING: der Schlüsselbund, der den Cloud KMS-Schlüssel enthält
  • KEY: der Name des Schlüssels, mit dem Sie das Quelllaufwerk verschlüsselt haben

Persistent Disk anhand eines mit CMEK verschlüsselten Snapshots erstellen

So erstellen Sie eine neue eigenständige Persistent Disk mit einem verschlüsselten Snapshot:

Console

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

    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 Snapshot oder das Image aus, das Sie verwenden möchten.
  4. Optional: Wenn Sie einen neuen Verschlüsselungsschlüssel angeben möchten, geben Sie unter Verschlüsselung den entsprechenden Verschlüsselungsschlüssel an und geben Sie dann die Informationen zum Verschlüsselungsschlüssel an.

    Wenn Sie den vom Kunden verwalteten oder vom Kunden bereitgestellten Verschlüsselungsschlüssel entfernen möchten, verwenden Sie für Verschlüsselung den Standardwert Von Google verwalteter Verschlüsselungsschlüssel.

  5. Fahren Sie dann mit der Erstellung der Persistent Disk fort.

gcloud

Verwenden Sie den Befehl gcloud compute disks create, um eine neue eigenständige Persistent Disk aus einem verschlüsselten Snapshot zu erstellen.

gcloud compute disks create DISK_NAME \
    --source-snapshot SNAPSHOT_NAME \
    --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY

Ersetzen Sie Folgendes:

  • DISK_NAME: Name des neuen Laufwerks
  • SNAPSHOT_NAME: der Name des verschlüsselten Snapshots

    Wenn Sie statt eines Snapshots ein Image verwenden möchten, ersetzen Sie --source-snapshot SNAPSHOT_NAME durch --image IMAGE_NAME.

  • KMS_PROJECT_ID: Optional: das Projekt, das den Cloud KMS-Schlüssel enthält

  • REGION: Optional: Region, in der sich der Cloud KMS-Schlüssel befindet

  • KEY_RING: Optional: der Schlüsselbund, der den Cloud KMS-Schlüssel enthält

  • KEY: Optional: der Name des Cloud KMS-Schlüssels, der zum Verschlüsseln des neuen Laufwerks verwendet werden soll

    Zum Verschlüsseln des neuen Laufwerks haben Sie folgende Möglichkeiten:

    • Verwenden Sie zum Angeben eines neuen vom Kunden verwalteten Verschlüsselungsschlüssels das Flag --kms-key.
    • Wenn Sie die von Google verwaltete Standardverschlüsselung verwenden möchten, geben Sie nicht das Flag --kms-key an.

REST

Senden Sie eine POST-Anfrage an die Methode compute.disks.insert, um eine neue eigenständige Persistent Disk aus einem verschlüsselten Snapshot zu erstellen. Verwenden Sie das Attribut sourceSnapshot, um den Snapshot anzugeben.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks

{
  "name": "DISK_NAME",
  "sourceSnapshot": "projects/SNAPSHOT_PROJECT_ID/global/snapshots/SNAPSHOT_NAME",
  "diskEncryptionKey": {
     "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt, in dem das neue Laufwerk erstellt werden soll
  • ZONE: die Zone, in der die neue VM erstellt werden soll
  • DISK_NAME: Name des neuen Laufwerks
  • SNAPSHOT_PROJECT_ID: das Projekt, das den Snapshot enthält
  • SNAPSHOT_NAME: der Name des verschlüsselten Snapshots

    Wenn Sie statt eines Snapshots ein Image verwenden möchten, ersetzen Sie sourceSnapshot durch sourceImage.

  • KMS_PROJECT_ID: Optional: das Projekt, das den Cloud KMS-Schlüssel enthält

  • REGION: Optional: Region, in der sich der Cloud KMS-Schlüssel befindet

  • KEY_RING: Optional: der Schlüsselbund, der den Cloud KMS-Schlüssel enthält

  • KEY: Optional: der Name des Cloud KMS-Schlüssels, der zum Verschlüsseln des neuen Laufwerks verwendet werden soll

    Wenn Sie diskEncryptionKey angeben, wird das Laufwerk mit dem angegebenen Cloud KMS-Schlüssel verschlüsselt. Wenn Sie diskEncryptionKey nicht angeben, wird das Laufwerk mit einer von Google verwalteten Verschlüsselung verschlüsselt.

Mit CMEK verschlüsseltes Bootlaufwerk an eine neue VM anhängen

Console

  1. Rufen Sie in der Google Cloud Console die Seite Instanz erstellen auf.

    Zur Seite „Instanz erstellen“

  2. Geben Sie die VM-Details an und klicken Sie im Abschnitt Bootlaufwerk auf Ändern. Gehen Sie anschließend so vor:

    1. Klicken Sie auf Vorhandene Laufwerke.
    2. Wählen Sie in der Liste Laufwerk ein vorhandenes Laufwerk aus, um es an die VM anzuhängen.
    3. Klicken Sie auf Auswählen.
  3. Fahren Sie mit dem VM-Erstellungsprozess fort.

gcloud

Verwenden Sie den Befehl gcloud compute instances create, um beim Erstellen einer neuen VM ein verschlüsseltes Laufwerk anzuhängen. Verwenden Sie das Flag --disk, um das verschlüsselte Bootlaufwerk anzugeben, wie im folgenden Beispiel gezeigt:

gcloud compute instances create VM_NAME \
  ...
  --disk name=DISK_NAME,boot=yes

Ersetzen Sie Folgendes:

  • VM_NAME: der Name des Snapshots, den Sie erstellen
  • DISK_NAME: der Name des verschlüsselten Laufwerks

REST

Senden Sie eine POST-Anfrage an die Methode compute.instances.insert. Verwenden Sie das Attribut disks, um das verschlüsselte Bootlaufwerk anzugeben, wie im folgenden Beispiel gezeigt:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  ...
  "disks": [
    {
      "deviceName": "DISK_ALIAS",
      "source": "projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
  ]
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Zone, in der die neue VM erstellt werden soll
  • ZONE ist die Zone, in der die neue VM erstellt werden soll.
  • DISK_ALIAS: ein eindeutiger Gerätename, der als Laufwerkalias im Verzeichnis /dev/disk/by-id/google-* der VM verwendet werden soll, auf der ein Linux-Betriebssystem ausgeführt wird Mit diesem Namen kann das Laufwerk z. B. aus der Instanz heraus bereitgestellt oder in der Größe angepasst werden. Wenn Sie keinen Gerätenamen angeben, wählt die VM einen Standardgerätenamen aus, der auf dieses Laufwerk angewendet werden soll. Er hat das Format persistent-disk-x, wobei x eine Nummer ist, die von der Compute Engine zugewiesen werden kann. Dieses Feld gilt nur für Persistent Disk-Volumes.
  • DISK_NAME: der Name des verschlüsselten Laufwerks

Cloud KMS-Verschlüsselungsschlüssel aus Persistent Disk entfernen

Sie können den Inhalt eines verschlüsselten Laufwerks entschlüsseln und ein neues Laufwerk erstellen, das stattdessen die Standardverschlüsselung von Google Cloud verwendet. Standardmäßig verschlüsselt Google Cloud alle inaktiven Daten.

  1. Erstellen Sie einen Snapshot des verschlüsselten Laufwerks.
  2. Verwenden Sie den neuen verschlüsselten Snapshot, um einen neuen nichtflüchtigen Speicher zu erstellen.

Nachdem Sie der neuen Persistent Disk erstellt haben, werden die Inhalte des Laufwerks durch die Standardverschlüsselung von Google Cloud geschützt. Auch die Snapshots, die Sie von diesem Laufwerk erstellen, müssen die Standardverschlüsselung verwenden.

Cloud KMS-Verschlüsselungsschlüssel für ein Laufwerk rotieren

Rotieren Sie den Schlüssel, der zum Verschlüsseln des Laufwerks verwendet wird, indem Sie ein neues Laufwerk erstellen, das eine neue Cloud KMS-Schlüsselversion verwendet. Das Rotieren von Schlüsseln ist eine Best Practice zur Einhaltung standardisierter Sicherheitsverfahren. So rotieren Sie Ihre Schlüssel:

  1. Rotieren Sie Ihre Cloud KMS-Schlüssel.
  2. Erstellen Sie einen Snapshot des verschlüsselten Laufwerks.
  3. Verwenden Sie den neuen Snapshot, um ein neues Laufwerk mit dem im vorherigen Schritt rotierten Schlüssel zu erstellen.
  4. Ersetzen Sie das mit Ihrer VM verbundene Laufwerk, das den alten Verschlüsselungsschlüssel verwendet.

Beim Erstellen des neuen Laufwerks wird die neue Schlüsselversion für die Verschlüsselung verwendet. Alle Snapshots, die Sie von diesem Laufwerk erstellen, verwenden die neueste Primärschlüsselversion.

Wenn Sie einen Schlüssel rotieren, werden Daten, die mit früheren Schlüsselversionen verschlüsselt wurden, nicht automatisch neu verschlüsselt. Weitere Informationen finden Sie unter Daten neu verschlüsseln. Durch das Rotieren eines Schlüssels wird eine vorhandene Schlüsselversion nicht automatisch deaktiviert oder gelöscht.

Auswirkungen beim Deaktivieren oder Löschen von CMEKs

Wird ein Verschlüsselungsschlüssel deaktiviert oder gelöscht, hat das folgende Auswirkungen auf die folgenden Ressourcen, die durch den Schlüssel geschützt werden:

  • VMs mit angehängten Laufwerken können nicht gestartet werden. Wenn Sie die Shutdown-Funktion von VMs bei Widerrufen des Schlüssels aktiviert haben, fahren VMs mit angehängten Laufwerken, die durch den Schlüssel geschützt werden, herunter.
  • Laufwerke können nicht an VMs angehängt und es können auch keine Snapshots von ihnen erstellt werden.
  • Snapshots können nicht zum Erstellen von Laufwerken verwendet werden.
  • Images können nicht zum Erstellen von Laufwerken verwendet werden.

Wenn Sie den Schlüssel deaktivieren, können Sie die vorherigen Auswirkungen durch Aktivieren des Schlüssels umkehren. Wenn Sie den Schlüssel löschen, können Sie die vorherigen Effekte nicht umkehren.

Herunterfahren einer VM beim Widerrufen von Cloud KMS-Schlüsseln konfigurieren

Sie können ein VM so konfigurieren, dass sie automatisch heruntergefahren wird, wenn Sie den Cloud KMS-Schlüssel widerrufen, durch den die an die VM angehängte Persistent Disk geschützt wird. Sie können einen Schlüssel widerrufen, indem Sie ihn deaktivieren oder löschen. Wenn diese Einstellung aktiviert ist, fährt die VM innerhalb von 7 Stunden nach dem Widerrufen des Schlüssels herunter.

Wenn Sie den Schlüssel wieder aktivieren, können Sie die VM mit dem angehängten Laufwerk neu starten, das durch den Schlüssel geschützt wird. Die VM wird nach der Aktivierung des Schlüssels nicht automatisch neu gestartet.

Console

So konfigurieren Sie eine VM zum Herunterfahren, wenn ein Cloud KMS-Schlüssel widerrufen wird:

  1. Beginnen Sie mit dem Erstellen einer VM, die ein Laufwerk enthält, das durch einen Cloud KMS-Schlüssel geschützt ist.
  2. Öffnen Sie das Menü Netzwerk, Laufwerke, Sicherheit, Verwaltung, einzelne Mandanten.
  3. Maximieren Sie den Bereich Verwaltung.
  4. Wählen Sie unter Widerrufsrichtlinie für vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) die Option Herunterfahren aus.

gcloud

Verwenden Sie den Befehl gcloud compute instances create, um eine VM zu erstellen, und fügen Sie --key-revocation-action-type=stop ein.

gcloud compute instances create VM_NAME \
  --image IMAGE \
  --key-revocation-action-type=stop

REST

Verwenden Sie die Methode instances.insert, um eine VM zu erstellen, und setzen Sie das Attribut "keyRevocationActionType" auf "STOP". Im folgenden Beispiel wird die VM aus einem öffentlichen Image erstellt.

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

{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "keyRevocationActionType": "STOP"
}

Alternativ können Sie eine Instanzvorlage konfigurieren, um VMs zu erstellen, die beim Widerrufen des Schlüssels heruntergefahren werden. Dazu nutzen Sie die Google Cloud CLI oder REST.

Console

Mit einer Instanzvorlage können Sie VMs erstellen, die heruntergefahren werden, wenn ein Cloud KMS-Schlüssel widerrufen wird.

  1. Erstellen Sie eine neue Instanzvorlage, die ein Laufwerk enthält, das durch einen Cloud KMS-Schlüssel geschützt ist.
  2. Öffnen Sie das Menü Netzwerk, Laufwerke, Sicherheit, Verwaltung, einzelne Mandanten.
  3. Maximieren Sie den Bereich Verwaltung.
  4. Wählen Sie unter Widerrufsrichtlinie für vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) die Option Herunterfahren aus.

gcloud

Erstellen Sie mit dem Befehl gcloud compute instance-templates create eine Instanzvorlage und fügen Sie dabei --key-revocation-action-type=stop ein.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
  --key-revocation-action-type=stop

REST

Senden Sie eine POST-Anfrage an die Methode instanceTemplates.insert. Im Anfragetext müssen Sie alle erforderlichen Konfigurationsfelder explizit definieren. Wenn Sie möchten, dass VMs, die aus dieser Vorlage erstellt werden, bei Widerrufen des Schlüssels heruntergefahren werden, geben Sie "keyRevocationActionType":"STOP" an. Eine Instanzvorlage mit den minimal erforderlichen Feldangaben zum Erstellen von VMs, die beim Widerrufen des Schlüssels heruntergefahren werden, sieht beispielsweise so aus:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceTemplates

{
  "name": "example-template",
  "properties": {
  "machineType": "e2-standard-4",
  "networkInterfaces": [
    {
      "network": "global/networks/default",
      "accessConfigs": [
        {
          "name": "external-IP",
          "type": "ONE_TO_ONE_NAT"
        }
      ]
    }
  ],
  "disks":
  [
    {
      "type": "PERSISTENT",
      "boot": true,
      "mode": "READ_WRITE",
      "initializeParams":
      {
        "sourceImage": "projects/debian-cloud/global/images/family/debian-11"
      }
    }
  ],
  "keyRevocationActionType": "STOP"
  }
}

Nachdem Sie eine VM erstellt haben, die für das Herunterfahren bei einem Cloud KMS-Widerruf konfiguriert ist, erstellen Sie eine Persistent Disk, die mit einem Cloud KMS-Schlüssel verschlüsselt ist, und hängen Sie sie an.