Protéger des ressources avec des clés Cloud KMS


Ce document explique comment utiliser des clés Cloud Key Management Service (Cloud KMS) créées manuellement pour chiffrer des disques et d'autres ressources liées au stockage. Les clés gérées dans Cloud KMS sont appelées clés de chiffrement gérées par le client (CMEK).

Vous pouvez utiliser des clés CMEK pour chiffrer les ressources Compute Engine, telles que les disques, les images système, les instantanés immédiats et les instantanés standards.

Pour en savoir plus sur le chiffrement de disques et d'autres ressources de stockage à l'aide de clés de chiffrement fournies par le client (CSEK), consultez la page Chiffrer des disques avec des clés fournies par le client.

En savoir plus sur le chiffrement des disques.

Avant de commencer

  • Familiarisez-vous avec les disques, les images, les instantanés de disques persistants et les instances de machine virtuelle (VM).
  • Déterminez si vous allez exécuter Compute Engine et Cloud KMS dans le même projet Google Cloud ou dans des projets différents. Pour en savoir plus sur les ID et numéros de projet Google Cloud, consultez la section Identifier des projets.
  • Pour le projet Google Cloud qui exécute Cloud KMS, procédez comme suit :
    1. Enable the Cloud KMS API.

      Enable the API

  • + Si vous souhaitez créer un volume Hyperdisk équilibré en mode confidentiel, assurez-vous que votre cas d'utilisation est compatible en consultant les limites et les régions compatibles.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:

    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

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

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

        gcloud init

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.

Rôles requis

Pour vous assurer que l'agent de service Compute Engine dispose des autorisations nécessaires pour protéger des ressources à l'aide de clés Cloud KMS, demandez à votre administrateur d'accorder à l'agent de service Compute Engine le rôle IAM suivant : Chiffreur/Déchiffreur de CryptoKeys Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Votre administrateur peut également attribuer à l'agent de service Compute Engine les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

L'agent de service de Compute Engine se présente sous la forme suivante :

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

Pour attribuer le rôle, vous pouvez utiliser Google Cloud CLI comme suit :

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

