Lorsque vous utilisez Dataproc, les données de cluster et de tâche sont stockées sur des disques persistants associés aux VM Compute Engine de votre cluster et d'un bucket de préproduction Cloud Storage. Ces données de disque persistant et de bucket sont chiffrées à l'aide d'une clé de chiffrement des données générée par Google (DEK) et de clé de chiffrement de clé (KEK).
La fonctionnalité CMEK vous permet de créer, d'utiliser et de révoquer la clé KEK. Google continue de contrôler les données (clé de chiffrement de clé de chiffrement DEK). Pour en savoir plus sur les clés de chiffrement de données Google, consultez la page Chiffrement au repos.
Utiliser CMEK avec les données de cluster
Vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK) pour chiffrer les données de cluster suivantes :
- Données sur les disques persistants associés aux VM de votre cluster Dataproc
- Données d'argument de job envoyées à votre cluster, telles qu'une chaîne de requête envoyée à l'aide d'un job Spark SQL
- Métadonnées du cluster, résultats du pilote de tâches et d'autres données écrites dans Dataproc bucket de préproduction que vous créez
Pour utiliser CMEK avec le chiffrement des données de cluster, procédez comme suit :
- Créez une ou plusieurs clés à l'aide de Cloud Key Management Service.
Le nom de la ressource, également appelé ID de ressource d'une clé, que vous utiliserez dans les étapes suivantes, se construit comme suit :
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Attribuez les rôles suivants aux comptes de service suivants:
- Suivre l'élément n° 5 dans Compute Engine → Protéger des ressources avec des clés Cloud KMS → Avant de commencer pour attribuer Chiffreur/Déchiffreur de CryptoKeys à l'agent de service Compute Engine de service géré.
Attribuez le rôle Chiffreur/Déchiffreur de clés cryptographiques Cloud KMS au compte de service agent de service Cloud Storage.
Attribuez l'instance Cloud KMS Chiffreur/Déchiffreur de CryptoKeys au niveau Agent de service Dataproc de service géré. Pour attribuer le rôle, vous pouvez utiliser Google Cloud CLI comme suit :
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez les éléments suivants :
KMS_PROJECT_ID
: ID de votre projet Google Cloud exécutant Cloud KMS. Il peut également s'agir du projet qui exécute les ressources Dataproc.PROJECT_NUMBER
: numéro de projet (et non ID de projet) de votre projet Google Cloud qui exécute des ressources Dataproc.Activez l'API Cloud KMS sur le projet qui exécute les ressources Dataproc.
Si le rôle d'agent de service Dataproc n'est pas associé à le compte de service de l'agent de service Dataproc, puis ajoutez l'autorisation
serviceusage.services.use
associé au compte de service de l'agent de service Dataproc. Si le rôle d'agent de service Dataproc est associé au compte de service de l'agent de service Dataproc, vous pouvez ignorer cette étape.
Transmettez l'ID de ressource de votre clé à Google Cloud CLI ou à l'API Dataproc. à utiliser avec le chiffrement des données du cluster.
CLI gcloud
- Pour chiffrer les données de disque persistant du cluster à l'aide de votre clé, transmettez l'ID de ressource de votre clé à l'indicateur
--gce-pd-kms-key
lorsque vous créez le cluster.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --gce-pd-kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other arguments ...
Vous pouvez vérifier les paramètres de clé à partir de l'outil de ligne de commande
gcloud
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Extrait du résultat de la commande:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ...
- À chiffrer les données de disque persistant du cluster et les données d'argument de job
à l'aide de votre clé, transmettez l'ID de ressource de la clé au
--kms-key
lorsque vous créez le cluster. Pour obtenir la liste des types de tâches et des arguments chiffrés avec l'indicateur--kms-key
, consultez Cluster.EncryptionConfig.kmsKey.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other arguments ...
Vous pouvez vérifier les paramètres de clé à l'aide de la gcloud CLI
dataproc clusters describe
. L'ID de ressource de la clé est définigcePdKmsKeyName
etkmsKey
pour utiliser votre clé avec le chiffrement de les données d'arguments du disque persistant du cluster.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Extrait du résultat de la commande:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/key-KEY_RING_NAME-name/cryptoKeys/KEY_NAME ...
- Pour chiffrer les métadonnées du cluster, le pilote de tâches et d'autres données de sortie écrites dans votre bucket de préproduction Dataproc dans Cloud Storage :
- Créez votre propre bucket avec une clé CMEK. Quand ? ajouter la clé au bucket ; utilisez une clé créée à l'étape 1.
- Transmettez le nom du bucket à l'indicateur
--bucket
lorsque vous créez le cluster.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...
Vous pouvez également transmettre les buckets activés par CMEK à la commande "gcloud dataproc jobs submit" si votre job utilise des arguments de bucket, comme illustré dans l'exemple "cmek-bucket" suivant:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
API REST
- Pour chiffrer les données de disque persistant d'une VM de cluster à l'aide de votre clé, incluez le paramètre
ClusterConfig.EncryptionConfig.gcePdKmsKeyName
dans le cadre d'un
cluster.create
requête.
Vous pouvez vérifier les paramètres de clé à l'aide de la gcloud CLI
dataproc clusters describe
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Extrait de résultat de la commande :
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
- Pour chiffrer les données de disque persistant de la VM de cluster et les données d'argument de tâche à l'aide de votre clé, incluez le champ
Cluster.EncryptionConfig.kmsKey
dans une requête cluster.create. Voir Cluster.EncryptionConfig.kmsKey pour obtenir la liste des types de tâches et des arguments chiffrés avec le champ--kms-key
.Vous pouvez vérifier les paramètres de clé à l'aide de la commande
dataproc clusters describe
de la gcloud CLI. L'ID de ressource de la clé est définigcePdKmsKeyName
etkmsKey
pour utiliser votre clé avec le chiffrement de les données d'arguments du disque persistant du cluster.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Extrait du résultat de la commande:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
- To encrypt cluster metadata, job driver, and other output data written to your
Dataproc staging bucket in Cloud Storage:
- Create your own bucket with CMEK. When adding the key to the bucket, use a key that you created in Step 1.
- Pass the bucket name to the ClusterConfig.configBucket field as part of a cluster.create request.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAMEt \ other arguments ...
Vous pouvez également transmettre les buckets activés par CMEK à la commande "gcloud dataproc jobs submit" si votre job utilise des arguments de bucket, comme illustré dans l'exemple "cmek-bucket" suivant:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
- Pour chiffrer les données de disque persistant du cluster à l'aide de votre clé, transmettez l'ID de ressource de votre clé à l'indicateur
Utiliser des CMEK avec des données de modèle de workflow
les données d'arguments du job du modèle de workflow Dataproc, comme la chaîne de requête d'un job Spark SQL, peut être chiffré à l'aide de CMEK. Suivez les étapes 1, 2 et 3 de cette section pour utiliser CMEK avec votre modèle de workflow Dataproc. Consultez WorkflowTemplate.EncryptionConfig.kmsKey pour obtenir la liste des types de tâches et des arguments de modèle de workflow chiffrés à l'aide de CMEK lorsque cette fonctionnalité est activée.
- Créez une clé à l'aide du service Cloud Key Management Service (Cloud KMS).
Le nom de la ressource de la clé, que vous utiliserez lors des étapes suivantes, se construit comme suit :
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
Pour permettre aux comptes de service Dataproc d'utiliser votre clé:
Attribuez le rôle
CryptoKey Encrypter/Decrypter
Cloud KMS au rôle Compte de service d'agent de service Dataproc. Pour attribuer le rôle, vous pouvez utiliser la CLI gcloud :gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Remplacez les éléments suivants :
KMS_PROJECT_ID
: ID de votre projet Google Cloud exécutant Cloud KMS. Il peut également s'agir du projet qui exécute les ressources Dataproc.PROJECT_NUMBER
: numéro de projet (et non ID de projet) de votre projet Google Cloud qui exécute des ressources Dataproc.Activez l'API Cloud KMS sur le projet qui exécute les ressources Dataproc.
Si le rôle d'agent de service Dataproc n'est pas associé au compte de service d'agent de service Dataproc, puis ajoutez l'autorisation
serviceusage.services.use
associé au compte de service de l'agent de service Dataproc. Si le rôle d'agent de service Dataproc est associé au compte de service de l'agent de service Dataproc, vous pouvez ignorer cette étape.
Vous pouvez utiliser la Google Cloud CLI ou l'API Dataproc pour définir la clé créée à l'étape 1 d'un processus. Une fois la clé définie dans un workflow, Tous les arguments et requêtes des jobs de workflow sont chiffrés à l'aide de la clé pour tous les types de jobs et les arguments répertoriés dans WorkflowTemplate.EncryptionConfig.kmsKey.
CLI gcloud
Transmettez l'ID de ressource de votre clé à la l'option
--kms-key
lorsque vous créez le modèle de workflow avec gcloud dataproc workflow-templates create.Exemple :
Vous pouvez vérifier les paramètres de clé à partir de la ligne de commandegcloud dataproc workflow-templates create my-template-name \ --region=region \ --kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \ other arguments ...
gcloud
. .gcloud dataproc workflow-templates describe TEMPLATE_NAME \ --region=REGION
... id: my-template-name encryptionConfig: kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
API REST
Utilisez WorkflowTemplate.EncryptionConfig.kmsKey dans le cadre d'un workflowTemplates.create requête.
Vous pouvez vérifier les paramètres de clé à l'aide d'une requête workflowTemplates.get. Le fichier JSON renvoyé contient la liste des
kmsKey
:... "id": "my-template-name", "encryptionConfig": { "kmsKey": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" },
Cloud External Key Manager
Cloud External Key Manager (Cloud EKM) vous permet de protéger les données Dataproc à l'aide de clés gérées par un partenaire de gestion des clés externes compatible. Les étapes à suivre pour utiliser EKM dans Dataproc sont les mêmes que que celles que vous utilisez pour configurer des clés CMEK, à la différence près: votre clé pointe vers un URI de la clé gérée en externe (voir Présentation de Cloud EKM).
Erreurs Cloud EKM
Lorsque vous utilisez Cloud EKM, une tentative de création d'un cluster peut échouer en raison d'erreurs liées aux entrées, à Cloud EKM, au système partenaire de gestion des clés externes ou aux communications entre EKM et le système externe. Si vous utilisez l'API REST ou la console Google Cloud, les erreurs sont consignées dans Logging. Vous pouvez examiner l'état du cluster dans l'onglet Afficher le journal.