Utiliser des clés de chiffrement gérées par le client (CMEK)

Cette page explique comment utiliser une clé de chiffrement Cloud Key Management Service (Cloud KMS) avec Cloud Data Fusion.

Une clé de chiffrement gérée par le client (CMEK, Customer-Managed Encryption Key) permet de chiffrer les données au repos avec une clé contrôlable via Cloud KMS. Le chiffrement CMEK permet aux utilisateurs de contrôler les données écrites dans les ressources internes de Google dans les projets locataires et les données écrites par les pipelines Cloud Data Fusion, y compris :

  • Journaux et métadonnées de pipeline
  • Métadonnées du cluster Dataproc
  • Récepteurs, actions et sources de données Cloud Storage, BigQuery, Pub/Sub et Spanner

Ressources Cloud Data Fusion

Pour obtenir la liste des plug-ins Cloud Data Fusion compatibles avec les CMEK, consultez la liste des plug-ins compatibles.

Cloud Data Fusion est compatible avec les CMEK pour les clusters Dataproc. Cloud Data Fusion crée un cluster Dataproc temporaire à utiliser dans le pipeline, puis le supprime une fois le pipeline terminé. La clé CMEK protège les métadonnées du cluster écrites de la manière suivante:

  • Disques persistants associés aux VM de cluster.
  • Résultats des pilote de tâches et autres métadonnées écrites dans le bucket de préproduction Dataproc, créé automatiquement ou par l'utilisateur.

Configurer les clés de chiffrement gérées par le client (CMEK)

Créer une clé Cloud KMS

Créez une clé Cloud KMS dans le projet Google Cloud contenant l'instance Cloud Data Fusion ou dans un projet utilisateur distinct. L'emplacement du trousseau de clés Cloud KMS doit correspondre à la région dans laquelle vous créez l'instance. Une clé multirégionale ou mondiale n'est pas autorisée au niveau de l'instance, car Cloud Data Fusion est toujours associé à une région particulière.

Obtenir le nom de ressource de la clé

API REST

Obtenez le nom de ressource de la clé que vous avez créée à l'aide de la commande suivante :

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : projet client qui héberge l'instance Cloud Data Fusion
  • REGION : région Google Cloud proche de votre emplacement (par exemple, us-east1)
  • KEY_RING_NAME : nom du trousseau de clés qui regroupe les clés cryptographiques
  • KEY_NAME : nom de la clé Cloud KMS

Console

  1. Accédez à la page Clés de chiffrement.

    Accéder à la page Clés cryptographiques

  2. À côté de votre clé, cliquez sur More (Plus) .

  3. Sélectionnez Copy Resource Name (Copier le nom de la ressource) pour copier le nom de la ressource dans le presse-papiers.

Mettre à jour les comptes de service de votre projet pour utiliser la clé

Pour configurer les comptes de service de votre projet pour utiliser votre clé :

  1. Obligatoire : Accordez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) à l'agent de service Cloud Data Fusion (voir Attribuer des rôles à un compte de service pour des ressources spécifiques). Ce compte est au format suivant :

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    L'attribution du rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS à l'agent de service Cloud Data Fusion permet à Cloud Data Fusion d'utiliser les CMEK pour chiffrer toutes les données client stockées dans des projets locataires.

  2. Obligatoire : Attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS à l'agent de service Compute Engine (voir Attribuer une clé Cloud KMS à un compte de service Cloud Storage). Ce compte, auquel le rôle Agent de service Compute Engine est attribué par défaut, se présente sous la forme suivante :

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    Attribuer le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS à l'agent de service Compute Engine permet à Cloud Data Fusion d'utiliser les CMEK pour chiffrer les métadonnées de disques persistants écrites par le cluster Dataproc s'exécutant dans votre pipeline.

  3. Obligatoire : Attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS à l'agent de service Cloud Storage (voir Attribuer une clé Cloud KMS à un agent de service Cloud Storage). Cet agent de service se présente sous la forme suivante :

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    L'attribution du rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au compte de service Cloud Storage permet à Cloud Data Fusion d'utiliser les CMEK pour chiffrer les données écrites dans le bucket de préproduction du cluster Dataproc et toutes les autres ressources Cloud Storage utilisées par votre pipeline.

  4. Obligatoire: attribuez le rôle Chiffreur/Déchiffreur de CryptoKeys Cloud KMS à l'agent de service Google Cloud Dataproc. Cet agent de service se présente sous la forme suivante:

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. Facultatif : Si votre pipeline utilise des ressources BigQuery, attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au compte de service BigQuery (voir la section Accorder une autorisation de chiffrement et de déchiffrement). Ce compte se présente comme suit :

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  6. Facultatif : Si votre pipeline utilise des ressources Pub/Sub, attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au compte de service Pub/Sub (voir la section Utiliser les clés de chiffrement gérées par le client). Ce compte apparaît au format suivant :

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  7. Facultatif : Si votre pipeline utilise des ressources Spanner, attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au compte de service Spanner. Ce compte se présente comme suit :

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