Remplacez les éléments suivants :

  • KMS_PROJECT_ID : ID de votre projet Google Cloud qui exécute Cloud KMS (même s'il correspond également au projet exécutant Compute Engine)
  • PROJECT_NUMBER : numéro de votre projet Google Cloud qui exécute les ressources Compute Engine, et non son ID

Spécifications de chiffrement

Les clés Cloud KMS qui servent à protéger les données dans Compute Engine sont de type AES-256. Il s'agit de clés de chiffrement de clés, s'appliquant aux clés de chiffrement de données qui chiffrent vos données, et non aux données elles-mêmes.

Les données sur les disques sont chiffrées à l'aide de clés appartenant à Google et gérées par Google. Pour en savoir plus sur les spécifications liées au chiffrement par défaut dans Google Cloud, consultez la page Chiffrement au repos par défaut de la documentation sur la sécurité.

Avec le mode confidentiel pour Hyperdisk Balanced et Cloud HSM, la clé de chiffrement des données (DEK) dispose de propriétés de sécurité supplémentaires avec des enclaves basées sur le matériel.

Limites

  • Vous ne pouvez pas chiffrer des ressources existantes avec des CMEK. Vous ne pouvez chiffrer des disques, des images et des instantanés qu'avec des clés CMEK lors de leur création.

  • Lorsque vous créez un disque à partir d'un instantané immédiat chiffré par CMEK, vous devez spécifier la clé utilisée pour chiffrer le disque source. Vous n'avez pas besoin de spécifier la clé lorsque vous travaillez avec d'autres ressources chiffrées par CMEK, telles que les clones de disque et les instantanés standards.

  • Vous ne pouvez pas utiliser vos propres clés avec des disques SSD locaux, car les clés sont gérées par l'infrastructure Google et supprimées à l'arrêt de la VM.

  • Les ressources régionales (disques) ne peuvent être chiffrées que par une clé située dans l'un des emplacements Cloud KMS suivants :

    • Une clé située dans la même région que le disque
    • Une clé multirégionale au même emplacement géographique que le disque
    • Clé dans l'emplacement global.

    Par exemple, un disque de la zone us-west1-a peut être chiffré à l'aide d'une clé située dans l'emplacement global, la région us-west1 ou la zone multirégionale us.

    Les ressources globales (telles que les images et les instantanés) peuvent être chiffrées par des clés se trouvant à n'importe quel emplacement. Pour plus d'informations, consultez la section Types d'emplacements pour Cloud KMS.

  • Le chiffrement d'un disque, d'un instantané ou d'une image avec une clé est définitif. Vous ne pouvez pas supprimer le chiffrement de la ressource, modifier le type de chiffrement ni modifier la clé utilisée. Le seul moyen de supprimer le chiffrement ou de modifier les clés de chiffrement consiste à créer une copie de la ressource tout en spécifiant une nouvelle option de chiffrement. Par exemple, pour passer d'une utilisation de clés générées par Google à des clés CMEK, procédez comme suit:

    1. Créez un instantané du disque.
    2. Créez un disque à partir de l'instantané. Lorsque vous créez le disque, sélectionnez le type de chiffrement souhaité.

    Pour en savoir plus, consultez la section Modifier le type d'un disque.

Création manuelle ou automatique de clés

Vous pouvez créer des clés Cloud KMS manuellement ou utiliser la clé automatique Cloud KMS. La fonctionnalité de clé automatique simplifie la création et la gestion des clés Cloud KMS en automatisant le provisionnement et l'attribution. Avec la fonction de clé automatique, vous n'avez pas besoin de provisionner des trousseaux de clés, des clés et des comptes de service à l'avance. Au lieu de cela, ils sont générés à la demande lors de la création des ressources Compute Engine. Pour en savoir plus, consultez la section Présentation de la clé automatique.

Créer manuellement un trousseau de clés et une clé

Pour le projet Google Cloud qui exécute Cloud KMS, créez un trousseau de clés et une clé, comme décrit dans la section Créer des trousseaux de clés et des clés.

Chiffrer un nouveau disque persistant avec des clés CMEK

Vous pouvez chiffrer un nouveau disque persistant en fournissant une clé lors de la création de la VM ou du disque.

Console

  1. Dans la console Google Cloud, accédez à la page Disques.

    Accéder à la page Disques

  2. Cliquez sur Créer un disque et saisissez les propriétés du nouveau disque.
  3. Sous Chiffrement, sélectionnez Clé gérée par le client.
  4. Dans le menu déroulant, sélectionnez la clé Cloud KMS à utiliser pour chiffrer ce disque.
  5. Pour créer le disque, cliquez sur Créer.

gcloud

Créez un disque chiffré à l'aide de la commande gcloud compute disks create, puis spécifiez la clé à l'aide de l'option --kms-key.

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

Remplacez les éléments suivants :

  • DISK_NAME : le nom du nouveau disque
  • KMS_PROJECT_ID : projet propriétaire de la clé Cloud KMS.
  • REGION : région où se trouve la clé.
  • KEY_RING : nom du trousseau de clés qui inclut la clé.
  • KEY : nom de la clé utilisée pour chiffrer le disque.

REST

Envoyez une requête POST à la méthode instances.insert. Pour chiffrer un disque, utilisez la propriété diskEncryptionKey avec la propriété kmsKeyName. Par exemple, vous pouvez chiffrer un nouveau disque lors de la création de la VM avec votre clé Cloud KMS en procédant comme suit :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud exécutant Compute Engine
  • ZONE : zone dans laquelle créer la VM
  • MACHINE_TYPE : type de machine, par exemple c3-standard-4.
  • KMS_PROJECT_ID : projet propriétaire de la clé Cloud KMS.
  • REGION : la région où se trouve le disque.
  • KEY_RING : nom du trousseau de clés qui inclut la clé
  • KEY : nom de la clé utilisée pour chiffrer le disque
  • SOURCE_IMAGE : image à utiliser lors de la création de la VM, par exemple, projects/debian-cloud/global/images/debian-11-bullseye-v20231115.

De même, vous pouvez utiliser la méthode disks.insert pour créer un disque persistant autonome et le chiffrer avec votre clé 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"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud exécutant Compute Engine
  • ZONE : zone dans laquelle vous souhaitez créer le disque
  • SOURCE_IMAGE : image à utiliser lors de la création du disque, par exemple, projects/debian-cloud/global/images/debian-11-bullseye-v20231115.
  • DISK_NAME : nom du nouveau disque.
  • KMS_PROJECT_ID : projet propriétaire de la clé Cloud KMS.
  • REGION : la région où se trouve le disque.
  • KEY_RING : nom du trousseau de clés qui inclut la clé
  • KEY : nom de la clé utilisée pour chiffrer le disque
  • DISK_TYPE : type de disque à créer.

Créer un disque Hyperdisk équilibré en mode confidentiel

Vous pouvez créer un disque Hyperdisk équilibré en mode Confidential à l'aide de la console Google Cloud, de la Google Cloud CLI ou de REST.

Console

  1. Dans la console Google Cloud, accédez à la page Disques.

    Accéder à la page Disques

  2. Cliquez sur Créer un disque et saisissez les propriétés du nouveau disque.
  3. Dans la section Paramètres du disque, sélectionnez le type de disque Hyperdisk Balanced.
  4. Facultatif. Modifiez les paramètres par défaut pour la taille, les IOPS provisionnées et le débit provisionné du disque.
  5. Dans la section Chiffrement, sélectionnez Clé Cloud KMS.
  6. Dans la liste des clés, sélectionnez la clé Cloud HSM que vous souhaitez utiliser pour chiffrer ce disque.
  7. Dans la section Informatique confidentielle, sélectionnez Activer les services d'informatique confidentielle.
  8. Pour créer le disque, cliquez sur Créer.

gcloud

Chiffrez un nouveau disque avec le mode Confidentiel pour Hyperdisk Balanced à l'aide de la commande gcloud compute disks create. Activez le mode confidentiel avec l'option --confidential-compute et spécifiez la clé à l'aide de l'option --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

Remplacez les éléments suivants :

  • DISK_NAME : le nom du nouveau disque
  • KMS_PROJECT_ID: projet propriétaire de la clé Cloud HSM.
  • REGION : région où se trouve la clé.
  • KEY_RING : nom du trousseau de clés qui inclut la clé.
  • KEY : nom de la clé utilisée pour chiffrer le disque.

REST

Envoyez une requête POST à la méthode instances.insert. Pour chiffrer un disque avec le mode Confidentiel pour Hyperdisk équilibré, utilisez la propriété diskEncryptionKey avec la propriété kmsKeyName et définissez l'indicateur enableConfidentialCompute. Par exemple, vous pouvez chiffrer un nouveau disque lors de la création de la VM avec votre clé Cloud HSM en procédant comme suit:

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

Remplacez les éléments suivants :

  • DISK_TYPE: type de disque à créer, par exemple hyperdisk-balanced
  • PROJECT_ID: ID du projet Google Cloud exécutant Compute Engine
  • ZONE : zone dans laquelle créer la VM
  • MACHINE_TYPE : type de machine, par exemple n2d-standard-4.
  • KMS_PROJECT_ID: projet propriétaire de la clé Cloud HSM.
  • REGION : la région où se trouve le disque.
  • KEY_RING : nom du trousseau de clés qui inclut la clé.
  • KEY : nom de la clé utilisée pour chiffrer le disque.
  • SOURCE_IMAGE: image compatible avec les VM confidentielles à utiliser lors de la création de la VM, par exemple projects/debian-cloud/global/images/debian-11-bullseye-v20231115.

De même, vous pouvez utiliser la méthode disks.insert pour créer un mode confidentiel pour Hyperdisk Balanced:

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
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet Google Cloud exécutant Compute Engine
  • ZONE : zone dans laquelle vous souhaitez créer le disque
  • SOURCE_IMAGE: image compatible avec la VM confidentielle lors de la création du disque, par exemple projects/debian-cloud/global/images/debian-11-bullseye-v20231115
  • DISK_NAME : nom du nouveau disque.
  • KMS_PROJECT_ID: projet propriétaire de la clé Cloud HSM.
  • REGION : la région où se trouve le disque.
  • KEY_RING : nom du trousseau de clés qui inclut la clé
  • KEY : nom de la clé utilisée pour chiffrer le disque
  • DISK_TYPE: type de disque à créer (par exemple, hyperdisk-balanced)

Créer un instantané à partir d'un disque chiffré avec une clé CMEK

Pour protéger un instantané que vous créez à partir d'un disque chiffré avec une clé CMEK, vous devez utiliser la même clé de chiffrement que celle utilisée pour chiffrer le disque.

Vous ne pouvez pas créer un instantané qui utilise une clé CMEK à moins que le disque source n'utilise également CMEK. En outre, ne pouvez pas convertir des disques ou des instantanés chiffrés par CMEK pour utiliser le chiffrement Google Cloud par défaut, sauf si vous créez une image disque entièrement nouvelle et un nouveau disque persistant.

Les instantanés créés à partir de disques chiffrés avec une clé CMEK sont incrémentiels.

Console

  1. Dans Google Cloud Console, accédez à la page Instantanés.

    Accéder à la page Instantanés

  2. Cliquez sur Create snapshot (Créer un instantané).
  3. Sous Disque source, choisissez le disque source pour l'instantané. L'instantané est automatiquement chiffré avec la même clé que celle utilisée par le disque source.

gcloud

Pour le chiffrement géré par le client, la clé Cloud KMS utilisée pour chiffrer le disque est également utilisée pour chiffrer l'instantané.

Vous pouvez créer votre instantané dans la stratégie d'emplacement de stockage définie par vos paramètres d'instantanés ou en utilisant un autre emplacement de stockage de votre choix. Pour en savoir plus, consultez la section Choisir l'emplacement de stockage de vos instantanés.

  • Pour créer un instantané à l'emplacement par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantané, utilisez la commande gcloud compute snapshots create.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE
    
  • Sinon, pour remplacer les paramètres d'instantané et créer un instantané dans un emplacement de stockage personnalisé, incluez l'option --storage-location pour spécifier où stocker l'instantané.

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

    Remplacez les éléments suivants :

    • SNAPSHOT_NAME : nom de l'instantané.
    • SOURCE_ZONE : zone du disque source.
    • SOURCE_DISK_NAME : nom du volume de disque à partir duquel vous souhaitez créer un instantané.
    • SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé.
    • STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.

      N'utilisez le paramètre --storage-location que si vous souhaitez ignorer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés.

REST

Vous pouvez créer votre instantané dans la stratégie d'emplacement de stockage définie par vos paramètres d'instantanés ou en utilisant un autre emplacement de stockage de votre choix. Pour en savoir plus, consultez la section Choisir l'emplacement de stockage de vos instantanés.

  • Pour créer un instantané dans l'emplacement par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés, envoyez une requête POST à la méthode 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"
    }
    
  • Pour remplacer les paramètres d'instantané et créer un instantané dans un emplacement de stockage personnalisé, vous pouvez aussi envoyer une requête POST à la méthode snapshots.insert et incluez la propriété storageLocations dans votre requête :

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

