Utiliser des clés de chiffrement gérées par le client (CMEK)

Cette page explique comment effectuer des tâches liées aux clés de chiffrement gérées par le client (CMEK) pour Firestore en mode Datastore. Pour plus d'informations sur la CMEK en général, y compris quand et pourquoi l'activer, consultez la documentation Cloud KMS.

Préparer vos clés CMEK

Avant de pouvoir créer une base de données en mode Datastore protégée par une clé CMEK, vous devez effectuer les étapes suivantes :

  1. Demandez l'accès à la fonctionnalité CMEK du mode Datastore.
  2. Créez (ou récupérez) un agent de service en mode Datastore.
  3. Créez une clé CMEK.
  4. Configurez les paramètres IAM pour cette clé.

Suivez ces étapes pour chaque projet qui contiendra des bases de données Firestore protégées par CMEK. Si vous créez une clé CMEK ultérieurement, vous devez configurer les paramètres IAM pour cette clé.

Demander l'accès

Avant de créer un agent de service en mode Datastore, demandez l'accès à la fonctionnalité CMEK en remplissant ce formulaire.

Créer un agent de service en mode Datastore

Avant de créer une clé CMEK, vous devez disposer d'un agent de service en mode Datastore, qui est un type de compte de service géré par Google et utilisé par le mode Datastore pour accéder à la clé.

Exécutez la commande services identity create pour créer l'agent de service utilisé par le mode Datastore pour accéder à la clé CMEK en votre nom. Cette commande crée le compte de service s'il n'existe pas déjà, puis l'affiche.

gcloud beta services identity create \
    --service=firestore.googleapis.com \
    --project FIRESTORE_PROJECT

Remplacez FIRESTORE_PROJECT par le projet que vous prévoyez d'utiliser pour vos bases de données en mode Datastore.

La commande affiche l'ID de l'agent de service, qui est formaté comme une adresse e-mail. Enregistrez la chaîne de l'e-mail de sortie, car vous en aurez besoin à une étape ultérieure.

Service identity created:
service-xxx@gcp-sa-firestore.iam.gserviceaccount.com

Créer une clé

Vous pouvez utiliser une clé créée directement dans Cloud KMS ou une clé gérée en externe que vous rendez disponible avec Cloud External Key Manager.

L'emplacement de clé Cloud KMS doit être identique à celui de la base de données en mode Datastore avec laquelle il sera utilisé.

  • Pour les emplacements de base de données régionaux, utilisez le même nom d'emplacement pour le trousseau de clés, la clé et la base de données, car les noms d'emplacement ont une correspondance un-à-un.

    Par exemple, si vous souhaitez créer une base de données protégée par une clé CMEK dans us-west1, créez un trousseau de clés et une clé dans us-west1.

  • Pour les emplacements de base de données multirégionaux, utilisez le nom de l'emplacement multirégional KMS :

    • Utilisez l'emplacement multirégional us de Cloud KMS pour l'emplacement multirégional nam5 du mode Datastore.
    • Utilisez l'emplacement multirégional europe de Cloud KMS pour l'emplacement multirégional eur3 du mode Datastore.

Dans le projet Google Cloud où vous souhaitez gérer vos clés, procédez comme suit :

  1. Activez l'API Cloud KMS.

  2. Créez un trousseau de clés et une clé à l'aide de l'une des options suivantes :

Configurer les paramètres IAM de la clé

Console

Pour attribuer un rôle Cloud KMS à votre agent de service, procédez comme suit : Vous pouvez également accorder une autorisation au niveau de la clé ou du trousseau si vous souhaitez bénéficier d'un niveau de précision inférieur.

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

    Accédez à la page IAM.

  2. Cliquez sur Ajouter.

  3. Saisissez l'ID au format adresse e-mail de votre agent de service en mode Datastore.

  4. Sélectionnez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS.

  5. Cliquez sur Enregistrer.

gcloud

Attribuez le rôle cloudkms.cryptoKeyEncrypterDecrypter à votre agent de service :

gcloud kms keys add-iam-policy-binding KMS_KEY \
--keyring KMS_KEYRING\
--location KMS_LOCATION \
--member serviceAccount:SERVICE_AGENT_EMAIL \
--role roles/cloudkms.cryptoKeyEncrypterDecrypter \
--project KMS_PROJECT

Remplacez les éléments suivants :

  • KMS_KEY par le nom que vous avez attribué à la clé.
  • KMS_KEYRING par le trousseau de clés KMS contenant la clé
  • KMS_LOCATION par la région contenant le trousseau de clés.
  • SERVICE_AGENT_EMAIL avec l'identifiant au format adresse e-mail de l'agent de service auquel vous accordez l'accès.
  • KMS_PROJECT avec le projet contenant la clé

Le terminal devrait afficher une réponse semblable à celle-ci :

Updated IAM policy for key KMS_KEY.
bindings:
- members:
- serviceAccount:
service