Proteggi le risorse utilizzando le chiavi Cloud KMS


Questo documento fornisce informazioni su come utilizzare le chiavi Cloud KMS di Cloud Key Management Service create manualmente per criptare i dischi e altre risorse di archiviazione. Le chiavi gestite in Cloud KMS sono chiamate chiavi di crittografia gestite dal cliente (CMEK).

Puoi utilizzare i CMEK per criptare le risorse Compute Engine, ad esempio dischi, immagini macchina, snapshot istantanei e snapshot standard.

Per scoprire di più sull'utilizzo delle chiavi di crittografia fornite dal cliente (CSEK) per criptare i dischi e altre risorse di archiviazione, consulta Crittografia dei dischi con le chiavi di crittografia fornite dal cliente.

Scopri di più sulla crittografia del disco.

Prima di iniziare

  • Scopri di più su dischi, immagini, snapshot di dischi permanenti e istanze di macchine virtuali (VM).
  • Decidi se eseguire Compute Engine e Cloud KMS nello stesso progetto Google Cloud o in progetti diversi. Per informazioni sugli ID progetto e sui numeri di progetto Google Cloud, consulta Identificazione dei progetti.
  • Per il progetto Google Cloud che esegue Cloud KMS, svolgi quanto segue:
    1. Enable the Cloud KMS API.

      Enable the API

  • + Se vuoi creare un nuovo volume Hyperdisk bilanciato in modalità riservata, assicurati che il tuo caso d'uso sia supportato esaminando le limitazioni e le regioni supportate pertinenti.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:

    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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Ruoli obbligatori

Per assicurarti che l'agente di servizio Compute Engine disponga delle autorizzazioni necessarie per proteggere le risorse utilizzando le chiavi Cloud KMS, chiedi all'amministratore di concedere all'agente di servizio Compute Engine il ruolo IAM Autore crittografia/decrittografia CryptoKey Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) per il tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

L'amministratore potrebbe anche essere in grado di concedere all'agente di servizio Compute Engine le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.

Compute Engine Service Agent ha il seguente formato:

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

Puoi utilizzare Google Cloud CLI per assegnare il ruolo:

gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
    --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Sostituisci quanto segue:

  • KMS_PROJECT_ID: l'ID del progetto Google Cloud che esegue Cloud KMS (anche se si tratta dello stesso progetto che esegue Compute Engine)
  • PROJECT_NUMBER: il numero del progetto (non l'ID progetto Google Cloud) del tuo progetto Google Cloud che esegue le risorse Compute Engine

Specifiche di crittografia

Le chiavi Cloud KMS utilizzate per proteggere i tuoi dati in Compute Engine sono chiavi AES-256. Queste chiavi sono chiavi di crittografia della chiave e criptano le chiavi di crittografia dei dati che criptano i dati, non i dati stessi.

I dati sui dischi vengono criptati utilizzando chiavi di proprietà e gestite da Google. Per le specifiche relative alla crittografia predefinita in Google Cloud, consulta Crittografia at-rest predefinita nella documentazione Sicurezza.

Con la modalità riservata per Hyperdisk Balanced e Cloud HSM, la chiave di crittografia dei dati (DEK) ha proprietà di sicurezza aggiuntive con enclave basate su hardware.

Limitazioni

  • Non puoi criptare le risorse esistenti con le chiavi CMEK. Puoi criptare dischi, immagini e snapshot con CMEK solo al momento della creazione.

  • Quando crei un disco da uno snapshot istantaneo criptato con CMEK, devi specificare la chiave utilizzata per criptare il disco di origine. Non devi specificare la chiave quando lavori con altre risorse criptate con CMEK, come le copie dei dischi e le istantanee standard.

  • Non puoi utilizzare le tue chiavi con i dischi SSD locali, perché le chiavi sono gestite dall'infrastruttura Google Cloud e vengono eliminate quando la VM viene arrestata.

  • Le risorse a livello di regione (dischi) possono essere criptate solo da una chiave in una delle seguenti località Cloud KMS:

    • Una chiave nella stessa regione del disco
    • Una chiave multiregionale nella stessa località geografica del disco
    • Una chiave nella posizione globale.

    Ad esempio, un disco nella zona us-west1-a può essere criptato da una chiave nella località globale, nella regione us-west1 o nella regione multipla us.

    Le risorse globali (come immagini e snapshot) possono essere criptate con chiavi in qualsiasi posizione. Per ulteriori informazioni, consulta Tipi di località per Cloud KMS.

  • La crittografia di un disco, di uno snapshot o di un'immagine con una chiave è permanente. Non puoi rimuovere la crittografia dalla risorsa, cambiare il tipo di crittografia o modificare la chiave utilizzata. L'unico modo per rimuovere la crittografia o cambiare le chiavi di crittografia è creare una copia della risorsa specificando una nuova opzione di crittografia. Ad esempio, per modificare un disco in modo che utilizzi le chiavi generate da Google anziché le CMEK:

    1. Crea uno snapshot del disco.
    2. Crea un nuovo disco dallo snapshot. Quando crei il nuovo disco, seleziona il tipo di crittografia che preferisci.

    Per ulteriori informazioni, vedi Modificare il tipo di un disco.

Creazione di chiavi manuale o automatica

Puoi creare le chiavi Cloud KMS manualmente o utilizzare Autokey di Cloud KMS. Autokey semplifica la creazione e la gestione delle chiavi Cloud KMS automatizzando il provisioning e l'assegnazione. Con Autokey, non è necessario eseguire il provisioning di chiavi automatizzate, chiavi e account di servizio in anticipo. Vengono invece generate su richiesta nell'ambito della creazione delle risorse Compute Engine. Per ulteriori informazioni, consulta la panoramica di Autokey.

Creare manualmente il keyring e la chiave

Per il progetto Google Cloud che esegue Cloud KMS, crea un keyring e una chiave come descritto in Creare keyring e chiavi.

Crittografare un nuovo Persistent Disk con CMEK

Puoi criptare un nuovo Persistent Disk fornendo una chiave durante la creazione della VM o del disco.

Console

  1. Nella console Google Cloud, vai alla pagina Dischi.

    Vai a Dischi

  2. Fai clic su Crea disco e inserisci le proprietà del nuovo disco.
  3. In Crittografia, seleziona Chiave gestita dal cliente.
  4. Nel menu a discesa, seleziona la chiave Cloud KMS che vuoi utilizzare per criptare il disco.
  5. Per creare il disco, fai clic su Crea.

gcloud

Crea un disco criptato utilizzando il comando gcloud compute disks create e specifica la chiave utilizzando il flag --kms-key.

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

Sostituisci quanto segue:

  • DISK_NAME: il nome del nuovo disco
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud KMS
  • REGION: la regione in cui si trova la chiave
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco

REST

Crea una richiesta POST al metodo instances.insert. Per criptare un disco, utilizza la proprietà diskEncryptionKey con la proprietà kmsKeyName. Ad esempio, puoi criptare un nuovo disco durante la creazione della VM con la tua chiave Cloud KMS utilizzando quanto segue:

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
 }
],
...
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud che esegue Compute Engine
  • ZONE: la zona in cui creare la VM
  • MACHINE_TYPE: il tipo di macchina, ad esempio c3-standard-4
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud KMS
  • REGION: la regione in cui si trova il disco
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco
  • SOURCE_IMAGE: l'immagine da utilizzare per la creazione della VM, ad esempioprojects/debian-cloud/global/images/debian-11-bullseye-v20231115

Analogamente, puoi utilizzare il metodo disks.insert per creare un nuovo Persistent Disk autonomo e criptarlo con la tua chiave Cloud KMS:

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"
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud che esegue Compute Engine
  • ZONE: la zona in cui creare il disco
  • SOURCE_IMAGE: l'immagine da utilizzare per la creazione del disco, ad esempio projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: un nome per il nuovo disco
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud KMS
  • REGION: la regione in cui si trova il disco
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco
  • DISK_TYPE: il tipo di disco da creare

Creare un disco Hyperdisk bilanciato in modalità riservata

Puoi creare un nuovo disco Hyperdisk bilanciato in modalità riservata con la console Google Cloud, Google Cloud CLI o REST.

