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-gaxversions inférieures à4.0.0: le package NPMgoogle-gaxpour 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égionus-central1. Même si vous n'avez que des tâches dans cette région, nous vous recommandons de passer à la version4.0.0ou 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_NAMEpar le nom de votre file d'attente.Si la valeur
typeindiquée estpull, votre file d'attente est une file d'attente de récupération. Si la valeurtypeindiquée estpush, 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 :
Exécutez la commande gcloud CLI suivante dans votre terminal :
Remplacezgcloud tasks queues describe QUEUE_NAME
QUEUE_NAMEpar le nom de votre file d'attente.Dans le résultat, recherchez le champ
httpTargetet vérifiez siuriOverridea été défini. Si unhostest 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 pasuriOverrideavec unhostspé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_ttlsur une valeur supérieure à 60 jours. Si vous avez définitask_ttlsur 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 :
Activez les API.
Console
-
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.
gcloud
Dans la console Google Cloud , activez 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.
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
--projectdans la commande gcloud CLI et vous indiquera le projet à spécifier.gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar 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_ID
Remplacez
PROJECT_IDpar 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.
-
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.
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.
-
Activez ou désactivez les CMEK :
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.
-
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 CMEK peuvent se trouver dans le même projet, mais 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
L'ID de ressource d'une clé Cloud KMS est requis lorsque vous activez CMEK pour Cloud Tasks.
Console
Dans la console Google Cloud , accédez à la page Gestion des clés, puis sélectionnez l'onglet Inventaire des 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 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
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é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
Dans la console Google Cloud , accédez à la page IAM (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.comdans le filtre.Le compte de service Cloud Tasks se présente sous la forme suivante :