Remplacez les éléments suivants :

  • DESTINATION_PROJECT_ID : ID du projet dans lequel vous souhaitez créer l'instantané.
  • SNAPSHOT_NAME : nom de l'instantané.
  • SOURCE_PROJECT_ID : ID de projet du disque source.
  • SOURCE_ZONE : zone du disque source.
  • SOURCE_DISK_NAME : nom du disque à partir duquel vous souhaitez créer un instantané.
  • KMS_PROJECT_ID : projet contenant la clé de chiffrement stockée dans Cloud Key Management Service.
  • KEY_REGION : région où se trouve la clé Cloud KMS.
  • KEY_RING : nom du trousseau de clés contenant la clé Cloud KMS.
  • SNAPSHOT_KEY : nom de la clé Cloud KMS que vous avez utilisée pour chiffrer le disque source.
  • SNAPSHOT_TYPE : type d'instantané, STANDARD ou ARCHIVE. Si aucun type d'instantané n'est spécifié, un instantané STANDARD est créé.
  • STORAGE_LOCATION : Facultatif : emplacement multirégional Cloud Storage ou la région Cloud Storage dans laquelle vous souhaitez stocker l'instantané. Vous ne pouvez spécifier qu'un seul emplacement de stockage.

    N'utilisez le paramètre storageLocations que si vous souhaitez ignorer l'emplacement de stockage par défaut prédéfini ou personnalisé configuré dans vos paramètres d'instantanés.

