Utiliser les clés de chiffrement gérées par le client

Par défaut, Cloud Tasks chiffre vos données stockées au repos. Google Cloud gère automatiquement ce chiffrement par défaut 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 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ête) au repos sont protégées à l'aide d'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 CMEK dans Cloud Tasks, vous l'activez pour une région. Lorsqu'elle 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é lorsqu'ils sont au repos. Si une tâche a été créée alors que CMEK était activé et la clé est ensuite rendue inactive (en désactivant ou supprimant la clé, ou en désactivation 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 CMEK dans les cas suivants :

  • La tâche a été créée avant l'activation de 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 avec CMEK n'est pas compatible avec suivantes:

  • google-gax versions ci-dessous 4.0.0: le package NPM google-gax pour Node.js est compatible de façon limitée sur versions antérieures à 4.0.0. Pour ces versions, les clés CMEK ne sont compatibles qu'avec les la région us-central1. Même si vous n'avez que des tâches dans cette région, vous est recommandé de passer à la version 4.0.0 ou à une version ultérieure.

  • Service de file d'attente de tâches intégré à App Engine:tâches créées à l'aide du Le service de file d'attente de tâches intégré à App Engine n'est pas protégé par des clés CMEK, même si ils se trouvent dans une région pour laquelle il est activé. L'activation de CMEK n'empêche pas la création ni l'exécution (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 de retrait mais ces tâches ne sont pas protégées par des clés CMEK. Les files d'attente de retrait sont peu courantes. Pour vérifier si votre file d'attente est une file d'attente de retrait, exécutez la commande suivante : gcloud CLI dans votre terminal:

    gcloud tasks queues describe QUEUE_NAME

    Remplacez QUEUE_NAME par le nom de votre file d'attente.

    Si type est pull, votre file d'attente est une file d'attente pull. Si le type listée est push, cette limitation n'affecte pas les tâches de votre file d'attente.

  • Routage au niveau de la file d'attente : lorsque CMEK est activé, vous ne pouvez pas appliquer le routage au niveau de la file d'attente. Si le routage au niveau de la file d'attente est activé, vous ne pouvez pas activer CMEK. Pour vérifier si le routage au niveau de la file d'attente est activé, procédez comme suit:

    1. 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.

    2. Dans le résultat, recherchez le champ httpTarget et vérifiez si le Le paramètre uriOverride a été défini. Si un host est spécifié, le routage au niveau de la file d'attente est activé et n'est pas compatible avec CMEK. Pour supprimer au niveau de la file d'attente, consultez Mettez à jour ou supprimez le routage au niveau de la file d'attente. Si la sortie n'affiche pas uriOverride avec un host spécifié, votre n'utilise pas le routage au niveau de la file d'attente.

  • Valeur TTL de la tâche:lorsque la clé CMEK est activée, vous ne pouvez pas définir task_ttl jusqu'à depuis plus de 60 jours. Et si vous avez défini une valeur de task_ttl supérieure à 60 jours, vous ne pouvez pas activer les CMEK.

Avant de commencer

Avant d'utiliser des CMEK dans Cloud Tasks, procédez comme suit:

  1. Activez les API.

    Console

    1. Enable the Cloud KMS and Cloud Tasks APIs.

      Enable the APIs

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Définissez votre projet par défaut. Il doit s'agir du projet qui contient les ressources Cloud Tasks que vous souhaitez protéger 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. qui contient vos ressources Cloud Tasks.

    3. Mettez à jour les composants gcloud.

      gcloud components update

    4. 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_ID

      Remplacez 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, mais pour limiter l'accès clés Cloud KMS, vous pouvez Configurez Cloud KMS dans un projet distinct.

  2. Cloud KMS génère des Cloud Audit Logs lorsque les clés sont activées. désactivée ou utilisée par les ressources Cloud Tasks pour chiffrer et déchiffrer données. Assurez-vous que la journalisation est activée pour l'API Cloud KMS dans votre projet et que vous avez décidé des autorisations et des rôles spécifiques à la journalisation qui s'appliquent à votre cas d'utilisation. Pour plus pour en savoir plus, consultez Informations sur les journaux d'audit Cloud KMS

  3. Obtenez les rôles Identity and Access Management.

    Pour obtenir les autorisations nécessaires pour utiliser des CMEK avec Cloud Tasks, demandez à votre administrateur de vous accorder le les rôles IAM suivants sur votre projet:

    • Activez ou désactivez CMEK : roles/cloudtasks.admin
    • Afficher la clé utilisée : roles/cloudtasks.viewer

    Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer un trousseau et une clé Cloud KMS

Si vous disposez déjà d'un trousseau de clés dans la même région que votre des ressources Cloud Tasks et que vous souhaitez utiliser cette clé et ce trousseau, passer cette section. Si ce n'est pas le cas, suivez ces instructions pour créer votre clé et votre trousseau Cloud KMS.

  1. Créez un trousseau de clés.

  2. Créez une clé pour un trousseau de clés spécifié.

Récupérez l'ID d'une clé Cloud KMS.

Veuillez indiquer l'ID de ressource d'une clé Cloud KMS lorsque vous activez CMEK pour Cloud Tasks.

Console

  1. Dans la console Google Cloud, accédez à la page Gestion des clés et sélectionnez dans l'onglet Inventaire de clés.

    Accéder à l'inventaire des clés

  2. Pour la clé dont vous voulez récupérer l'ID de ressource, cliquez sur Actions.

  3. Cliquez sur Copier le nom de la ressource.

    L'ID de ressource pour la clé est copié dans votre presse-papiers. Son format est semblable à ce qui suit :

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
    

