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. 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 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).
Fonctionnement de 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 habitudes d'utilisation.
Chaque message est chiffré au niveau des états et des couches suivants :
-
Au repos
- Couche matérielle
- Couche d'infrastructure
- Couche d'application
-
En transit
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)
Schéma de chiffrement d'enveloppe
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 console Trusted Cloud 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é.
Rôles et autorisations requis
Pub/Sub utilise un agent de service Trusted Cloudpour accéder à Cloud KMS. L'agent de service est géré en interne par Pub/Sub pour chaque projet. Il n'est pas visible sur la page Comptes de service de la console Trusted Cloud par défaut.
L'agent de service Pub/Sub se présente sous la forme suivante : service-${PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.
Pub/Sub nécessite des autorisations spécifiques pour chiffrer et déchiffrer les données à l'aide de CMEK.
Pour configurer l'accès requis, procédez comme suit :
Attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (
roles/cloudkms.cryptoKeyEncrypterDecrypter
) à l'agent de service Pub/Sub.gcloud kms keys add-iam-policy-binding CLOUD_KMS_KEY_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com \ --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez 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
.Exemple :
projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key
.PROJECT_NUMBER : numéro du projet Pub/Sub.
Pour en savoir plus sur l'attribution de rôles Identity and Access Management, consultez Attribuer des rôles à une ressource.
Configurer manuellement un sujet avec CMEK
Vous pouvez configurer manuellement CMEK pour un sujet à l'aide de la console Trusted Cloud ou de gcloud CLI.
Console
Pour créer un sujet avec CMEK, procédez comme suit :
Dans la console Trusted Cloud , 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 l'attribution de noms aux thèmes, 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, assurez-vous d'avoir activé l'API Cloud KMS pour le projet.
Cliquez sur Create topic (Créer un sujet).
gcloud
Pour créer un sujet avec CMEK, exécutez la commande gcloud pubsub
topics create
:
gcloud pubsub topics create TOPIC_ID --topic-encryption-key=ENCRYPTION_KEY
Remplacez les éléments suivants :
-
TOPIC_ID : ID ou nom du thème.
Pour savoir comment nommer un sujet, consultez Consignes de dénomination d'un sujet, d'un abonnement, d'un schéma ou d'un instantané.
-
ENCRYPTION_KEY : ID de la clé 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 thème CMEK
Vous pouvez modifier la clé CMEK associée à un thème Pub/Sub. Vous pouvez utiliser la gcloud CLI pour mettre à jour la clé 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. Si un sujet a été créé sans clé CMEK, vous pouvez en ajouter une ultérieurement. Les messages existants continuent d'être protégés par les clés de chiffrementGoogle Cloud-powered encryption keyspar défaut. Modifier le CMEK d'un sujet ne réenchiffre pas les messages précédemment publiés. Ces messages continuent d'être protégés par la clé avec laquelle ils ont été chiffrés à l'origine.
Pub/Sub dispose d'un mécanisme de mise en cache des clés qui dure environ cinq minutes. Il peut s'écouler jusqu'à cette durée avant que Pub/Sub ne reconnaisse et n'utilise la nouvelle version de clé.
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.
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_count
subscription/pull_request_count
subscription/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 Désactiver et réactiver des 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.s3ns-system.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.
Même si aucune de ces opérations ne confirme une révocation immédiate des accès, les modifications de Cloud 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 moins d'une minute pour Cloud KMS ne risquent pas d'interrompre de manière significative la publication et la distribution, l'indisponibilité prolongée de Cloud KMS a le même effet qu'une révocation de clé.