Console

  1. Nella console Google Cloud, vai alla pagina Dischi.

    Vai a Dischi

  2. Fai clic su Crea disco e inserisci le proprietà del nuovo disco.
  3. Nella sezione Impostazioni del disco, scegli Hyperdisk equilibrato per il tipo di disco.
  4. Facoltativo. Modifica le impostazioni predefinite Dimensioni, IOPS sottoposte a provisioning e Velocità effettiva sottoposta a provisioning per il disco.
  5. Nella sezione Crittografia, seleziona Chiave Cloud KMS.
  6. Nell'elenco delle chiavi, seleziona la chiave Cloud HSM che vuoi utilizzare per criptare questo disco.
  7. Nella sezione Confidential Computing, seleziona Abilita i servizi di Confidential Computing.
  8. Per creare il disco, fai clic su Crea.

gcloud

Esegui la crittografia di un nuovo disco con la modalità riservata per Hyperdisk bilanciato utilizzando il comando gcloud compute disks create. Attiva la modalità riservata con il flag --confidential-compute e specifica la chiave utilizzando il flag --kms-key.

gcloud compute disks create DISK_NAME \
  --type=hyperdisk-balanced \
  --kms-key projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY \
  --confidential-compute

Sostituisci quanto segue:

  • DISK_NAME: il nome del nuovo disco
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud HSM
  • REGION: la regione in cui si trova la chiave
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco

REST

Crea una richiesta POST al metodo instances.insert. Per criptare un disco con la modalità riservata per Hyperdisk bilanciato, utilizza la proprietà diskEncryptionKey con la proprietà kmsKeyName e imposta il flag enableConfidentialCompute. Ad esempio, puoi criptare un nuovo disco durante la creazione della VM con la tua chiave Cloud HSM utilizzando quanto segue:

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

{
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [
 {
  "type": "DISK_TYPE",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/KMS_PROJECT_ID/locations/REGION/keyRings/KEY_RING/cryptoKeys/KEY"
  },
  "initializeParams": {
   "sourceImage": "SOURCE_IMAGE",
   "enableConfidentialCompute": true
  },
  "boot": true
 }
],
"networkInterfaces": [
  {
   "network": "global/networks/default"
  }
]
}

Sostituisci quanto segue:

  • DISK_TYPE: il tipo di disco da creare, ad esempio hyperdisk-balanced
  • PROJECT_ID: l'ID del progetto Google Cloud su cui è in esecuzione Compute Engine
  • ZONE: la zona in cui creare la VM
  • MACHINE_TYPE: il tipo di macchina, ad esempio n2d-standard-4
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud HSM
  • REGION: la regione in cui si trova il disco
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco
  • SOURCE_IMAGE: l'immagine che supporta la VM confidenziale da utilizzare durante la creazione della VM, ad esempio projects/debian-cloud/global/images/debian-11-bullseye-v20231115

Analogamente, puoi utilizzare il metodo disks.insert per creare una nuova modalità riservata per Hyperdisk bilanciato:

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",
 "enableConfidentialCompute": true
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud che esegue Compute Engine
  • ZONE: la zona in cui creare il disco
  • SOURCE_IMAGE: l'immagine che supporta Confidential VM durante la creazione del disco, ad esempioprojects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME: un nome per il nuovo disco
  • KMS_PROJECT_ID: il progetto proprietario della chiave Cloud HSM
  • REGION: la regione in cui si trova il disco
  • KEY_RING: il nome della chiave automatizzata che include la chiave
  • KEY: il nome della chiave utilizzata per criptare il disco
  • DISK_TYPE: il tipo di disco da creare, ad esempio hyperdisk-balanced.

Crea uno snapshot da un disco criptato con CMEK

Per contribuire a proteggere uno snapshot creato da un disco criptato con CMEK, devi utilizzare la stessa chiave di crittografia utilizzata per criptare il disco.

Non puoi creare uno snapshot che utilizza una chiave CMEK, a meno che anche il disco di origine non utilizzi la chiave CMEK. Inoltre, non puoi convertire i dischi o gli snapshot con crittografia CMEK in modo da utilizzare la crittografia predefinita di Google Cloud, a meno che non crei un'immagine disco e un disco permanente completamente nuovi.