Chiffrer une image importée avec une clé CMEK

Vous pouvez chiffrer une nouvelle image lorsque vous importez une image personnalisée dans Compute Engine. Pour pouvoir importer une image, vous devez créer et compresser un fichier image de disque, puis importer ce fichier compressé dans Cloud Storage.

Console

  1. Dans la console Google Cloud, accédez à la page Images.

    Accéder à la page "Images"

  2. Cliquez sur Create image (Créer une image).
  3. Sous Disque source, sélectionnez le disque dont vous souhaitez créer une image.
  4. Pour le champ Chiffrement, sélectionnez Clé gérée par le client.
  5. Dans le menu déroulant, sélectionnez la clé Cloud KMS à utiliser pour chiffrer cette image.
  6. Poursuivez le processus de création de l'image.

gcloud

Pour importer et chiffrer une image, utilisez la commande gcloud compute images create. Pour le chiffrement géré par le client, spécifiez la clé Cloud KMS de l'image.

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

Remplacez les éléments suivants :

  • IMAGE_NAME : nom de l'image que vous créez.
  • SOURCE_DISK : le nom du disque pour lequel créer un instantané.
  • KMS_PROJECT_ID : projet contenant la clé Cloud KMS.
  • REGION : région dans laquelle se trouve la clé Cloud KMS.
  • KEY_RING : trousseau de clés contenant la clé Cloud KMS
  • KEY : nom de la clé à utiliser pour chiffrer le nouveau disque