gcloud

  1. 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és
    • LOCATION: région du trousseau de clés
    • PROJECT_ID: ID du projet contient 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 accorder à l'agent de service Cloud Tasks la Chiffreur/Déchiffreur de CryptoKeys Cloud KMS Identity and Access Management (IAM) afin qu'il puisse accéder à Cloud KMS clé:

Console

  1. Dans la console Google Cloud, accédez à la page "Identity and Access Management" (Gestion de l'authentification et des accès).

    Accéder à IAM

  2. Cochez la case Inclure les attributions de rôles fournies par Google.

  3. 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.

  4. Cliquez sur l'icône en forme de crayon Modifier le compte principal.

  5. Dans le panneau qui s'affiche, cliquez sur Ajouter un autre rôle.

  6. Recherchez et sélectionnez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS.

  7. 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 . Pour savoir comment trouver cette option, consultez Récupérez l'ID d'une clé Cloud KMS. N'incluez pas de numéro de version de clé. L'ajout 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 roles/cloudkms.cryptoKeyEncrypterDecrypter une tâche dans votre région pour laquelle les CMEK sont activés 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 , les 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 Dans Cloud Tasks, les clés CMEK sont activées par région. Il n'est pas activé par les tâches individuelles. Lorsque le chiffrement 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 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 :

gcloud

Pour activer 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 Tasks
  • KEY_ID : ID de ressource complet de votre clé. Pour savoir comment trouver cette option, consultez Récupérez l'ID d'une clé Cloud KMS. N'incluez pas de numéro de version de clé. Si vous incluez un numéro de version de clé, cette commande risque d'échouer.

Pour vérifier que la clé a bien été activée, suivez les instructions dans la section Identifier la clé utilisée.

Activer pour les tâches préexistantes

Une clé CMEK ne protège pas les tâches créées avant son activation pour Cloud Tasks. Pour protéger des tâches préexistantes avec CMEK :

  1. Activez CMEK (voir la section sur l'activation de CMEK).
  2. Remplacez les tâches préexistantes. Pour ce faire, vous avez deux options principales. La 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 ("au moins une fois" livraison), vous pouvez d'abord recréer la tâche, puis supprimer la tâche existante après avoir vérifié que la nouvelle tâche fonctionne comme prévu. Cela peut entraîner les exécutions en double, car l'ancienne et la nouvelle tâche peuvent toutes deux s'exécuter avant que vous supprimer l'ancienne tâche.

    • Protection contre les doublons:pour éviter les exécutions en double ("une fois au plus" diffusion), vous pouvez commencer par supprimer l'ancienne tâche, puis la recréer. Cela peut entraîner des exécutions perdues en raison du temps écoulé entre la suppression de l'ancienne tâche et la création de la nouvelle.

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 votre ressources Cloud Tasks.

Si aucune sortie n'est générée, CMEK n'est pas configuré pour l'emplacement spécifié.

Désactiver les CMEK pour Cloud Tasks

Vous pouvez désactiver CMEK à l'aide de l'API ou de la gcloud CLI. Pour Cloud Tasks, la fonctionnalité CMEK est désactivée par région. Il n'est pas désactivé par des tâches individuelles. Lorsque CMEK est désactivé pour une région donnée dans Cloud Tasks, les tâches de cette région ne sont pas protégées par CMEK.

La désactivation des CMEK affecte les tâches créées à l'avenir, et non celles créées dans passé:

  • Nouvelles tâches : elles ne sont pas protégées par CMEK.
  • Tâches préexistantes : les tâches créées lorsque CMEK était activé restent chiffrées et continuent à s'exécuter tant que la clé Cloud KMS reste active.

API

Vous pouvez désactiver CMEK en appelant la méthode Update CMEK config et en effaçant 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 :

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 pour vos tâches, vous pouvez supprimer Cloud KMS. Vous pouvez le faire de trois manières :

  • Désactivez la clé de chiffrement gérée par le client. La désactivation d'une clé CMEK entraîne la suspension de l'accès à toutes les données protégées par cette version de clé lorsqu'elle est désactivée. Vous ne pouvez pas accéder ni créer de tâches avec une clé désactivée. Toute tentative d'exécution d'une tâche protégée par CMEK lorsque la clé est désactivée entraîne une erreur UNKNOWN dans Cloud Logging. Vous pouvez réactiver la clé plus tard si vous le souhaitez. La désactivation d'une clé de chiffrement gérée par le client peut prendre jusqu'à cinq minutes. pour que le changement s'applique.

  • Détruire le bucket géré par le client clé de chiffrement. La destruction d'une clé CMEK entraîne la suspension définitive de l'accès à toutes les données protégées par cette version de clé. Vous ne pouvez pas accéder ni créer de tâches avec une clé qui a été détruite. Si une tâche a été créée lorsque CMEK était activé et que la clé est détruite par la suite, la tâche est chiffrée avec votre clé, mais ne peut pas être exécutée. Si tente de s'exécuter, Cloud Logging consigne une erreur UNKNOWN. Quand ? vous détruisez une clé de chiffrement gérée par le client, l'opération peut prendre la modification à appliquer.

  • Révoquez le cloudkms.cryptoKeyEncrypterDecrypterle rôle IAM du Agent de service Cloud Tasks. Cela affecte toutes les tâches du projet Google Cloud qui acceptent le chiffrement à l'aide de CMEK. Vous ne pouvez pas créer de tâches intégrées à CMEK ni afficher de ressources chiffrées avec CMEK.

Bien qu'aucune de ces opérations ne garantit une révocation instantanée de l'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 d'accès.

Tarifs

Cette intégration n'entraîne pas de coûts supplémentaires au-delà des opérations de clés, qui sont facturés à votre projet Google Cloud. Pour le tarif actuel plus d'informations, consultez la page Tarifs de Cloud KMS.