Chiffrer des données avec des clés de chiffrement gérées par le client

Cette page explique comment chiffrer les données sur vos instances et sauvegardes Filestore à l'aide de vos propres clés de chiffrement.

Par défaut, Google Cloud chiffre automatiquement les données au repos à l'aide de clés de chiffrement gérées par Google Cloud. Si vous avez besoin de mieux contrôler les clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client pour Filestore.

Options des clés de chiffrement gérées par le client

Cloud Key Management Service accepte les clés de chiffrement gérées par le client (CMEK), qui peuvent être stockées en tant que clés logicielles, sous forme de clés matérielles dans un cluster HSM ou en externe dans Cloud External Key Manager (Cloud EKM). Plusieurs options sont disponibles.

Pour en savoir plus, consultez la page Cloud Key Management Service.

Cloud External Key Manager

La compatibilité de Cloud EKM avec Filestore est désormais en phase de disponibilité générale (GA). Pour en savoir plus, consultez la page Cloud External Key Manager.

Perturbations du service EKM

De par leur conception, les clés externes sont gérées par un tiers. Dans ce cas, Google Cloud n'est pas responsable de leur disponibilité.

Si Cloud Key Management Service (Cloud KMS) est informé par External Key Manager (EKM) qu'une clé externe est inaccessible, les utilisateurs reçoivent une notification ekm_key_unreachable_detected. Pendant une heure maximum, les utilisateurs ont un accès limité aux opérations de l'instance. Au bout d'une heure, si l'état de la clé reste inchangé, les actions suivantes s'appliquent:

  • La clé est désactivée.
  • Toutes les opérations de chiffrement et de déchiffrement échouent.
  • L'instance Filestore est suspendue.

Dans certains cas, par exemple un événement non planifié tel qu'un redémarrage de VM, l'accès à l'instance peut être interrompu avant une heure.

Les notifications clés inaccessibles peuvent être consultées à partir de la page d'informations sur l'instance Filestore:

Accéder à la page des instances Filestore

Les utilisateurs reçoivent également des notifications ekm_key_unreachable_detected pour l'une des opérations suivantes, si elles sont effectuées dans l'heure suivant la première notification signalée:

Niveaux compatibles

Le tableau suivant présente les niveaux de service Filestore qui acceptent les clés de chiffrement gérées par le client:

Niveau Compatibilité CMEK
HDD de base Non
SSD de base Non
Zone zonale avec une plage de capacité inférieure Oui
Zone zonale avec une plage de capacité plus élevée (anciennement SSD à grande échelle) Oui
Enterprise Oui

Créer un trousseau et une clé à utiliser avec votre instance

Le trousseau de clés et la clé peuvent se trouver dans un projet différent de l'instance Filestore, mais ils doivent se trouver au même emplacement. Si vous possédez déjà un trousseau de clés Cloud KMS et une clé que vous souhaitez utiliser avec Filestore, passez à la section suivante. Sinon, suivez les instructions de la section Créer des clés de chiffrement symétriques pour créer un trousseau et une clé.

Accorder un accès en clé au compte de service Filestore

