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

Par défaut, Compute Engine chiffre les contenus client au repos. Ce service traite et gère ce chiffrement sans que vous ayez besoin d'intervenir. Toutefois, si vous souhaitez contrôler et gérer vous-même ce processus de chiffrement, vous pouvez utiliser des clés de chiffrement de clés. Ces dernières ne chiffrent pas directement les données. Elles s'appliquent aux clés de chiffrement de données qui, elles, chiffrent vos données.

Deux options sont disponibles pour les clés de chiffrement de clés dans Compute Engine :

  • Vous pouvez utiliser Cloud Key Management Service pour créer et gérer les clés de chiffrement de clés. Pour en savoir plus, consultez la section Gestion des clés. Elle décrit en détail cette option appelée clés de chiffrement gérées par le client (CMEK, customer-managed encryption keys).

  • Vous pouvez créer et gérer vos propres clés de chiffrement de clés. Pour en savoir plus sur cette option appelée clés de chiffrement fournies par le client (CSEK, customer-supplied encryption keys), consultez la section Chiffrer des disques avec des clés fournies par le client.

Une fois que vous avez créé une ressource Compute Engine protégée par Cloud KMS, vous n'avez pas besoin de spécifier la clé, car Compute Engine identifie la clé KMS utilisée. La méthode employée diffère de celle permettant à Compute Engine d'accéder aux ressources protégées par les clés fournies par le client. Pour ce type d'accès, vous devez spécifier la clé fournie par le client.

Renseignez-vous au sujet des options de chiffrement sur Google Cloud Platform.

Avant de commencer

  1. Familiarisez-vous avec les disques, les images, les instantanés de disques persistants et les instances.

  2. Déterminez si vous allez exécuter Compute Engine et Cloud KMS dans le même projet Google Cloud Platform ou dans différents projets. Dans cette documentation, voici les conventions qui sont utilisées :

    • [PROJECT_ID] est l'ID du projet exécutant Compute Engine.
    • [PROJECT_NUMBER] est le numéro du projet exécutant Compute Engine.
    • [KMS_PROJECT_ID] est l'ID du projet exécutant Cloud KMS (même s'il correspond également au projet exécutant Compute Engine).

    Pour en savoir plus sur les ID et les numéros de projet GCP, consultez la section Identifier des projets.

  3. Pour le projet GCP exécutant Compute Engine, configurez l'accès à l'API pour Compute Engine.

  4. Pour le projet GCP qui exécute Cloud KMS, accomplissez les étapes suivantes :

    1. Activez l'API Cloud KMS.
    2. 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.
  5. Attribuez le rôle Cloud KMS CryptoKey Encrypter/Decrypter à l'agent de service de Compute Engine. Ce compte se présente comme suit :

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

    Vous pouvez attribuer le rôle à l'aide de l'outil de ligne de commande gcloud :

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

    Remplacez d'une part [KMS_PROJECT_ID] par l'ID du projet GCP exécutant Cloud KMS et d'autre part [PROJECT_NUMBER] par le numéro (et non l'ID) du projet GCP exécutant les ressources Compute Engine.

Spécifications

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.

Restrictions

  • Vous ne pouvez chiffrer que des nouvelles ressources (telles que les disques persistants, les images et les instantanés) avec vos propres clés. Elles ne permettent pas de chiffrer les ressources existantes.

  • Vous ne pouvez pas utiliser vos propres clés avec des disques SSD locaux, car ces disques ne persistent pas au-delà de la durée de vie d'une machine virtuelle. En outre, les disques SSD locaux sont déjà protégés par une clé de chiffrement éphémère que Google ne conserve pas.

Chiffrer un nouveau disque persistant avec vos propres clés

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

Console

  1. Dans la console Google Cloud Platform, 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. Cliquez sur Créer pour créer le disque.

Ligne de commande

gcloud compute disks \
create encrypted-disk \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

API

Chiffrez un disque en utilisant la propriété diskEncryptionKey avec la propriété kmsKeyName. Vous pouvez par exemple chiffrer un nouveau disque lors de la création d'une instance avec votre clé Cloud KMS :

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

{
"machineType": "zones/[ZONE]/machineTypes/n1-standard-1",
"disks": [
 {
  "type": "PERSISTENT",
  "diskEncryptionKey": {
    "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]"
  },
  "initializeParams": {
   "sourceImage": "projects/debian-cloud/global/images/debian-8-jessie-v20160301"
  },
  "boot": true
 }
],
...
}

De la même façon, vous pouvez utiliser l'API pour créer un disque persistant autonome et le chiffrer avec votre clé Cloud KMS :

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/
[ZONE]/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F
projects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-8-jessie-v20160301

