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 :
- Demandez l'accès à la fonctionnalité CMEK du mode Datastore.
- Créez (ou récupérez) un agent de service en mode Datastore.
- Créez une clé CMEK.
- 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é dansus-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
usde Cloud KMS pour l'emplacement multirégionalnam5du mode Datastore. - Utilisez l'emplacement multirégional
europede Cloud KMS pour l'emplacement multirégionaleur3du mode Datastore.
- Utilisez l'emplacement multirégional
Dans le projet Google Cloud où vous souhaitez gérer vos clés, procédez comme suit :
Créez un trousseau de clés et une clé à l'aide de l'une des options suivantes :
- Créez le trousseau de clés et la clé directement dans Cloud KMS.
- Utilisez une clé gérée en externe. Créez la clé externe, puis créez une clé Cloud EKM permettant de la rendre disponible via Cloud KMS.
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.
Dans la console Google Cloud , accédez à la page IAM.
Cliquez sur Ajouter.
Saisissez l'ID au format adresse e-mail de votre agent de service en mode Datastore.
Sélectionnez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS.
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_KEYpar le nom que vous avez attribué à la clé.KMS_KEYRINGpar le trousseau de clés KMS contenant la cléKMS_LOCATIONpar la région contenant le trousseau de clés.SERVICE_AGENT_EMAILavec l'identifiant au format adresse e-mail de l'agent de service auquel vous accordez l'accès.KMS_PROJECTavec 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