REST

Pour chiffrer une image importée, envoyez une requête POST à la méthode images.insert. Spécifiez l'URI du fichier compressé, ajoutez la propriété imageEncryptionKey à la requête de création d'image, puis spécifiez la clé permettant de chiffrer l'image dans la propriété 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"
   }
}

Remplacez les éléments suivants :

  • PROJECT_ID : projet dans lequel créer l'image chiffrée.
  • IMAGE_NAME : nom de l'image que vous créez.
  • KMS_PROJECT_ID : projet contenant la clé Cloud KMS.
  • REGION : région dans laquelle se trouve la clé Cloud KMS.
  • KEY_RING : trousseau de clés contenant la clé Cloud KMS
  • KEY : nom de la clé que vous avez utilisée pour chiffrer le disque source.

Créer un disque persistant à partir d'un instantané chiffré avec une clé CMEK

Pour créer un disque persistant autonome à l'aide d'un instantané chiffré, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Disques.

    Accéder à la page Disques

  2. Cliquez sur Créer un disque et saisissez les propriétés du nouveau disque.
  3. Sous Type de source, sélectionnez l'image ou l'instantané que vous souhaitez utiliser.
  4. Facultatif : Si vous souhaitez spécifier une nouvelle clé de chiffrement, dans le champ Chiffrement, spécifiez le type de clé de chiffrement à utiliser, puis fournissez les informations de clé de chiffrement.

    Si vous souhaitez supprimer la clé de chiffrement gérée ou fournie par le client, utilisez la valeur par défaut Clé de chiffrement gérée par Google pour le chiffrement.

  5. Poursuivez le processus de création du disque persistant.

gcloud

Exécutez la commande gcloud compute disks create pour créer un disque persistant autonome à partir d'un instantané chiffré.

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

Remplacez les éléments suivants :

  • DISK_NAME : le nom du nouveau disque
  • SNAPSHOT_NAME : nom de l'instantané chiffré

    Pour utiliser une image au lieu d'un instantané, remplacez --source-snapshot SNAPSHOT_NAME par --image IMAGE_NAME.

  • KMS_PROJECT_ID : projet contenant la clé Cloud KMS (facultatif).

  • REGION (facultatif) : région dans laquelle se trouve la clé Cloud KMS

  • KEY_RING : (facultatif) trousseau de clés contenant la clé Cloud KMS

  • KEY : nom de la clé Cloud KMS à utiliser pour chiffrer le nouveau disque.

    Pour chiffrer le nouveau disque, vous pouvez effectuer l'une des opérations suivantes :

    • Pour spécifier une nouvelle clé de chiffrement gérée par le client, utilisez l'option --kms-key.
    • Pour utiliser la clé par défaut appartenant à Google et gérée par Google, n'incluez pas l'option --kms-key.

REST

Envoyez une requête POST à la méthode compute.disks.insert pour créer un disque persistant autonome à partir d'un instantané chiffré. Utilisez la propriété sourceSnapshot pour spécifier l'instantané.

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