Gli snapshot dei dischi criptati con CMEK sono incrementali.

Console

  1. Nella console Google Cloud, vai alla pagina Snapshot.

    Vai a Snapshot

  2. Fai clic su Crea snapshot.
  3. In Disco di origine, scegli il disco di origine per lo snapshot. Lo snapshot viene criptato automaticamente con la stessa chiave utilizzata dal disco di origine.

gcloud

Per la crittografia gestita dal cliente, la chiave Cloud KMS utilizzata per criptare il disco viene utilizzata anche per criptare lo snapshot.

Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni di snapshot o utilizzando una località di archiviazione alternativa di tua scelta. Per ulteriori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.

  • Per creare uno snapshot nella posizione predefinita o personalizzata configurata nelle impostazioni dello snapshot, utilizza il comando gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • In alternativa, per ignorare le impostazioni di istantanea e crearne una in una posizione di archiviazione personalizzata, includi il flag --storage-location per indicare dove archiviare l'istantanea.

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

    Sostituisci quanto segue:

    • SNAPSHOT_NAME: un nome per lo snapshot.
    • SOURCE_ZONE: la zona del disco di origine.
    • SOURCE_DISK_NAME: il nome del volume del disco da cui vuoi creare uno snapshot.
    • SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD.
    • STORAGE_LOCATION: facoltativo. La regione multipla di Cloud Storage o la regione di Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.

      Utilizza il parametro --storage-location solo se vuoi eseguire l'override della posizione di archiviazione predefinita predefinita o personalizzata configurata nelle impostazioni dello snapshot.

REST

Puoi creare lo snapshot nel criterio della località di archiviazione definito dalle tue impostazioni di snapshot o utilizzando una località di archiviazione alternativa di tua scelta. Per ulteriori informazioni, consulta Scegliere la posizione di archiviazione degli snapshot.

  • Per creare uno snapshot nella posizione predefinita o personalizzata configurata nelle impostazioni dello snapshot, invia una richiesta POST al metodo 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"
    }
    
  • In alternativa, per ignorare le impostazioni dello snapshot e crearne uno in una posizione di archiviazione personalizzata, invia una richiesta POST al metodo snapshots.insert e includi la proprietà storageLocations nella richiesta:

    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"
        ],
    }
    

Sostituisci quanto segue:

  • DESTINATION_PROJECT_ID: l'ID del progetto in cui vuoi creare lo snapshot.
  • SNAPSHOT_NAME: un nome per lo snapshot.
  • SOURCE_PROJECT_ID: l'ID del progetto del disco di origine.
  • SOURCE_ZONE: la zona del disco di origine.
  • SOURCE_DISK_NAME: il nome del disco da cui vuoi creare uno snapshot.
  • KMS_PROJECT_ID: il progetto che contiene la chiave di crittografia archiviata in Cloud Key Management Service.
  • KEY_REGION: la regione in cui si trova la chiave Cloud KMS.
  • KEY_RING: il nome del mazzo di chiavi che contiene la chiave Cloud KMS.
  • SNAPSHOT_KEY: il nome della chiave Cloud KMS utilizzata per criptare il disco di origine.
  • SNAPSHOT_TYPE: il tipo di istantanea, STANDARD o ARCHIVE. Se non viene specificato un tipo di snapshot, viene creato uno snapshot STANDARD.
  • STORAGE_LOCATION: facoltativo. La regione multipla di Cloud Storage o la regione di Cloud Storage in cui vuoi archiviare lo snapshot. Puoi specificare una sola posizione di archiviazione.

    Utilizza il parametro storageLocations solo se vuoi eseguire l'override della posizione di archiviazione predefinita predefinita o personalizzata configurata nelle impostazioni dello snapshot.

Crittografare un'immagine importata con CMEK

Puoi criptare una nuova immagine quando importi un'immagine personalizzata in Compute Engine. Prima di poter importare un'immagine, devi creare e comprimere un file immagine del disco e caricare il file compresso su Cloud Storage.