Pour que vous puissiez créer une instance Filestore avec une clé de chiffrement gérée par le client, le compte de service Filestore doit disposer du rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter).

  1. Un compte de service Filestore est créé la première fois que vous créez une instance Filestore dans le projet. Si vous ne possédez pas encore de compte de service Filestore, exécutez la commande services identity create suivante:

    gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
    

    Remplacez INSTANCE_PROJECT_NUMBER_OR_ID par le numéro ou l'ID du projet dans lequel vous souhaitez créer l'instance Filestore.

  2. Attribuez au compte de service Filestore le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS en exécutant la commande projects add-iam-policy-binding:

    gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \
        --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    Remplacez les éléments suivants :

    • KMS_PROJECT_NUMBER_OR_ID par le numéro ou l'ID du projet contenant la clé Cloud KMS que vous souhaitez utiliser.
    • INSTANCE_PROJECT_NUMBER par le numéro du projet (et non l'ID) du projet dans lequel vous souhaitez créer l'instance Filestore.

Créer une instance qui utilise votre clé Cloud KMS

Console Google Cloud

Pour créer une instance qui utilise votre clé Cloud KMS pour le chiffrement des données, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page des instances Filestore.

    Accéder à la page des instances Filestore

  2. Cliquez sur Créer une instance.

  3. Sélectionnez un niveau d'instance compatible avec les CMEK, et remplissez tous les autres champs obligatoires et facultatifs comme vous le feriez normalement.

  4. Cliquez sur Afficher les options avancées.

  5. Cochez la case Utiliser une clé de chiffrement gérée par le client (CMEK).

  6. Sélectionnez la clé Cloud KMS que vous souhaitez utiliser pour l'instance.

  7. Cliquez sur Créer.

gcloud CLI

Pour créer une instance Filestore qui utilise votre clé Cloud KMS pour le chiffrement des données, spécifiez l'indicateur --kms-key dans la commande filestore instances create:

gcloud filestore instances create nfs-server \
    --tier=<var>TIER</var> \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

Remplacez les éléments suivants :

  • TIER avec un niveau Filestore compatible avec les clés de chiffrement gérées par le client.
  • KMS_KEY par le nom complet de la clé Cloud KMS que vous souhaitez utiliser ; Vous pouvez également spécifier chaque argument séparément au format suivant:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

Remplacez les éléments suivants :

  • KMS_KEY par le nom de la clé Cloud KMS.
  • KMS_PROJECT_NUMBER_OR_ID par le numéro ou l'ID du projet dans lequel la clé est créée.
  • KMS_KEY_RING par le nom du trousseau de clés.
  • KMS_REGION par la région du trousseau de clés. Le trousseau de clés et l'instance doivent se trouver dans la même région.

Obtenir une liste de clés

Vous pouvez obtenir une liste de clés en exécutant la commande kms keys list:

gcloud kms keys list \
    --project=KMS_PROJECT_NUMBER_OR_ID \
    --keyring=KEY_RING \
    --location=KMS_REGION

Remplacez les éléments suivants :

  • KMS_PROJECT_NUMBER_OR_ID par le numéro ou l'ID du projet dans lequel la clé est créée.
  • KEY_RING par le nom du trousseau de clés.
  • KMS_REGION par la région du trousseau de clés.

La colonne Nom de la sortie donne le nom complet des clés existantes. Exemple :

projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key

Obtenir des informations sur la clé d'instance

Les sections suivantes expliquent comment obtenir des informations sur les clés d'instance.

Répertorier les instances qui utilisent une clé Cloud KMS particulière

Vous pouvez répertorier les instances Filestore qui utilisent une clé particulière en exécutant la commande instances list:

gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"

Remplacez KMS_KEY par le nom complet de la clé que vous souhaitez utiliser.

Exemple :

gcloud filestore instances list \
    --filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"

Le résultat ressemble à ceci:

INSTANCE_NAME LOCATION    TIER       CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS   STATE CREATE_TIME
nfs-server    us-central1 ENTERPRISE 1024        vol1            10.166.108.2 READY 2021-08-12T11:38:56

Obtenir des informations sur les clés Cloud KMS d'une instance

Utilisez l'une des méthodes suivantes pour obtenir des informations de clé Cloud KMS pour une instance Filestore:

Console Google Cloud

  1. Accéder à la page des instances Filestore

    Accéder à la page des instances Filestore

  2. Cliquez sur l'identifiant de l'instance pour ouvrir la page d'informations de l'instance.

  3. Cliquez sur l'onglet Vue d'ensemble.

Si l'instance chiffre des données à l'aide d'une clé Cloud KMS au lieu d'une clé de chiffrement gérée par Google, le nom de la clé s'affiche dans le champ Clé de chiffrement.

gcloud CLI

Exécutez la commande instances describe suivante :

gcloud filestore instances describe INSTANCE_ID \
   --location=INSTANCE_LOCATION

Remplacez les éléments suivants :

  • INSTANCE_ID par l'ID de l'instance Filestore pour laquelle vous souhaitez obtenir des informations.
  • INSTANCE_LOCATION par la région ou la zone où se trouve l'instance.

Le résultat ressemble à ceci:

createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
  name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
  key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.100.2
  modes:
  - MODE_IPV4
  network: network
  reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE

Désactiver ou détruire une clé Cloud KMS utilisée par une instance

Si un changement d'état de la clé Cloud KMS est détecté, l'instance arrête automatiquement de diffuser des données. Voici quelques exemples :

  • Désactiver une clé ou une version de clé
  • Détruire une clé ou une version de clé
  • Modifier les autorisations d'une clé

Cette détection se produit généralement quelques minutes après le changement d'état de la clé, mais peut parfois durer jusqu'à une heure.

Une fois l'instance arrêtée, tout accès aux données de partage de fichiers et aux instantanés est bloqué. Les instances arrêtées continuent d'être facturées jusqu'à ce qu'elles soient supprimées.

Démarrer une instance arrêtée

Si une instance Filestore arrêtée utilise une clé Cloud KMS pour le chiffrement des données, toutes les versions de clé de la clé doivent être activées ou restaurées avant de redémarrer l'instance.

Une fois l'état de la clé Cloud KMS activé, l'instance détecte automatiquement les modifications de clé et redémarre sans aucune autre action, généralement dans les 20 minutes.

Compatibilité des CMEK avec les chaînes de sauvegarde

Vous pouvez utiliser des clés CMEK pour chiffrer non seulement vos instances Filestore, mais aussi vos chaînes de sauvegarde.

Les chaînes de sauvegarde se trouvent dans un seul bucket et une seule région. Pour stocker et chiffrer des données de sauvegarde dans une région extérieure à l'instance source, les utilisateurs doivent appliquer deux CMEK distinctes: une pour l'instance et une pour la chaîne de sauvegarde. Certaines conditions s'appliquent:

  • Une clé CMEK doit se trouver dans la même région que la chaîne de sauvegarde qu'elle chiffre.

  • Une seule clé CMEK est appliquée au bucket où la chaîne de sauvegarde est stockée, et ne peut pas être combinée ni remplacée.

  • Pour créer une sauvegarde à l'aide d'une nouvelle clé CMEK, vous devez d'abord supprimer l'intégralité de la chaîne de sauvegarde existante.

Les CMEK ne sont pas disponibles pour les sauvegardes de base.

Pour en savoir plus, consultez la section Sauvegardes.

Étapes suivantes