Ce guide décrit l'utilisation de CMEK pour Dataform et explique comment activer le chiffrement CMEK des dépôts Dataform.
Par défaut, Dataform chiffre le contenu client au repos. Dataform 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 Dataform. 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 Dataform 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).
Chiffrement CMEK des données du dépôt
Lorsque vous appliquez le chiffrement CMEK à un dépôt Dataform, toutes les données client gérées par Dataform dans ce dépôt sont chiffrées au repos à l'aide de la clé de protection CMEK définie pour le dépôt. Ces données incluent les éléments suivants :
- Contenu du dépôt Git du dépôt Dataform et de ses espaces de travail
- Requêtes SQL compilées et erreurs de compilation
- Requêtes SQL stockées des actions de workflow
- Détails des erreurs des actions de workflow exécutées
Dataform utilise des clés de protection CMEK dans les cas suivants :
- Lors de chaque opération nécessitant le déchiffrement des données client stockées au repos.
Voici quelques exemples d'opérations :
- Réponses à une requête utilisateur, par exemple
compilationResults.query. - Création de ressources Dataform nécessitant des données de dépôt chiffrées créées précédemment (par exemple, des invocations de workflow).
- Opérations Git permettant de mettre à jour le dépôt distant, par exemple l'envoi d'un commit Git.
- Réponses à une requête utilisateur, par exemple
- Lors de chaque opération nécessitant le stockage de données client au repos.
Voici quelques exemples d'opérations :
- Réponses à une requête utilisateur, par exemple
compilationResults.create. - Opérations Git effectuées dans un espace de travail (par exemple, extraire un commit Git).
- Réponses à une requête utilisateur, par exemple
Dataform gère le chiffrement des données client associées uniquement aux ressources Dataform. Dataform ne gère pas le chiffrement des données client créées dans BigQuery lors de l'exécution des workflows Dataform. Pour chiffrer les données créées et stockées dans BigQuery, configurez CMEK pour BigQuery.
Clés acceptées
Dataform est compatible avec les types de clés CMEK suivants :
- Clés logicielles Cloud KMS
- Clés Cloud HSM (Hardware Security Module)
- Clés Cloud External Key Manager (Cloud EKM)
La disponibilité des clés varie selon leur type et la région. Pour en savoir plus sur la disponibilité géographique des clés CMEK, consultez Emplacements Cloud KMS.
Restrictions
Dataform est compatible avec CMEK, mais avec les restrictions suivantes :
- La taille maximale d'un dépôt chiffré avec CMEK est de 512 Mo.
- La taille maximale d'un espace de travail dans un dépôt chiffré avec CMEK est de 512 Mo.
- Vous ne pouvez pas appliquer de clé de protection CMEK à un dépôt après sa création. Vous ne pouvez appliquer le chiffrement CMEK que lors de la création du dépôt.
- Vous ne pouvez pas supprimer une clé de protection CMEK d'un dépôt.
- Vous ne pouvez pas modifier la clé de protection CMEK d'un dépôt.
- Si vous définissez une clé CMEK Dataform par défaut pour votre projet Google Cloud , tous les nouveaux dépôts créés dans l'emplacement du projet Google Cloud doivent être chiffrés avec CMEK. Lorsque vous créez un dépôt dans l'emplacement du projet Google Cloud , vous pouvez appliquer la clé CMEK Dataform par défaut ou une autre clé CMEK, mais vous ne pouvez pas appliquer le chiffrement au repos par défaut.
- Si vous modifiez la valeur d'une clé CMEK Dataform par défaut, la valeur précédente s'applique aux dépôts préexistants, et la valeur mise à jour s'applique aux dépôts créés après la modification.
- Vous ne pouvez définir qu'une seule clé CMEK Dataform par défaut par emplacement des dépôts de projet Google Cloud .
- L'utilisation des clés Cloud HSM et Cloud EKM est soumise à disponibilité. Pour en savoir plus sur la disponibilité des clés dans les différents emplacements, consultez Emplacements Cloud KMS.
Quotas Cloud KMS et Dataform
Vous pouvez utiliser des clés Cloud HSM et Cloud EKM avec Dataform. Lorsque vous utilisez CMEK dans Dataform, vos projets peuvent consommer des quotas de requêtes de chiffrement Cloud KMS. Par exemple, les dépôts Dataform chiffrés avec CMEK peuvent utiliser ces quotas pour chaque modification du contenu du dépôt. Les opérations de chiffrement et de déchiffrement à l'aide de clés CMEK n'affectent les quotas Cloud KMS que si vous utilisez des clés matérielles (Cloud HSM) ou externes (Cloud EKM). Pour en savoir plus, consultez la page Quotas Cloud KMS.
Gérer les clés
Utilisez Cloud KMS pour toutes les opérations de gestion des clés. Dataform ne peut ni détecter, ni exploiter les modifications d'une clé avant que celles-ci ne soient propagées par Cloud KMS. La propagation de certaines opérations, telles que la désactivation ou la destruction d'une clé, peut prendre jusqu'à trois heures. Les modifications apportées aux autorisations sont généralement propagées beaucoup plus rapidement.
Une fois le dépôt créé, Dataform appelle Cloud KMS pour s'assurer que la clé est toujours valide lors de chaque opération sur les données chiffrées du dépôt.
Si Dataform détecte que votre clé Cloud KMS a été désactivée ou détruite, toutes les données stockées dans le dépôt correspondant deviennent inaccessibles.
Si les appels de Dataform à Cloud KMS détectent qu'une clé précédemment désactivée a été réactivée, Dataform restaure automatiquement l'accès.
Utiliser des clés externes avec Cloud EKM
Au lieu d'utiliser des clés résidant sur Cloud KMS, vous pouvez utiliser des clés résidant chez un partenaire de gestion de clés externes compatible. Pour ce faire, utilisez Cloud External Key Manager (Cloud EKM) afin de créer et de gérer des clés externes, qui sont des pointeurs vers des clés résidant en dehors de Google Cloud. Pour en savoir plus, consultez la page Cloud External Key Manager.
Après avoir créé une clé externe avec Cloud EKM, vous pouvez l'appliquer à un nouveau dépôt Dataform en fournissant l'ID de cette clé lors de la création du dépôt. Cette procédure est identique à l'application d'une clé Cloud KMS à un nouveau dépôt.
Utiliser les clés CMEK par défaut de Dataform
Pour chiffrer plusieurs dépôts Dataform avec la même clé CMEK, vous pouvez définir une clé CMEK Dataform par défaut pour votre projet Google Cloud . Vous devez spécifier l'emplacement du projet Google Cloud pour la clé CMEK Dataform par défaut. Vous ne pouvez définir qu'une seule clé CMEK par défaut par projet Google Cloud .
Une fois que vous avez défini une clé CMEK Dataform par défaut, Dataform l'applique par défaut à tous les nouveaux dépôts créés dans l'emplacement du projet Google Cloud . Lorsque vous créez un dépôt, vous pouvez utiliser la clé par défaut ou sélectionner une autre clé CMEK.
Traitement de l'état d'indisponibilité d'une clé
Dans de rares cas, par exemple pendant les périodes d'indisponibilité de Cloud KMS, Dataform peut ne pas être en mesure de récupérer l'état de votre clé à partir de Cloud KMS.
Si votre dépôt Dataform est protégé par une clé activée au moment où Dataform est incapable de communiquer avec Cloud KMS, les données chiffrées du dépôt deviennent inaccessibles.
Les données chiffrées du dépôt restent inaccessibles jusqu'à ce que Dataform puisse se reconnecter à Cloud KMS et que Cloud KMS réponde que la clé est bien active.
Inversement, si votre dépôt Dataform est protégé par une clé désactivée au moment où Dataform est d'abord incapable de communiquer avec Cloud KMS, les données chiffrées du dépôt restent inaccessibles jusqu'à ce qu'il puisse se reconnecter à Cloud KMS et que vous ayez réactivé votre clé.
Journalisation
Vous pouvez auditer les requêtes que Dataform envoie à Cloud KMS en votre nom dans Cloud Logging, si vous avez activé la journalisation d'audit pour l'API Cloud KMS dans votre projet. Ces entrées de journal Cloud KMS sont visibles dans Cloud Logging. Pour en savoir plus, consultez Afficher les journaux.
Avant de commencer
Déterminez si vous allez exécuter Dataform et Cloud KMS dans des projets différents ou dans le même projet. Nous vous recommandons d'utiliser des projets distincts pour mieux contrôler les autorisations. Pour en savoir plus sur les ID et les numéros de projet Google Cloud , consultez Trouver le nom, le numéro et l'ID du projet.
Pour le projet Google Cloud qui exécute Cloud KMS :
- Activez l'API Cloud Key Management Service.
- Créez un trousseau de clés et une clé, comme décrit dans les sections concernant la création de trousseaux et de clés. Créez le trousseau de clés dans le même emplacement que celui de votre dépôt Dataform :
-
Les dépôts doivent utiliser des clés régionales correspondantes. Par exemple, un dépôt situé dans la région
asia-northeast3doit être protégé par une clé provenant d'un trousseau de clés situé dans la régionasia-northeast3. -
La région
globalne peut pas être utilisée avec Dataform.
-
Les dépôts doivent utiliser des clés régionales correspondantes. Par exemple, un dépôt situé dans la région
Activer les CMEK
Dataform peut accéder à la clé en votre nom après que vous avez accordé le rôle Cloud KMS Chiffreur/Déchiffreur de CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) à l'agent de service Dataform par défaut.
L'ID de votre agent de service Dataform par défaut est au format suivant :
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Pour attribuer le rôle de chiffreur/déchiffreur de clés cryptographiques à l'agent de service Dataform par défaut, procédez comme suit :