Console

  1. Nella console Google Cloud, vai alla pagina Immagini.

    Vai a Immagini

  2. Fai clic su Crea immagine.
  3. In Disco di origine, seleziona il disco di cui vuoi creare un'immagine.
  4. Per Crittografia, seleziona Chiave gestita dal cliente.
  5. Nel menu a discesa, seleziona la chiave Cloud KMS che vuoi utilizzare per criptare questa immagine.
  6. Continua con la procedura di creazione dell'immagine.

gcloud

Per importare e criptare un'immagine, utilizza il comando gcloud compute images create. Per la crittografia gestita dal cliente, specifica la chiave Cloud KMS per l'immagine.

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

Sostituisci quanto segue:

  • IMAGE_NAME: il nome dell'immagine che stai creando
  • SOURCE_DISK: il nome del disco di cui creare uno snapshot
  • KMS_PROJECT_ID: il progetto che contiene la chiave Cloud KMS
  • REGION: la regione in cui si trova la chiave Cloud KMS
  • KEY_RING: la raccolta di chiavi che contiene la chiave Cloud KMS
  • KEY: il nome della chiave da utilizzare per criptare il nuovo disco

REST

Per criptare un'immagine importata, crea una richiesta POST al metodo images.insert. Specifica l'URI del file compresso, aggiungi la proprietà imageEncryptionKey alla richiesta di creazione dell'immagine e specifica la chiave per criptare l'immagine nella proprietà kmsKeyName.

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"
   }
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto in cui creare l'immagine criptata
  • IMAGE_NAME: il nome dell'immagine che stai creando
  • KMS_PROJECT_ID: il progetto che contiene la chiave Cloud KMS
  • REGION: la regione in cui si trova la chiave Cloud KMS
  • KEY_RING: la raccolta di chiavi che contiene la chiave Cloud KMS
  • KEY: il nome della chiave utilizzata per criptare il disco di origine

Crea un Persistent Disk da uno snapshot criptato con CMEK

Per creare un nuovo Persistent Disk autonomo da uno snapshot criptato, segui questi passaggi:

Console

  1. Nella console Google Cloud, vai alla pagina Dischi.

    Vai a Dischi

  2. Fai clic su Crea disco e inserisci le proprietà del nuovo disco.
  3. Per Tipo di origine, seleziona lo snapshot o l'immagine che vuoi utilizzare.
  4. (Facoltativo) Se vuoi specificare una nuova chiave di crittografia, per Crittografia, specifica il tipo di chiave di crittografia da utilizzare e fornisci le informazioni sulla chiave di crittografia.

    Se vuoi rimuovere la chiave di crittografia gestita dal cliente o fornita dal cliente, per Crittografia, utilizza il valore predefinito Chiave di crittografia gestita da Google.

  5. Continua con la procedura di creazione Persistent Disk.

gcloud

Utilizza il comando gcloud compute disks create per creare un nuovo Persistent Disk autonomo da uno snapshot criptato.

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

Sostituisci quanto segue:

  • DISK_NAME: il nome del nuovo disco
  • SNAPSHOT_NAME: il nome dello snapshot criptato

    Per utilizzare un'immagine anziché uno snapshot, sostituisci --source-snapshot SNAPSHOT_NAME con --image IMAGE_NAME.

  • KMS_PROJECT_ID: facoltativo, il progetto che contiene la chiave Cloud KMS

  • REGION: facoltativo, la regione in cui si trova la chiave Cloud KMS

  • KEY_RING: facoltativo, la raccolta di chiavi che contiene la chiave Cloud KMS

  • KEY: facoltativo, il nome della chiave Cloud KMS da utilizzare per criptare il nuovo disco

    Per criptare il nuovo disco, puoi procedere nel seguente modo:

    • Per specificare una nuova chiave di crittografia gestita dal cliente, utilizza il flag --kms-key.
    • Per utilizzare la chiave predefinita di proprietà di Google e gestita da Google, non includere il flag --kms-key.

REST

