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

Par défaut, Cloud Tasks chiffre le contenu client au repos. Cloud Tasks gère le chiffrement sans intervention de votre part. Cette option est appelée chiffrement par défaut de Google.

Si vous souhaitez contrôler vos clés de chiffrement, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) dans Cloud KMS avec des services bénéficiant d'une intégration des CMEK, y compris Cloud Tasks. L'utilisation de clés Cloud KMS vous permet de contrôler leur niveau de protection, leur emplacement, leur calendrier de rotation, leurs autorisations d'utilisation et d'accès, ainsi que leurs limites cryptographiques. Grâce à Cloud KMS, vous pouvez également afficher les journaux d'audit et contrôler les cycles de vie des clés. Au lieu de laisser Google posséder et gérer les clés de chiffrement de clés (KEK) symétriques qui protègent vos données, c'est vous qui vous chargez de cette tâche dans Cloud KMS.

Une fois que vous avez configuré vos ressources avec des CMEK, l'accès à vos ressources Cloud Tasks est semblable à celui du chiffrement par défaut de Google. Pour en savoir plus sur les options de chiffrement, consultez Clés de chiffrement gérées par le client (CMEK).

É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 avec votre clé au repos. Si une tâche a été créée alors que CMEK était activé et que la clé est ensuite rendue inactive (en la désactivant ou en la supprimant, ou en désactivant 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 limitation de compatibilité.

Limites de compatibilité

L'intégration de Cloud Tasks avec CMEK n'est pas compatible avec les éléments suivants :

  • google-gax versions inférieures à 4.0.0 : le package NPM google-gax pour Node.js est partiellement compatible avec les versions antérieures à 4.0.0. Pour ces versions, le chiffrement CMEK n'est compatible qu'avec la région us-central1. Même si vous n'avez que des tâches dans cette région, nous vous recommandons de passer à la version 4.0.0 ou ultérieure.

  • Service Taskqueue intégré à App Engine : les tâches créées à l'aide du service Taskqueue intégré à App Engine ne sont pas protégées par CMEK, même si elles se trouvent dans une région pour laquelle cette fonctionnalité 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'extraction : si vous activez CMEK, vous pouvez créer et exécuter des tâches dans des files d'extraction, mais ces tâches ne sont pas protégées par CMEK. Les files d'attente de retrait sont rares. 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 la valeur type indiquée est pull, votre file d'attente est une file d'attente de récupération. Si la valeur type indiquée est push, cette limite n'affecte pas les tâches de votre file d'attente.

  • Routage au niveau de la file d'attente : lorsque la CMEK est activée, 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 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 uriOverride a été défini. Si un host est spécifié, le routage au niveau de la file d'attente est activé pour votre file d'attente, qui n'est pas compatible avec CMEK. Pour supprimer le routage au niveau de la file d'attente, consultez Mettre à jour ou supprimer le routage au niveau de la file d'attente. Si la sortie n'affiche pas uriOverride avec un host spécifié, votre file d'attente n'utilise pas le routage au niveau de la file d'attente.

  • TTL des tâches : lorsque CMEK est activé, vous ne pouvez pas définir task_ttl sur une valeur supérieure à 60 jours. Si vous avez défini task_ttl sur une valeur supérieure à 60 jours, vous ne pouvez pas activer CMEK.

Avant de commencer

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

  1. Activez les API.

    Console

    1. Activez les API Cloud KMS et Cloud Tasks.

      Rôles requis pour activer les API

      Pour activer les API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation grâce au rôle Propriétaire (roles/owner). Sinon, vous pouvez obtenir cette autorisation grâce au rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

      Activer les API

    gcloud

    1. Dans la console Google Cloud , activez Cloud Shell.

      Activer Cloud Shell

      En bas 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.

    2. Définissez votre projet par défaut. Il doit s'agir du projet contenant les ressources Cloud Tasks que vous souhaitez protéger avec CMEK. Si vous devez exécuter une commande dans un autre projet, tel que celui contenant vos ressources Cloud KMS, cette page inclura l'indicateur --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.

    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 dans lequel seront stockées vos clés de chiffrement. Il peut s'agir du même projet que vos ressources Cloud Tasks, mais pour limiter l'accès à vos clés Cloud KMS, envisagez de configurer 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ées ou utilisées par les ressources Cloud Tasks pour chiffrer et déchiffrer les données. Assurez-vous que la journalisation est activée pour l'API Cloud KMS dans votre projet, et que vous avez déterminé les autorisations et les rôles spécifiques à la journalisation qui s'appliquent à votre cas d'utilisation. 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 CMEK avec Cloud Tasks, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

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

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

    Vous pouvez également obtenir les autorisations requises avec 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 vos ressources Cloud Tasks et que vous souhaitez utiliser cette clé et ce trousseau de clés, ignorez cette section. Sinon, suivez ces instructions pour créer votre clé et votre trousseau de clés 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érer l'ID d'une clé Cloud KMS

L'ID de ressource d'une clé Cloud KMS est requis lorsque vous activez CMEK pour Cloud Tasks.

Console

  1. Dans la console Google Cloud , accédez à la page Gestion des clés, puis sélectionnez l'onglet Inventaire des 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 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
    

Autoriser l'agent de service Cloud Tasks à accéder à la clé

Vous devez attribuer le rôle IAM (Identity and Access Management) Chiffreur/Déchiffreur de CryptoKeys Cloud KMS à l'agent de service Cloud Tasks pour qu'il puisse accéder à la clé Cloud KMS :

Console

  1. Dans la console Google Cloud , accédez à la page IAM (Identity and Access Management).

    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 suivante :