Remplacez les éléments suivants :

  • PROJECT_ID : projet dans lequel créer le disque
  • ZONE : zone dans laquelle créer le disque
  • DISK_NAME : le nom du nouveau disque
  • SNAPSHOT_PROJECT_ID : projet contenant l'instantané.
  • SNAPSHOT_NAME : nom de l'instantané chiffré

    Pour utiliser une image au lieu d'un instantané, remplacez sourceSnapshot par sourceImage.

  • KMS_PROJECT_ID : projet contenant la clé Cloud KMS (facultatif).

  • REGION (facultatif) : région dans laquelle se trouve la clé Cloud KMS

  • KEY_RING : (facultatif) trousseau de clés contenant la clé Cloud KMS

  • KEY : nom de la clé Cloud KMS à utiliser pour chiffrer le nouveau disque.

    Si vous incluez diskEncryptionKey, le disque est chiffré avec la clé Cloud KMS spécifiée. Si vous n'incluez pas diskEncryptionKey, le disque est chiffré à l'aide d'une clé appartenant à Google et gérée par Google.

Associer un disque de démarrage chiffré avec une clé CMEK à une nouvelle VM

Console

  1. Accédez à la page Créer une instance dans Google Cloud Console.

    Accéder à la page Créer une instance

  2. Spécifiez les détails de la VM, puis, dans la section Disque de démarrage, cliquez sur Modifier. Ensuite, procédez comme suit :

    1. Cliquez sur Disques existants.
    2. Dans la liste Disque, sélectionnez un disque existant à associer à la VM.
    3. Cliquez sur Select (Sélectionner).
  3. Poursuivez le processus de création de la VM.

gcloud

Pour associer un disque chiffré lorsque vous créez une VM, utilisez la commande gcloud compute instances create. Utilisez l'option --disk pour spécifier le disque de démarrage chiffré, comme illustré dans l'exemple suivant :

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

Remplacez les éléments suivants :

  • VM_NAME : nom de la VM que vous créez.
  • DISK_NAME : le nom du disque chiffré.

REST

Envoyez une requête POST à la méthode compute.instances.insert. Utilisez la propriété disks pour spécifier le disque de démarrage chiffré, comme illustré dans l'exemple suivant :

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

Remplacez les éléments suivants :

  • PROJECT_ID : projet dans lequel créer la nouvelle VM.
  • ZONE : zone dans laquelle créer la nouvelle VM
  • DISK_ALIAS : nom d'appareil unique à utiliser comme alias de disque dans le répertoire /dev/disk/by-id/google-* de la VM qui exécute un système d'exploitation Linux. Ce nom peut être utilisé pour faire référence au disque pour des opérations telles que le montage ou le redimensionnement depuis l'instance. Si vous ne spécifiez pas de nom d'appareil, la VM choisit un nom d'appareil par défaut à appliquer à ce disque, au format persistent-disk-x, où x est un numéro attribué par Compute Engine. Ce champ ne s'applique qu'aux volumes de disque persistant.
  • DISK_NAME : le nom du disque chiffré.

Supprimer la clé de chiffrement Cloud KMS d'un disque persistant

Vous pouvez déchiffrer le contenu d'un disque chiffré et créer un disque qui utilise le chiffrement Compute Engine par défaut. Par défaut, Google Cloud chiffre toutes les données au repos.

  1. Créez un instantané du disque chiffré.
  2. Utilisez le nouvel instantané chiffré pour créer un disque persistant.

Le nouveau disque persistant utilisera le chiffrement Google Cloud par défaut pour protéger son contenu. Tous les instantanés que vous créerez à partir de ce disque devront également utiliser le chiffrement par défaut.

Effectuer une rotation de votre clé de chiffrement Cloud KMS pour un disque

Alternez la clé utilisée pour chiffrer le disque en créant un nouveau disque qui utilise une nouvelle version de clé Cloud KMS. La rotation des clés est une bonne pratique à suivre pour respecter les pratiques de sécurité standardisées. Pour effectuer une rotation de vos clés, procédez comme suit :

  1. Effectuez une rotation de votre clé Cloud KMS.
  2. Créez un instantané du disque chiffré.
  3. Utilisez le nouvel instantané pour créer un disque avec la clé ayant subi la rotation à l'étape précédente.
  4. Remplacez le disque associé à votre VM qui utilise l'ancienne clé de chiffrement.

Lorsque vous créez le disque, il utilise la nouvelle version de clé pour le chiffrement. Tous les instantanés que vous créez à partir de ce disque utilisent la dernière version de clé primaire.