Créer une instance Cloud Data Fusion avec CMEK

Les clés CMEK sont disponibles dans toutes les éditions de Cloud Data Fusion 6.5.0 et versions ultérieures.

API REST

  1. Pour créer une instance avec une clé de chiffrement gérée par le client, définissez les variables d'environnement suivantes :

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    Remplacez les éléments suivants :

    • PROJECT_ID: projet client qui héberge l'instance Cloud Data Fusion
    • REGION: région Google Cloud proche de votre emplacement (par exemple, us-east1)
    • INSTANCE_ID : nom de l'instance Cloud Data Fusion
    • KEY_NAME : nom complet de la ressource de la clé CMEK
  2. Exécutez la commande suivante pour créer une instance Cloud Data Fusion :

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'
    

Console

  1. Accédez à la page Cloud Data Fusion.

  2. Cliquez sur Instances, puis sur Créer une instance.

    Accéder à la page "Instances"

  3. Dans la section Options avancées, sélectionnez Utiliser une clé de chiffrement gérée par le client (CMEK).

  4. Dans le champ Sélectionner une clé gérée par le client, sélectionnez le nom de ressource de la clé.

    Sélectionner le nom de la clé de chiffrement

  5. Après avoir saisi tous les détails de l'instance, cliquez sur Créer. Lorsque l'instance est prête à l'emploi, elle apparaît sur la page Instances.

Vérifier si les CMEK sont activées sur une instance

Console

Affichez les détails de l'instance:

  1. Dans la console Google Cloud, accédez à la page Cloud Data Fusion.

  2. Cliquez sur Instances, puis sur le nom de l'instance pour accéder à la page Détails de l'instance.

    Accéder à la page "Instances"

Si les CMEK sont activées, le champ Clé de chiffrement indique Disponible.

Si les CMEK sont désactivées, le champ Clé de chiffrement apparaît comme Non disponible.

Utiliser les CMEK avec les plug-ins compatibles

Lorsque vous définissez le nom de la clé de chiffrement, utilisez le format suivant :

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Noms des clés de chiffrement

Le tableau suivant décrit le comportement de la clé dans les plug-ins Cloud Data Fusion compatibles avec les CMEK.

Plug-ins compatibles Comportement de la clé
Récepteurs Cloud Data Fusion
Cloud Storage Chiffre les données écrites dans un bucket créé par le plug-in. Si le bucket existe déjà, cette valeur est ignorée.
Cloud Storage multi-fichiers Chiffre les données écrites dans un bucket créé par le plug-in.
BigQuery Chiffre les données écrites dans un bucket, un ensemble de données ou une table créés par le plug-in.
BigQuery multi-tables Chiffre les données écrites dans un bucket, un ensemble de données ou une table créés par le plug-in.
Pub/Sub Chiffre les données écrites dans un sujet créé par le plug-in. Si le sujet existe déjà, cette valeur est ignorée.
Spanner Chiffre les données écrites dans n'importe quelle base de données créée par le plug-in. Si la base de données existe déjà, cette valeur est ignorée.
Actions Cloud Data Fusion
Cloud Storage Create
Cloud Storage Copy
Cloud Storage Move
Cloud Storage Done File Marker
Chiffre les données écrites dans un bucket créé par le plug-in. Si le bucket existe déjà, cette valeur est ignorée.
BigQuery Execute Chiffre les données écrites dans l'ensemble de données ou la table créée par le plug-in pour stocker les résultats de requête. Cela n'est applicable que si vous stockez les résultats de la requête dans une table BigQuery.
Sources Cloud Data Fusion
Source BigQuery Chiffre les données écrites dans un bucket créé par le plug-in. Si le bucket existe déjà, cette valeur est ignorée.
Moteur SQL Cloud Data Fusion
BigQuery Pushdown Engine Chiffre les données écrites dans un bucket, un ensemble de données ou une table créés par le plug-in.

Utiliser les CMEK avec les métadonnées du cluster Dataproc

