Par défaut, Cloud Tasks chiffre vos données stockées au repos. Google Cloud gère ce chiffrement par défaut sans intervention de votre part.
Si vous avez des exigences réglementaires ou de conformité spécifiques liées aux clés qui protègent vos données, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour Cloud Tasks. Votre tâche et les données associées (corps et en-têtes) au repos sont protégées par une clé de chiffrement à laquelle vous seul pouvez accéder, et que vous pouvez contrôler et gérer à l'aide de Cloud Key Management Service (Cloud KMS).
Éléments protégés par CMEK
Lorsque vous activez les CMEK dans Cloud Tasks, vous les activez pour une région. Lorsque cette option est activée, le corps et l'en-tête des tâches créées dans cette région sont protégés par votre clé au repos. Si une tâche a été créée alors que la CMEK était activée et qu'elle devient ensuite inactive (en désactivant ou en supprimant la clé, ou en désactivant la CMEK), la tâche est chiffrée avec votre clé, mais ne peut pas être exécutée.
Les tâches ne sont pas protégées par des clés CMEK dans les cas suivants:
- La tâche a été créée avant l'activation des CMEK
- La tâche ne se trouve pas dans la région pour laquelle CMEK est activé
- La tâche est affectée par une limite de compatibilité
Limites de compatibilité
L'intégration de Cloud Tasks à la fonctionnalité CMEK n'est pas compatible avec les éléments suivants:
google-gax
versions antérieures à4.0.0
:le package NPMgoogle-gax
pour Node.js est partiellement compatible avec les versions antérieures à4.0.0
. Pour ces versions, les clés CMEK ne sont compatibles que dans la régionus-central1
. Même si vous n'avez des tâches que dans cette région, nous vous recommandons de passer à la version4.0.0
ou ultérieure.Service de file d'attente de tâches intégré à App Engine:les tâches créées à l'aide du service de file d'attente intégré à App Engine ne sont pas protégées par la clé CMEK, même si elles se trouvent dans une région pour laquelle elle est activée. L'activation de CMEK n'empêche pas la création ni l'opération (par exemple, l'exécution ou la suppression) de ces tâches.
Files d'attente de retrait:si vous activez les CMEK, vous pouvez créer et exécuter des tâches dans des files d'attente de retrait, mais elles ne sont pas protégées par CMEK. Les files d'attente de retrait ne sont pas courantes. Pour vérifier si votre file d'attente est une file d'attente de retrait, exécutez la commande gcloud CLI suivante dans votre terminal:
gcloud tasks queues describe QUEUE_NAME
Remplacez
QUEUE_NAME
par le nom de votre file d'attente.Si le
type
répertorié estpull
, votre file d'attente est une file d'attente de retrait. Si letype
listé estpush
, cette limitation n'affecte pas les tâches de votre file d'attente.Routage au niveau de la file d'attente:lorsque le chiffrement CMEK est activé, vous ne pouvez pas appliquer le routage au niveau de la file d'attente. De plus, si le routage au niveau de la file d'attente est activé, vous ne pouvez pas activer les CMEK. Pour vérifier si le routage au niveau de la file d'attente est activé, procédez comme suit:
Exécutez la commande gcloud CLI suivante dans votre terminal:
gcloud tasks queues describe QUEUE_NAME
RemplacezQUEUE_NAME
par le nom de votre file d'attente.Dans le résultat, recherchez le champ
httpTarget
et vérifiez siuriOverride
a été défini. Si unhost
est spécifié, le routage au niveau de la file d'attente est activé dans votre file d'attente et n'est pas compatible avec les CMEK. Pour supprimer le routage au niveau de la file d'attente, consultez la section Mettre à jour ou supprimer le routage au niveau de la file d'attente. Si le résultat n'affiche pasuriOverride
avec unhost
spécifié, votre file d'attente n'utilise pas le routage au niveau de la file d'attente.
Valeur TTL de la tâche:lorsque CMEK est activé, vous ne pouvez pas définir
task_ttl
sur une valeur supérieure à 60 jours. De plus, si la valeurtask_ttl
est supérieure à 60 jours, vous ne pouvez pas activer les CMEK.
Avant de commencer
Avant d'utiliser des clés CMEK dans Cloud Tasks, procédez comme suit:
Activez les API.
Console
-
Activer les API Cloud KMS and Cloud Tasks.
gcloud
Dans la console Google Cloud, activez Cloud Shell.
En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
Définissez votre projet par défaut. Il doit s'agir du projet contenant les ressources Cloud Tasks que vous souhaitez protéger avec des clés CMEK. Si vous devez exécuter une commande dans un autre projet, tel que le projet contenant vos ressources Cloud KMS, cette page inclura l'option
--project
dans la commande gcloud CLI et vous indiquera le projet à spécifier.gcloud config set project PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet contenant vos ressources Cloud Tasks.Mettez à jour les composants
gcloud
.gcloud components update
Activez les API Cloud KMS et Cloud Tasks pour le projet qui stockera vos clés de chiffrement.
gcloud services enable cloudkms.googleapis.com cloudtasks.googleapis.com
--project=PROJECT_IDRemplacez
PROJECT_ID
par l'ID du projet qui stockera vos clés de chiffrement. Il peut s'agir du même projet que vos ressources Cloud Tasks. Toutefois, pour limiter l'accès à vos clés Cloud KMS, envisagez de configurer Cloud KMS dans un projet distinct.
-
Cloud KMS génère des Cloud Audit Logs lorsque des clés sont activées, désactivées ou utilisées par les ressources Cloud Tasks pour chiffrer et déchiffrer des données. Assurez-vous que la journalisation est activée pour l'API Cloud KMS dans votre projet, et que vous avez décidé quelles autorisations et quels rôles spécifiques à la journalisation s'appliquent à votre cas d'utilisation. Pour en savoir plus, consultez la page Informations sur les journaux d'audit Cloud KMS.
Obtenez des rôles Identity and Access Management.
Pour obtenir les autorisations dont vous avez besoin pour utiliser CMEK avec Cloud Tasks, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur votre projet:
-
Activez ou désactivez les CMEK :
roles/cloudtasks.admin
-
Affichez la clé en cours d'utilisation :
roles/cloudtasks.viewer
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Activez ou désactivez les CMEK :
Créer un trousseau et une clé Cloud KMS
Si vous possédez déjà un trousseau de clés dans la même région que vos ressources Cloud Tasks et que vous souhaitez utiliser cette clé et ce trousseau, ignorez cette section. Si ce n'est pas le cas, suivez ces instructions pour créer la clé et le trousseau de clés Cloud KMS.
-
Le trousseau de clés doit se trouver dans la région contenant les ressources Cloud Tasks que vous souhaitez protéger. Pour en savoir plus, consultez les pages Emplacements Cloud KMS et Emplacements Cloud Tasks.
Le trousseau de clés et les ressources Cloud Tasks protégées par une clé CMEK peuvent se trouver dans le même projet. Toutefois, pour limiter l'accès à vos clés Cloud KMS, envisagez de configurer Cloud KMS dans un projet distinct.
Récupérer l'ID d'une clé Cloud KMS
Vous devez indiquer l'ID de ressource d'une clé Cloud KMS lorsque vous activez les CMEK pour Cloud Tasks.
Console
Dans la console Google Cloud, accédez à la page Gestion des clés, puis sélectionnez l'onglet Inventaire de clés.
Pour la clé dont vous voulez récupérer l'ID de ressource, cliquez sur more_vert Actions.
Cliquez sur Copier le nom de la ressource.
L'ID de ressource de la clé est copié dans votre presse-papiers. Son format est semblable à celui-ci:
projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
gcloud
Répertoriez toutes les clés d'un trousseau de clés donné :
gcloud kms keys list --keyring=KEY_RING --location=LOCATION --project=PROJECT_ID
Remplacez les éléments suivants :
KEY_RING
: nom du trousseau de clésLOCATION
: région du trousseau de clésPROJECT_ID
: ID du projet contenant le trousseau de clés
Le résultat inclut l'ID de chaque clé. Exemple :
NAME: projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Accorder à l'agent de service Cloud Tasks l'accès à la clé
Vous devez attribuer à l'agent de service Cloud Tasks le rôle IAM (Identity and Access Management) Chiffreur/Déchiffreur de CryptoKeys Cloud KMS pour qu'il puisse accéder à la clé Cloud KMS:
Console
Dans la console Google Cloud, accédez à la page Identity and Access Management.
Cochez la case Inclure les attributions de rôles fournies par Google.
Recherchez le compte de service Cloud Tasks en saisissant
cloudtasks.iam.gserviceaccount.com
dans le filtre.Le compte de service Cloud Tasks se présente sous la forme
service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com
.Cliquez sur l'icône en forme de crayon Modifier le compte principal.
Dans le panneau qui s'affiche, cliquez sur Ajouter un autre rôle.
Recherchez et sélectionnez le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS.
Cliquez sur Enregistrer.
gcloud
gcloud kms keys add-iam-policy-binding KEY_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez les éléments suivants :
KEY_ID
: ID de ressource complet de votre clé. Pour savoir comment trouver cette clé, consultez la section Récupérer l'ID d'une clé Cloud KMS. N'incluez pas de numéro de version de clé. L'inclusion d'un numéro de version de clé peut entraîner l'échec de cette commande.PROJECT_NUMBER
: numéro de votre projet Google Cloud. Vous pouvez trouver le numéro de votre projet sur la page Bienvenue de la console Google Cloud ou en exécutant la commande suivante :PROJECT=$(gcloud info --format='value(config.project)') gcloud projects describe ${PROJECT} --format="value(projectNumber)"
Tant que l'agent de service dispose du rôle roles/cloudkms.cryptoKeyEncrypterDecrypter
, une tâche de la région où les CMEK sont activées peut chiffrer et déchiffrer ses données à l'aide de la clé CMEK. Si vous révoquez ce rôle, ou si vous désactivez ou détruisez la clé CMEK, ces données ne sont pas accessibles. Dans ce document, consultez la section Désactiver Cloud KMS.
Activer CMEK pour Cloud Tasks
Vous pouvez activer les CMEK à l'aide de l'API ou de gcloud CLI. Pour Cloud Tasks, les clés CMEK sont activées par région. Il n'est pas activé par des tâches individuelles. Lorsque CMEK est activé pour une région donnée dans Cloud Tasks, toutes les tâches de cette région sont protégées par CMEK.
API
Vous pouvez activer les CMEK en appelant la méthode Update CMEK config
. L'API Cloud Tasks fournit la méthode Update CMEK config
dans les API REST et RPC:
- REST: utilisez la méthode
updateCmekConfig
. - RPC:utilisez la méthode
UpdateCmekConfigRequest
.
gcloud
Pour activer les CMEK à l'aide de la Google Cloud CLI, exécutez la commande suivante:
gcloud tasks cmek-config update --location=LOCATION --kms-key-name=KEY_ID
Remplacez les éléments suivants :
LOCATION
: région de votre ressource Cloud TasksKEY_ID
: ID de ressource complet de votre clé. Pour savoir comment trouver cette clé, consultez la section Récupérer l'ID d'une clé Cloud KMS. N'incluez pas de numéro de version de clé. L'inclusion d'un numéro de version de clé peut entraîner l'échec de cette commande.
Pour vérifier que la clé a bien été activée, suivez les instructions de la section Identifier la clé utilisée.
Activer pour les tâches préexistantes
La fonctionnalité CMEK ne protège pas les tâches créées avant son activation pour Cloud Tasks. Pour protéger les tâches préexistantes à l'aide de clés CMEK:
- Activez les CMEK (consultez la section sur l'activation des CMEK).
Remplacez les tâches préexistantes. Pour ce faire, vous disposez de deux méthodes principales. La meilleure façon de procéder dépend de ce qui est important pour vous:
Exécution continue:pour garantir une exécution continue (envoi au moins une fois), vous pouvez d'abord recréer la tâche, puis supprimer la tâche préexistante après avoir vérifié que la nouvelle tâche fonctionne comme prévu. Cela peut entraîner des exécutions en double, car l'ancienne et la nouvelle tâche peuvent s'exécuter avant que vous ne supprimiez l'ancienne.
Prévention des doublons:pour éviter les exécutions en double ("au moins une fois), vous pouvez d'abord supprimer l'ancienne tâche, puis la recréer. Cela peut entraîner des pertes d'exécutions en raison du temps écoulé entre la suppression de l'ancienne tâche et sa création.
Identifier la clé utilisée
Pour identifier la clé CMEK utilisée pour vos ressources Cloud Tasks, exécutez la commande gcloud CLI suivante dans votre terminal:
gcloud tasks cmek-config describe --location=LOCATION
Remplacez LOCATION
par la région de vos ressources Cloud Tasks.
Si aucun résultat ne s'affiche, cela signifie que la clé CMEK n'est pas configurée pour l'emplacement spécifié.
Désactiver les CMEK pour Cloud Tasks
Vous pouvez désactiver les CMEK à l'aide de l'API ou de gcloud CLI. Pour Cloud Tasks, les clés CMEK sont désactivées par région. Il n'est pas désactivé par des tâches individuelles. Lorsque les CMEK sont désactivées pour une région donnée dans Cloud Tasks, les tâches de cette région ne sont pas protégées par les CMEK.
La désactivation des CMEK affecte les tâches créées à une date ultérieure, et non celles créées dans le passé:
- Les nouvelles tâches ne sont pas protégées par les clés CMEK.
Tâches préexistantes:les tâches créées lorsque la clé CMEK était activée restent chiffrées et continuent de s'exécuter tant que la clé Cloud KMS reste active.
API
Pour désactiver les CMEK, appelez la méthode Update CMEK config
et effacez la clé Cloud KMS en la remplaçant par une chaîne vide. L'API Cloud Tasks fournit la méthode Update CMEK config
dans les API REST et RPC:
- REST: utilisez la méthode
updateCmekConfig
. - RPC:utilisez la méthode
UpdateCmekConfigRequest
.
gcloud
Pour désactiver les CMEK à l'aide de la Google Cloud CLI, exécutez la commande suivante:
gcloud tasks cmek-config update --location=LOCATION --clear-kms-key
Remplacez les éléments suivants :
LOCATION
: région de votre ressource Cloud Tasks.
Supprimer Cloud KMS
Si vous souhaitez révoquer l'accès aux données de vos tâches, vous pouvez supprimer Cloud KMS. Pour cela, vous pouvez procéder de trois façons:
Désactivez la clé de chiffrement gérée par le client. Lorsque la clé CMEK est désactivée, l'accès à toutes les données protégées par cette version de clé est suspendu. Vous ne pouvez pas accéder à des tâches ni en créer avec une clé désactivée. Toute tentative d'exécution d'une tâche protégée par une clé CMEK alors que la clé est désactivée génère une erreur
UNKNOWN
dans Cloud Logging. Si vous le souhaitez, vous pourrez réactiver la clé ultérieurement. Lorsque vous désactivez une clé de chiffrement gérée par le client, l'application de la modification peut prendre jusqu'à cinq minutes.Détruisez la clé de chiffrement gérée par le client. La destruction d'une clé CMEK suspend définitivement l'accès à toutes les données protégées par cette version de clé. Vous ne pouvez pas accéder à des tâches ni en créer avec une clé qui a été détruite. Si une tâche a été créée alors que la fonctionnalité CMEK était activée et que la clé est détruite ultérieurement, la tâche est chiffrée avec votre clé, mais ne peut pas être exécutée. Si la tâche tente de s'exécuter, Cloud Logging consigne une erreur
UNKNOWN
. Lorsque vous détruisez une clé de chiffrement gérée par le client, l'application de la modification peut prendre jusqu'à cinq minutes.Révoquez le rôle IAM
cloudkms.cryptoKeyEncrypterDecrypter
de l'agent de service Cloud Tasks. Cela affecte toutes les tâches du projet Google Cloud compatibles avec le chiffrement à l'aide de clés CMEK. Vous ne pouvez pas créer de tâches intégrées à CMEK ni afficher les ressources chiffrées par CMEK.
Bien qu'aucune de ces opérations ne garantit la révocation instantanée des accès, les modifications IAM prennent généralement effet plus rapidement. Pour en savoir plus, consultez les pages Cohérence des ressources Cloud KMS et Propagation des modifications des accès.
Tarification
Cette intégration n'entraîne aucuns frais supplémentaires au-delà des opérations de clés facturées dans votre projet Google Cloud. Pour obtenir des informations tarifaires actuelles, consultez la page Tarifs de Cloud KMS.