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.

Par défaut, Cloud Data Fusion chiffre le contenu client au repos. Cloud Data Fusion 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 Cloud Data Fusion. 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, d'afficher 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 Cloud Data Fusion 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).

Cloud Data Fusion est compatible avec le suivi de l'utilisation des clés Cloud KMS pour la ressource Instance.

Le chiffrement CMEK vous permet 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 les suivantes:

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

Ressources Cloud Data Fusion

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

Cloud Data Fusion est compatible avec CMEK pour les clusters Dataproc. Cloud Data Fusion crée un cluster Dataproc temporaire qui est utilisé dans le pipeline, puis supprimé une fois le pipeline terminé. CMEK protège les métadonnées de cluster écrites dans les éléments suivants:

  • 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é d'une région mondiale ou d'un emplacement multirégional n'est pas autorisée au niveau de l'instance, car Cloud Data Fusion est toujours associé à une région spécifique.

Obtenir le nom de la ressource pour 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 Gestion des clés.

    Accéder à la page "Gestion des clés"

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

  3. Sélectionnez 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 clés cryptographiques 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

CMEK est disponible dans toutes les éditions de Cloud Data Fusion version 6.5.0 et ultérieure.

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 Options avancées, sélectionnez Utiliser une clé de chiffrement gérée par le client (CMEK).

  4. Dans le champ Select a customer-managed key (Sélectionner une clé gérée par le client), sélectionnez le nom de la ressource de la clé.

    Sélectionner le nom de la clé de chiffrement

  5. Une fois tous les détails de l'instance saisis, cliquez sur Créer. Lorsque l'instance est prête à être utilisée, elle apparaît sur la page Instances.

Vérifier si CMEK est activé 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 le chiffrement CMEK est activé, le champ Clé de chiffrement indique Disponible.

Si le chiffrement CMEK est désactivé, le champ Clé de chiffrement s'affiche 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 touche
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 une 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éés par le plug-in pour stocker les résultats de requête. Elle 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 Cloud Data Fusion Studio, 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 compatible avec CMEK 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 mettre en scène 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, saisissez 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 Create (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 la préférence système lors de la création de l'instance Cloud Data Fusion. Il permet de chiffrer les données écrites dans les ressources nouvellement créées par les récepteurs de pipeline tels que 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, procédez comme suit:

  • 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.