Ce document explique comment configurer le chiffrement géré par le client (CMEK) pour Pub/Sub.
Pub/Sub chiffre les messages Clés détenues et gérées par Google par défaut. Aucune configuration supplémentaire n'est pour utiliser des clés de chiffrement gérées par Google.
À propos des CMEK
Les CMEK sont des clés de chiffrement que vous possédez, Cloud Key Management Service (Cloud KMS) Si vous avez besoin de mieux contrôler clés de chiffrement utilisées pour protéger Pub/Sub vous pouvez utiliser des clés CMEK. Certaines organisations imposent également l'utilisation CMEK.
Les CMEK vous offrent un contrôle total sur vos clés de chiffrement, ce qui vous permet de gérer de cycle de vie, de rotation et d'accès. Lorsque vous configurez Pub/Sub avec une CMEK, le service chiffre automatiquement toutes les données en utilisant la clé spécifiée. Utilisation de Cloud KMS pour Les clés CMEK peuvent entraîner des coûts supplémentaires en fonction de vos habitudes d'utilisation.
Chaque message est chiffré avec les couches et états 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)
Chiffrement CMEK pour Pub/Sub
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 leur distribution aux abonnés.
Avant de commencer
Vous pouvez configurer une clé CMEK pour Pub/Sub à l'aide du la console Google Cloud ou la Google Cloud CLI.
Effectuez les tâches suivantes :
Activez l'API Cloud KMS.
Créer un trousseau de clés et une clé dans Cloud KMS Clés et clés les anneaux ne peuvent pas être supprimés.
Pour obtenir des instructions sur la façon d'effectuer ces tâches, consultez la Guide de démarrage rapide de Cloud KMS
É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 pour configurer une clé CMEK
Pub/Sub utilise 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 la page Comptes de service de la console Google Cloud par défaut.
L'agent de service Pub/Sub a le format suivant :
service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
Pub/Sub nécessite des autorisations spécifiques pour chiffrer et déchiffrer des données à l'aide d'une clé CMEK.
Pour configurer l'accès requis, procédez comme suit:
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.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
.Voici un exemple :
projects/test-project/locations/us-central1/keyRings/test-keyring/cryptoKeys/test-key
.PROJECT_NUMBER: numéro du projet projet Pub/Sub.
Pour en savoir plus sur l'attribution de rôles IAM, consultez la page Attribuer des rôles sur une ressource
Configurer un sujet avec une clé CMEK
Vous pouvez configurer une clé CMEK pour un sujet à l'aide de la console Google Cloud ou gcloud CLI.
Console
Pour créer un sujet avec une clé CMEK, procédez comme suit:
Dans la console Google 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 sujets, consultez les consignes d'attribution de noms.
Dans le champ Chiffrement, cliquez sur Clé Cloud KMS.
Sélectionnez le type de clé. Si vous ne voyez pas l'option clé, vérifiez que vous avez activé l'API Cloud KMS pour le projet.
Cliquez sur Create topic (Créer un sujet).
gcloud
-
In the Google Cloud console, 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.
-
Pour créer un sujet avec une clé 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 sujet.
Pour plus d'informations sur le nom d'un sujet, voir Consignes pour nommer un sujet, un abonnement, un schéma ou 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 la clé CMEK d'un sujet
Vous avez la possibilité de modifier la clé CMEK associée sujet Pub/Sub. Vous pouvez utiliser la gcloud CLI pour mettre à jour la clé CMEK. Toutefois, cette modification ne s'applique pas rétroactivement.
Les messages publiés dans le sujet avant les modifications de clé restent chiffrés avec la clé d'origine. Si un sujet a été créé sans clé CMEK, vous pourrez en ajouter une ultérieurement. Les messages existants continuent d'être protégés par le modèle par défaut le chiffrement. La modification de la clé CMEK d'un sujet ne rechiffre pas les données publiées précédemment messages. Ces messages restent protégés à l'aide de la clé qu'ils ont initialement chiffré.
Pub/Sub dispose d'un mécanisme de mise en cache pour les clés environ cinq minutes. Cela peut prendre jusqu'à cette durée pour à Pub/Sub de reconnaître et d'utiliser la nouvelle version de clé.
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 eventsSelon une grille tarifaire dans laquelle les opérations de chiffrement coûtera 0,03 $pour 10 000 opérations, l'utilisation ci-dessus coûtera environ 0,07 $. Consultez les tarifs de Cloud KMS pour connaître les informations tarifaires.
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_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 a pu être désactivée. Pour en savoir plus, consultez Désactiver et réactiver les clés sur cette .
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 des deux opérations ne confirme la révocation instantanée de l'accès, Les modifications IAM se propagent généralement plus rapidement. Pour apprendre consultez la page Cohérence des ressources Cloud KMS et Propagation des modifications des 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 sont peu susceptibles qui interrompent considérablement la publication et la livraison, l'indisponibilité a le même effet que la révocation de la clé.