Crea una richiesta POST al metodo compute.disks.insert per creare un nuovo Persistent Disk autonomo da uno snapshot criptato. Utilizza la proprietà sourceSnapshot per specificare l'istantanea.

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"
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto in cui creare il nuovo disco
  • ZONE: la zona in cui creare il nuovo disco
  • DISK_NAME: il nome del nuovo disco
  • SNAPSHOT_PROJECT_ID: il progetto che contiene lo snapshot
  • SNAPSHOT_NAME: il nome dello snapshot criptato

    Per utilizzare un'immagine anziché uno snapshot, sostituisci sourceSnapshot con sourceImage.

  • KMS_PROJECT_ID: facoltativo, il progetto che contiene la chiave Cloud KMS

  • REGION: facoltativo, la regione in cui si trova la chiave Cloud KMS

  • KEY_RING: facoltativo, la raccolta di chiavi che contiene la chiave Cloud KMS

  • KEY: facoltativo, il nome della chiave Cloud KMS da utilizzare per criptare il nuovo disco

    Se includi diskEncryptionKey, il disco viene criptato con la chiave Cloud KMS specificata. Se non includi diskEncryptionKey, il disco viene criptato utilizzando una chiave di proprietà di Google e gestita da Google.

Collegamento di un disco di avvio criptato con CMEK a una nuova VM

Console

  1. Nella console Google Cloud, vai alla pagina Crea un'istanza.

    Vai a Crea un'istanza

  2. Specifica i dettagli della VM e nella sezione Disco di avvio, fai clic su Cambia. Poi:

    1. Fai clic su Dischi esistenti.
    2. Nell'elenco Disco, seleziona un disco esistente da collegare alla VM.
    3. Fai clic su Seleziona.
  3. Continua con la procedura di creazione della VM.

gcloud

Per collegare un disco criptato quando crei una nuova VM, utilizza il comando gcloud compute instances create. Utilizza il flag --disk per specificare il disco di avvio criptato, come mostrato nell'esempio seguente:

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

Sostituisci quanto segue:

  • VM_NAME: il nome della VM che stai creando
  • DISK_NAME: il nome del disco criptato

REST

Crea una richiesta POST al metodo compute.instances.insert. Utilizza la proprietà disks per specificare il disco di avvio criptato, come mostrato nell'esempio seguente:

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"
    }
  ]
}

Sostituisci quanto segue:

  • PROJECT_ID: il progetto in cui creare la nuova VM
  • ZONE: la zona in cui creare la nuova VM
  • DISK_ALIAS: un nome dispositivo univoco da utilizzare come alias del disco nella directory /dev/disk/by-id/google-* della VM che esegue un sistema operativo Linux. Questo nome può essere utilizzato per fare riferimento al disco per operazioni come il montaggio o il ridimensionamento dall'interno dell'istanza. Se non specifichi un nome del dispositivo, la VM sceglie un nome predefinito da applicare a questo disco, nel formato persistent-disk-x, dove x è un numero assegnato da Compute Engine. Questo campo è applicabile solo ai volumi di Persistent Disk.
  • DISK_NAME: il nome del disco criptato

Rimuovere la chiave di crittografia Cloud KMS da un Persistent Disk

Puoi decriptare i contenuti di un disco criptato e creare un nuovo disco che utilizzi la crittografia predefinita di Google Cloud. Per impostazione predefinita, Google Cloud cripta tutti i dati at-rest.

  1. Crea uno snapshot del disco criptato.
  2. Utilizza il nuovo snapshot criptato per creare un nuovo disco permanente.

Dopo aver creato il nuovo Persistent Disk, viene utilizzata la crittografia predefinita di Google Cloud per proteggere i contenuti del disco. Anche gli snapshot creati da quel disco devono utilizzare la crittografia predefinita.

Ruota la chiave di crittografia Cloud KMS per un disco

Ruota la chiave utilizzata per criptare il disco creando un nuovo disco che utilizzi una nuova versione della chiave Cloud KMS. La rotazione delle chiavi è una best practice per conformarsi alle pratiche di sicurezza standardizzate. Per ruotare le chiavi:

  1. Ruota la chiave Cloud KMS.
  2. Crea uno snapshot del disco criptato.
  3. Utilizza il nuovo snapshot per creare un nuovo disco con la chiave ruotata nel passaggio precedente.
  4. Sostituisci il disco collegato alla VM che utilizza la vecchia chiave di crittografia.

Quando crei il nuovo disco, viene utilizzata la nuova versione della chiave per la criptazione. Tutti gli snapshot creati da questo disco utilizzano la versione più recente della chiave principale.