Les profils de calcul pré-créés utilisent la clé CMEK fournie lors de la création de l'instance pour chiffrer les métadonnées des disques persistants et des buckets de préproduction écrits par le cluster Dataproc s'exécutant dans votre pipeline. Vous pouvez utiliser une autre clé en effectuant l'une des opérations suivantes :

  • Recommandé : Créez un profil de calcul Dataproc (édition Enterprise uniquement).
  • Modifiez un profil de calcul Dataproc existant (édition Developer, Basic ou Enterprise).

Console

  1. Ouvrez l'instance Cloud Data Fusion :

    1. Dans la console Google Cloud, accédez à la page "Cloud Data Fusion".

    2. Pour ouvrir l'instance dans l'interface Web de Cloud Data Fusion, cliquez sur Instances, puis sur Afficher l'instance.

      Accéder à la page "Instances"

  2. Cliquez sur Administrateur système > Configuration.

  3. Cliquez sur le menu déroulant Profils de calcul système.

  4. Cliquez sur Créer un profil, puis sélectionnez Dataproc.

  5. Saisissez un Libellé de profil, un Nom de profil et une Description.

  6. Par défaut, Dataproc crée des buckets de préproduction et temporaires chaque fois qu'un cluster éphémère est créé par Cloud Data Fusion. Cloud Data Fusion permet de transmettre le bucket de préproduction Dataproc en tant qu'argument dans le profil de calcul. Pour chiffrer le bucket de préproduction, créez un bucket pour lequel CMEK est activé et transmettez-le en tant qu'argument à Dataproc dans le profil de calcul.

  7. Par défaut, Cloud Data Fusion crée automatiquement un bucket Cloud Storage pour entreposer les dépendances utilisées par Dataproc. Si vous préférez utiliser un bucket Cloud Storage qui existe déjà dans votre projet, procédez comme suit:

    1. Dans la section Paramètres généraux, indiquez votre bucket Cloud Storage existant dans le champ Bucket Cloud Storage.

    2. Ajoutez votre clé Cloud KMS à votre bucket Cloud Storage.

  8. Récupérez l'ID de ressource de votre clé Cloud KMS. Dans la section Paramètres généraux, saisissez votre ID de ressource dans le champ Nom de la clé de chiffrement.

  9. Cliquez sur Créer.

  10. Si plusieurs profils sont répertoriés dans la section Profils de calcul système de l'onglet Configuration, définissez le nouveau profil Dataproc comme profil par défaut. Pour cela, maintenez le curseur sur le champ du nom du profil et cliquez sur l'étoile qui s'affiche.

    Sélectionnez le profil par défaut.

Utiliser les CMEK avec d'autres ressources

La clé CMEK fournie est définie sur les préférences système lors de la création de l'instance Cloud Data Fusion. Il permet de chiffrer les données écrites sur les ressources nouvellement créées par les récepteurs de pipeline tels que les récepteurs Cloud Storage, BigQuery, Pub/Sub ou Spanner.

Cette clé ne s'applique qu'aux ressources nouvellement créées. Si la ressource existe déjà avant l'exécution du pipeline, vous devez appliquer manuellement la clé CMEK à ces ressources existantes.

Pour modifier la clé CMEK, effectuez l'une des opérations suivantes:

  • Utilisez un argument d'exécution.
  • Définissez une préférence système Cloud Data Fusion.

Argument d'exécution

  1. Sur la page Pipeline Studio de Cloud Data Fusion, cliquez sur la flèche de menu déroulant située à droite du bouton Exécuter.
  2. Dans le champ Nom, saisissez gcp.cmek.key.name.
  3. Dans le champ Valeur, saisissez l'ID de ressource de votre clé.
    Sélectionnez l'édition Data Fusion.
  4. Cliquez sur Enregistrer.

    L'argument d'exécution que vous définissez ici ne s'applique qu'aux exécutions du pipeline actuel.

Préférence

  1. Dans l'interface utilisateur de Cloud Data Fusion, cliquez sur ADMINISTRATEUR SYSTÈME.
  2. Cliquez sur l'onglet Configuration.
  3. Cliquez sur le menu déroulant Préférences système.
  4. Cliquez sur Modifier les préférences système.
  5. Dans le champ Clé, saisissez gcp.cmek.key.name.
  6. Dans le champ Valeur, saisissez l'ID de ressource de votre clé.
    Sélectionnez l'édition Data Fusion.
  7. Cliquez sur Enregistrer et fermer.