{
 "name": "new-encrypted-disk-key",
 "diskEncryptionKey": {
   "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]"
  },
 "type": "zones/[ZONE]/diskTypes/pd-standard"
}

Créer un instantané à partir d'un disque chiffré

Si vous créez un instantané à partir d'un disque chiffré avec une clé de type CMEK, il doit être protégé par la clé de chiffrement utilisée pour le disque.

Console

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

    Accéder à la page Instantanés

  2. Cliquez sur Créer un instantané.
  3. Sous Disque source, choisissez le disque source pour l'instantané. Ce dernier est automatiquement chiffré avec la clé utilisée par le disque source.

Ligne de commande

gcloud compute \
disks snapshot encrypted-disk \
--zone [ZONE]

API

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/disks/example-disk/createSnapshot

{
 "snapshotEncryptionKey":  {
   "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[SNAPSHOT_KEY]"
 },
 "name": "snapshot-encrypted-disk"
}

Vous ne pouvez pas créer un instantané protégé par une clé CMEK à moins que le disque lui-même ne soit déjà protégé par ce type de clé. En outre, il est impossible de modifier des disques ou des instantanés chiffrés pour qu'ils utilisent le chiffrement Compute Engine par défaut, sauf si vous créez une image disque de toutes pièces et un disque persistant.

Chiffrer une image importée

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 Google Cloud Storage.

Console

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

    Accéder à la page Images

  2. Cliquez sur Créer une image.
  3. Sous Disque source, sélectionnez le disque dont vous souhaitez créer une image.
  4. Sous 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.

Ligne de commande

gcloud compute \
images create [...] \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

API

Pour chiffrer une image importée, indiquez 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://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
"rawDisk": {
 "source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
},
"name": "new-encrypted-image",
"sourceType": "RAW",
"imageEncryptionKey": {
  "kmsKeyName": "projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[IMAGE_KEY]"
  }
}

Créer un disque persistant à partir d'une ressource chiffrée

Créer un disque à partir d'un instantané chiffré

Pour créer un disque persistant autonome à l'aide d'un instantané chiffré, procédez comme indiqué ci-dessous.

Console

  1. Dans la console Google Cloud Platform, 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é souhaités.
  4. Poursuivez le processus de création du disque persistant.

Ligne de commande

gcloud compute \
disks create [...] \
--source-snapshot example-snapshot \
--kms-key projects/[KMS_PROJECT_ID]/locations/[REGION]/keyRings/[KEY_RING]/cryptoKeys/[KEY]

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

API

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

{
"name": "disk-from-encrypted-snapshot",
"sourceSnapshot": "global/snapshots/encrypted-snapshot"
}

Associer un disque chiffré à une nouvelle instance

Console

  1. Dans la console Google Cloud Platform, accédez à la page Instances de VM.

    Accéder à la page des instances de VM

  2. Cliquez sur Créer une instance.
  3. Sous Disque de démarrage, cliquez sur Modifier.
  4. Cliquez sur Disques existants.
  5. Sélectionnez un disque existant à associer à l'instance.
  6. Continuez le processus de création de l'instance.

Ligne de commande

gcloud compute instances \
create example-instance \
--disk name=encrypted-disk,boot=yes

API

"disks": [
{
  "deviceName": "encrypted-disk",
  "source": "projects/[PROJECT_ID]/zones/[ZONE]/disks/encrypted-disk"
  }
 }
]

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.

  1. Créez une image du disque chiffré et spécifiez le chiffrement automatique pour la nouvelle image.
  2. Utilisez la nouvelle image pour créer un disque persistant.

Le nouveau disque persistant utilisera le chiffrement Compute Engine 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.

Impact de la désactivation ou de l'activation des clés de chiffrement

La désactivation ou la suppression d'une clé de chiffrement a les effets suivants sur le contenu qu'elle protège :

  • Les VM associées à des disques qui sont protégés par la clé ne peuvent pas démarrer.
  • Les disques protégés par la clé ne peuvent pas être associés à des machines virtuelles et ne permettent pas de créer des instantanés.
  • Les instantanés protégés par la clé ne peuvent pas être utilisés pour créer un disque.
  • Les images protégées par la clé ne peuvent pas être utilisées pour créer un disque.

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

Limites

  • Les ressources régionales (disques) peuvent être chiffrées par des clés se trouvant au même emplacement ou à l'emplacement global. Par exemple, un disque de la zone us-west1-a peut être chiffré avec une clé située dans la région us-west1 ou dans l'emplacement global. Les ressources globales (images, instantanés) peuvent être chiffrées par des clés se trouvant à n'importe quel emplacement.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine