Par défaut, Pub/Sub chiffre le contenu client au repos. Pub/Sub 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 Pub/Sub. 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. Cloud KMS vous permet également de suivre l'utilisation des clés, de consulter les journaux d'audit et de 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 Pub/Sub 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).
CMEK avec Cloud KMS Autokey
Pour protéger vos ressources Pub/Sub , vous pouvez créer des clés CMEK manuellement ou utiliser Cloud KMS Autokey. Avec Autokey, les trousseaux de clés et les clés sont générés à la demande pour prendre en charge la création de ressources dans Pub/Sub. Les agents de service qui utilisent les clés pour les opérations de chiffrement et de déchiffrement sont créés s'ils n'existent pas déjà et s'ils disposent des rôles IAM (Identity and Access Management) requis. Pour en savoir plus, consultez la présentation d'Autokey.
Fonctionnement des CMEK avec Pub/Sub
Lorsque vous configurez Pub/Sub avec CMEK, le service chiffre automatiquement toutes les données à l'aide de la clé spécifiée. L'utilisation de Cloud KMS pour CMEK peut entraîner des coûts supplémentaires en fonction de vos modèles d'utilisation.
Chaque message est chiffré aux états et couches suivants :
-
- Couche matérielle
- Couche d'infrastructure
- Couche d'application
Au niveau de la couche d'application, Pub/Sub chiffre individuellement les messages entrants dès leur réception. Cette implémentation ajoute les fonctionnalités suivantes :
- Conservation des messages chiffrés sur les liens internes du centre de données
- Activation des clés de chiffrement gérées par le client (CMEK)
Modèle de chiffrement encapsulé
Pub/Sub utilise le modèle de chiffrement encapsulé avec CMEK. Dans cette approche, les messages ne sont pas chiffrés par Cloud KMS. À la place, Cloud KMS sert à chiffrer les clés de chiffrement des données (DEK) créées par Pub/Sub pour chaque sujet. Ces DEK ne sont stockées que sous forme chiffrée ou encapsulée par Pub/Sub. Avant de stocker une DEK, le service l'envoie à Cloud KMS pour qu'elle soit chiffré à l'aide de la clé de chiffrement de clé (KEK) spécifiée sur le sujet. Une nouvelle DEK est générée pour chaque sujet environ toutes les six heures.
Avant que Pub/Sub ne publie les messages dans un abonnement, il les chiffre à l'aide de la DEK la plus récente ayant été générée pour le sujet. Pub/Sub déchiffre les messages peu de temps avant qu'ils ne soient distribués aux abonnés.
Configurer CMEK avec Pub/Sub
Vous pouvez configurer CMEK manuellement ou à l'aide d'Autokey.
Avant de commencer
Vous pouvez configurer CMEK pour Pub/Sub à l'aide de la Google Cloud console ou de Google Cloud CLI.
Effectuez les tâches suivantes :
Activez l'API Cloud KMS.
Créez un trousseau de clés et une clé dans Cloud KMS. Les clés et les trousseaux de clés ne peuvent pas être supprimés.
Pour savoir comment effectuer ces tâches, consultez Créer un trousseau de clés et Créer une clé.
Étant donné que les ressources Pub/Sub sont globales, nous vous recommandons vivement d'utiliser des clés Cloud KMS globales pour configurer les sujets activés par CMEK. En fonction de l'emplacement des éditeurs et des abonnés d'un sujet, l'utilisation d'une clé Cloud KMS régionale peut entraîner des dépendances inutiles pour les liens réseau interrégionaux.
Rôles et autorisations requis
Pub/Sub utilise un Google Cloud agent de service pour accéder à Cloud KMS. L'agent de service est géré en interne par Pub/Sub pour chaque projet et n'est pas visible par défaut sur la page Comptes de service de la Google Cloud console.
L'agent de service Pub/Sub se présente sous la forme service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com.
Pub/Sub nécessite des autorisations spécifiques pour chiffrer et déchiffrer les données à l'aide de CMEK.
Procédez comme suit pour configurer l'accès requis :
Accordez à l'agent de service Pub/Sub le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter).gcloud kms keys add-iam-policy-binding CLOUD_KMS_KEY_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypterRemplacez les éléments suivants :
CLOUD_KMS_KEY_NAME : nom de la clé Cloud KMS.
La clé est au format
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.Par exemple,
projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key.PROJECT_NUMBER : numéro de projet du projet Pub/Sub.
Pour en savoir plus sur l'attribution de rôles Identity and Access Management, consultez la page Attribuer des rôles à une ressource.
Configurer manuellement un sujet avec CMEK
Vous pouvez configurer manuellement CMEK pour un sujet à l'aide de la Google Cloud console ou gcloud CLI.
Console
Pour créer un sujet avec CMEK, procédez comme suit :
Dans la Google Cloud console, accédez à la page Sujets de Pub/Sub.
Cliquez sur Create topic (Créer un sujet).
Dans le champ ID du sujet, saisissez un ID pour votre sujet.
Pour en savoir plus sur la dénomination des sujets, consultez les consignes de dénomination.
Pour Chiffrement, cliquez sur Clé Cloud KMS.
Sélectionnez le type de clé. Si vous ne voyez pas le menu déroulant Sélectionner une clé gérée par le client, vérifiez que vous avez activé l'API Cloud KMS pour le projet.
Cliquez sur Create topic (Créer un sujet).
gcloud
-
Dans la Google Cloud console, activez Cloud Shell.
En bas de la Google Cloud console, 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.
-
Pour créer un sujet avec CMEK, exécutez la
gcloud pubsub topics createcommande :gcloud pubsub topics create TOPIC_ID --topic-encryption-key=ENCRYPTION_KEY
Remplacez les éléments suivants :
-
TOPIC_ID : ID ou nom du sujet.
Pour en savoir plus sur la dénomination d'un sujet, consultez la section Consignes de dénomination d'un sujet, d'un abonnement, d'un schéma ou d'un instantané.
-
ENCRYPTION_KEY : ID de la CMEK à utiliser pour le sujet.
Il a le format suivant :
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.
-
Mettre à jour manuellement un sujet CMEK
Vous pouvez ajouter, modifier ou supprimer la CMEK associée à un sujet Pub/Sub. Vous pouvez utiliser la gcloud CLI pour mettre à jour la CMEK. Toutefois, cette modification ne s'applique pas de manière rétroactive.
Les messages publiés sur le sujet avant le changement de clé restent chiffrés avec la clé d'origine, qu'il s'agisse d'une CMEK ou Google-owned and Google-managed encryption key. Modifier le CMEK d'un sujet ne réenchiffre pas les messages précédemment publiés. Ces messages restent protégés par la clé avec laquelle ils ont été chiffrés à l'origine. Par conséquent, les données de message d'un sujet peuvent toujours dépendre de la clé précédente pendant 31 jours au maximum, en fonction de la durée de conservation des messages spécifiée sur le sujet ou l'un de ses abonnements.
Pub/Sub dispose d'un mécanisme de mise en cache des clés qui dure environ 30 minutes. Pub/Sub peut mettre jusqu'à 30 minutes pour reconnaître et commencer à utiliser une nouvelle clé qui a été modifiée manuellement dans la configuration du sujet.
Rotation des clés Cloud KMS dans Pub/Sub
Les modifications de configuration des clés, telles que la rotation des clés dans Cloud KMS, ne déclenchent pas directement la création de clés de chiffrement des données dans Pub/Sub. Pub/Sub peut mettre jusqu'à 12 heures pour commencer à utiliser de nouvelles versions de clé afin de chiffrer les données de message.
Comme pour les modifications de configuration manuelles apportées aux paramètres de chiffrement dans Pub/Sub, ces modifications ne s'appliquent pas de manière rétroactive aux messages publiés dans le passé. Les messages existants continuent d'être protégés par les versions précédentes de la clé cryptographique. Ces messages restent protégés par la clé avec laquelle ils ont été chiffrés à l'origine. Par conséquent, les données de message d'un sujet peuvent toujours dépendre de la version de clé précédente pendant 31 jours au maximum, en fonction de la durée de conservation des messages spécifiée sur le sujet ou l'un de ses abonnements.
Configurer un sujet avec Cloud KMS Autokey
Pour en savoir plus sur l'utilisation de Cloud KMS Autokey avec Pub/Sub, consultez Cloud KMS avec Autokey.
Journaux d'audit
Cloud KMS génère des journaux d'audit lorsque les clés sont activées, désactivées ou utilisées par Pub/Sub pour le chiffrement et le déchiffrement des messages. Cela s'avère utile pour résoudre les problèmes de disponibilité de la publication ou de la diffusion.
Les clés Cloud KMS sont associées aux journaux d'audit pour les ressources du sujet Pub/Sub. Pub/Sub n'inclut aucune autre information associée à Cloud KMS.
Tarifs
Pour les requêtes Pub/Sub suivantes, l'utilisation de CMEK entraîne des frais pour l'accès au service Cloud KMS en fonction de la tarification Pub/Sub :
Pour chaque sujet utilisant CMEK, une nouvelle DEK est chiffrée et stockée toutes les six heures.
La clé permet de déchiffrer les DEK toutes les six minutes. Le déchiffrement se produit à trois reprises : une fois pour chaque zone de la région dans laquelle le service Pub/Sub est exécuté.
Prenons l'exemple d'un sujet comportant les éléments suivants :
Au moins un abonnement
Des clients éditeurs et abonnés dans la même région
Le nombre d'opérations de chiffrement Cloud KMS peut être estimé comme suit :
1 key access for ENCRYPT * (30 days / month * 24 hours / day) / 6 hours + 3 key accesses for DECRYPT * (30 days / month * 24 hours / day * 60 minutes / hour ) / 6 minutes = 21,720 Cloud KMS key access events
En pratique, les clés peuvent être récupérées plus ou moins fréquemment en fonction des modèles d'accès. Ces chiffres ne sont que des estimations.
Surveillance et dépannage
Les problèmes d'accès aux clés peuvent avoir les conséquences suivantes :
Retards dans la distribution des messages
Erreurs de publication
Surveillez les erreurs de publication et de demande d'extraction à l'aide des métriques suivantes, regroupées par response_class et response_code :
topic/send_request_countsubscription/pull_request_countsubscription/streaming_pull_response_count
Le taux d'erreur de la réponse StreamingPull est de 100 %. Cela indique que le flux est terminé, et non que les requêtes échouent. Pour surveiller StreamingPull, recherchez le code de réponse FAILED_PRECONDITION.
La publication et la distribution des messages peuvent échouer avec des erreurs FAILED_PRECONDITION pour plusieurs raisons.
La clé Cloud KMS peut être désactivée. Pour en savoir plus, consultez la section Désactiver et réactiver les clés sur cette page.
Si vous utilisez des clés gérées en externe via Cloud EKM, consultez la documentation de référence sur les erreurs Cloud EKM.
Pour les abonnements push, il n'existe aucun moyen de détecter directement les problèmes de distribution spécifiques à CMEK. Effectuez plutôt les opérations suivantes :
Surveillez la taille et l'âge des tâches en attente au sein d'un abonnement push à l'aide de
subscription/num_unacked_messages.Surveillez
subscription/oldest_unacked_message_ageà la recherche de pics inhabituels.Servez-vous des erreurs de publication et des journaux d'audit CMEK pour identifier les problèmes.
Désactiver et réactiver les clés
Vous pouvez empêcher Pub/Sub de déchiffrer les données de message de deux manières différentes :
Recommandé : Désactivez la clé Cloud KMS que vous avez associée au sujet à l'aide de Pub/Sub. Cette approche n'affecte que les abonnements et les sujets Pub/Sub qui sont associés à cette clé spécifique.
Révoquez le rôle Chiffreur/Déchiffreur de clés cryptographiques Pub/Sub du compte de service Pub/Sub (
service-$PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com) à l'aide de Cloud IAM. Cette approche affecte tous les sujets Pub/Sub du projet, ainsi que les abonnements contenant des messages chiffrés à l'aide de CMEK.
Bien qu'aucune opération ne confirme la révocation instantanée de l'accès, les modifications IAM se propagent généralement plus rapidement. Pour en savoir plus, consultez les pages Cohérence des ressources Cloud KMS et Propagation des modifications d'accès.
Lorsque Pub/Sub ne peut pas accéder à la clé, la publication et la distribution des messages avec la fonction "streamingPull" ou "pull" échouent en renvoyant les erreurs FAILED_PRECONDITION. La distribution des messages vers les points de terminaison push s'arrêtera. Pour reprendre la distribution et la publication, rétablissez l'accès à la clé Cloud KMS.
Une fois la clé Cloud KMS accessible à Pub/Sub, la publication est disponible sous 12 heures et la distribution des messages reprend dans les deux heures.
Bien que les pannes intermittentes de Cloud KMS de moins d'une minute ne risquent pas d'interrompre de manière significative la publication et la distribution, l'indisponibilité prolongée de Cloud KMS provoque le même effet qu'une révocation de clé.