Lors de la rotation d'une clé, les données chiffrées avec les versions de clé précédentes ne sont pas automatiquement rechiffrées. Pour en savoir plus, consultez la page Rechiffrer des données. La rotation d'une clé n'entraîne ni la désactivation, ni la destruction automatique d'une version de clé existante.

Désactiver ou supprimer une clé CMEK

Si vous n'avez plus besoin d'une CMEK ou si vous souhaitez empêcher son utilisation, supprimez ou désactivez la clé. La suppression, la désactivation ou la suppression des autorisations IAM sur une clé est également appelée révocation de la clé.

Impact de la révocation de clé sur les ressources chiffrées

Lorsque vous révoquez une clé de chiffrement, les ressources qu'elle protège sont affectées comme suit:

  • Vous ne pouvez pas démarrer une VM si des clés ont été révoquées sur l'un de ses disques associés.
  • Si un disque qui utilise la clé est associé à une VM en cours d'exécution et que vous avez activé l'option Arrêt de VM en cas de révocation de clé pour la VM, Compute Engine arrête la VM dans un délai de sept heures.
  • Vous ne pouvez pas associer un disque avec une clé révoquée à une VM ni créer d'instantané à partir du disque.
  • Vous ne pouvez pas utiliser d'images ni d'instantanés chiffrés avec des clés révoquées pour créer des disques.

Si vous désactivez la clé, vous pouvez inverser les effets ci-dessus en la réactivant. Si vous supprimez la clé, les effets ci-dessus seront irréversibles.

Configurer l'arrêt de la VM sur révocation de la clé Cloud KMS

Vous pouvez configurer votre VM pour qu'elle se ferme automatiquement lorsque vous révoquez la clé Cloud KMS qui protège un disque associé à la VM. Vous pouvez révoquer une clé en la désactivant ou en la supprimant. Lorsque ce paramètre est activé, la VM s'arrête dans les sept heures suivant la révocation de la clé.

Si vous réactivez la clé, vous pouvez redémarrer la VM avec le disque associé que la clé protège. La VM ne redémarre pas automatiquement après l'activation de la clé.

Console

Pour configurer une VM afin qu'elle s'arrête lorsqu'une clé Cloud KMS est révoquée, procédez comme suit :

  1. Commencez à créer une VM qui inclut un disque protégé par une clé Cloud KMS.
  2. Ouvrez le menu Mise en réseau, disques, sécurité, gestion, location unique.
  3. Développez la section Gestion.
  4. Sous Règle de révocation de clé de chiffrement gérée par le client (CMEK), sélectionnez Arrêter.

gcloud

Exécutez la commande gcloud compute instances create pour créer une VM et incluez --key-revocation-action-type=stop.

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

REST

Utilisez la méthode instances.insert pour créer une VM et définissez la propriété "keyRevocationActionType" sur "STOP". L'exemple suivant crée la VM à partir d'une image publique.

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

Vous pouvez également configurer un modèle d'instance pour créer des VM qui s'arrêtent sur révocation de clé à l'aide de gcloud CLI ou de REST.

Console

Vous pouvez utiliser un modèle d'instance pour créer des VM qui s'arrêtent lorsqu'une clé Cloud KMS est révoquée.

  1. Commencez à créer un modèle d'instance incluant un disque protégé par une clé Cloud KMS.
  2. Ouvrez le menu Mise en réseau, disques, sécurité, gestion, location unique.
  3. Développez la section Gestion.
  4. Sous Règle de révocation de clé de chiffrement gérée par le client (CMEK), sélectionnez Éteindre.

gcloud

Créez un modèle d'instance à l'aide de la commande gcloud compute instance-templates create et ajoutez --key-revocation-action-type=stop.

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

REST

Envoyez une requête POST à la méthode instanceTemplates.insert. Dans le corps de la requête, vous devez définir explicitement tous les champs de configuration requis. Si vous souhaitez que les VM créées à partir de ce modèle s'arrêtent lors de la révocation de la clé, spécifiez "keyRevocationActionType":"STOP". Par exemple, un modèle d'instance qui ne comporte que les champs obligatoires requis et va créer des VM qui s'arrêtent lors de la révocation de la clé se présente comme suit :

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

Après avoir créé une VM qui est configurée pour s'arrêter sur révocation de Cloud KMS, créez et associez un disque persistant chiffré avec une clé Cloud KMS.