Quando ruoti una chiave, i dati criptati con le versioni precedenti della chiave non vengono nuovamente criptati. Per ulteriori informazioni, consulta Ricriptare i dati. La rotazione di una chiave non disattiva o elimina automaticamente una versione della chiave esistente.

Disattivare o eliminare un CMEK

Se non hai più bisogno di un CMEK o vuoi impedirne l'utilizzo, elimina o disattiva la chiave. L'eliminazione, la disattivazione o la rimozione delle autorizzazioni IAM per una chiave è anche conosciuta come revoca della chiave.

Impatto della revoca della chiave sulle risorse criptate

Quando revochi una chiave di crittografia, le risorse protette dalla chiave sono interessate come segue:

  • Non puoi avviare una VM se uno dei dischi collegati ha chiavi revocate.
  • Se un disco che utilizza la chiave è collegato a una VM in esecuzione e hai attivato l'arresto della VM in caso di revoca della chiave per la VM, Compute Engine arresta la VM entro 7 ore.
  • Non puoi collegare un disco con una chiave revocata a una VM o creare uno snapshot dal disco.
  • Non puoi utilizzare immagini o snapshot criptati con chiavi revocate per creare dischi.

Se disattivi la chiave, puoi annullare gli effetti precedenti riattivandola. Se elimini la chiave, non puoi annullare gli effetti precedenti.

Configurare l'arresto della VM in caso di revoca della chiave Cloud KMS

Puoi configurare la VM in modo che si arresti automaticamente quando revochi la chiave Cloud KMS che contribuisce a proteggere un disco collegato alla VM. Puoi revocare una chiave disattivandola o eliminandola. Con questa impostazione attivata, la VM si arresta entro 7 ore dalla revoca della chiave.

Se riattivi la chiave, puoi riavviare la VM con il disco collegato che la chiave contribuisce a proteggere. La VM non si riavvia automaticamente dopo aver attivato la chiave.

Console

Per configurare una VM in modo che si arresti quando una chiave Cloud KMS viene revocata, svolgi i seguenti passaggi:

  1. Inizia a creare una VM che includa un disco protetto da una chiave Cloud KMS.
  2. Apri il menu Networking, dischi, sicurezza, gestione, single-tenancy.
  3. Espandi la sezione Gestione.
  4. In Criterio di revoca della chiave di crittografia gestita dal cliente (CMEK), seleziona Spegni.

gcloud

Utilizza il comando gcloud compute instances create per creare una VM e includi --key-revocation-action-type=stop.

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

REST

Utilizza il metodo instances.insert per creare una VM e imposta la proprietà "keyRevocationActionType" su "STOP". L'esempio seguente crea la VM da un'immagine pubblica.

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"
}

In alternativa, puoi configurare un modello di istanza per creare VM che si arrestano in caso di revoca della chiave utilizzando Google Cloud CLI o REST.

Console

Puoi utilizzare un modello di istanza per creare VM che si arrestano quando viene revocata una chiave Cloud KMS.

  1. Inizia a creare un nuovo modello di istanza che includa un disco protetto da una chiave Cloud KMS.
  2. Apri il menu Networking, dischi, sicurezza, gestione, single-tenancy.
  3. Espandi la sezione Gestione.
  4. In Criterio di revoca della chiave di crittografia gestita dal cliente (CMEK), seleziona Arrest.

gcloud

Crea un modello di istanza utilizzando il comando gcloud compute instance-templates create e includi --key-revocation-action-type=stop.

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

REST

Crea una richiesta POST al metodo instanceTemplates.insert. Nel corpo della richiesta, devi definire esplicitamente tutti i campi di configurazione obbligatori. Se vuoi che le VM create da questo modello si arrestino al momento della revoca della chiave, specifica "keyRevocationActionType":"STOP". Ad esempio, un modello di istanza con i campi obbligatori minimi che creerà VM che si arrestano in caso di revoca della chiave ha il seguente aspetto:

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"
  }
}

Dopo aver creato una VM configurata per l'arresto in caso di revoca di Cloud KMS, crea e collega un Persistent Disk criptato con una chiave Cloud KMS.