Cuando usas Dataproc, los datos del clúster y del trabajo se almacenan discos asociados con las VMs de Compute Engine en tu clúster y en un bucket de Cloud Storage bucket de etapa de pruebas. Estos datos de disco persistente y bucket se encriptan con una clave de encriptación de datos generada por Google. (DEK) y clave de encriptación de claves (KEK).
La función CMEK te permite crear, usar y revocar la clave de encriptación de claves (KEK). Google aún controla los datos clave de encriptación segura (DEK). Para obtener más información sobre las claves de encriptación de datos de Google, consulta Encriptación en reposo.
Usa CMEK con datos del clúster
Puedes usar claves de encriptación administradas por el cliente (CMEK) para encriptar los siguientes datos del clúster:
- Datos en los discos persistentes conectados a las VMs en tu clúster de Dataproc
- Datos de argumentos de trabajo enviados a tu clúster, como una cadena de consulta enviada con un trabajo de Spark SQL
- Metadatos de clúster, resultado del controlador del trabajo, y otros datos escritos en Dataproc bucket de etapa de pruebas que crees
Sigue estos pasos para usar CMEK con la encriptación de los datos del clúster:
- Crea una o más claves con Cloud Key Management Service.
El nombre del recurso, también denominado ID de recurso de una clave, que usarás en los pasos siguientes
se construye de la siguiente manera:
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
Asigna los siguientes roles a las siguientes cuentas de servicio:
- Seguir el elemento n.o 5 en Compute Engine→Protege recursos con las claves de Cloud KMS→Antes de comenzar asignar el rol de Cloud KMS Encriptador/Desencriptador de CryptoKey rol al agente de servicio de Compute Engine cuenta de servicio.
Asigna el Cloud KMS Encriptador/Desencriptador de CryptoKey el rol de analista de seguridad en la nube Agente de servicio de Cloud Storage cuenta de servicio.
Asigna el Cloud KMS Encriptador/Desencriptador de CryptoKey el rol de analista de seguridad en la nube Agente de servicio de Dataproc cuenta de servicio. Puedes usar Google Cloud CLI para asignar la función:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Reemplaza lo siguiente:
KMS_PROJECT_ID
: Es el ID del proyecto de Google Cloud que ejecuta Cloud KMS. Este proyecto también puede ser el que ejecute los recursos de Dataproc.PROJECT_NUMBER
: Es el número del proyecto (no el ID del proyecto) de tu proyecto de Google Cloud que ejecuta los recursos de Dataproc.Habilitar la API de Cloud KMS en el proyecto que ejecuta los recursos de Dataproc
Si el rol de agente de servicios de Dataproc no está vinculado la cuenta de servicio del agente de servicios de Dataproc Luego, agrega el permiso
serviceusage.services.use
al archivo asignado a la cuenta de servicio del agente de servicio de Dataproc. Si el rol de agente de servicio de Dataproc adjunta a la cuenta de servicio del agente de servicio de Dataproc, puedes omitir este paso.
Pasa el ID de recurso de tu clave a Google Cloud CLI o a la API de Dataproc para usarlas con la encriptación de datos del clúster.
gcloud CLI
- Para encriptar datos del disco persistente del clúster con tu clave, pasa
el ID de recurso de tu clave con la marca
--gce-pd-kms-key
cuando crees en el clúster.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 ...
Puedes verificar la configuración de la clave desde la herramienta de línea de comandos de
gcloud
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Fragmento del resultado del comando:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ...
- Encriptar los datos del disco persistente del clúster y los datos de los argumentos del trabajo
usando tu clave, pasa el ID de recurso de la clave al
La marca
--kms-key
cuando creas el clúster. Consulta Cluster.EncryptionConfig.kmsKey. para obtener una lista de tipos de trabajo y argumentos que están encriptados con la marca--kms-key
.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other arguments ...
Puedes verificar la configuración de la clave con gcloud CLI Comando
dataproc clusters describe
. El ID del recurso de la clave se establece engcePdKmsKeyName
ykmsKey
para usar tu clave con la encriptación de el disco persistente del clúster y los datos de argumento del trabajo.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Fragmento del resultado del comando:
... 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 ...
- Para encriptar los metadatos del clúster, el controlador del trabajo y otros datos de salida escritos en tu
Bucket de etapa de pruebas de Dataproc en Cloud Storage:
- Crea tu propio bucket con CMEK. Cuándo agregar la clave al bucket usa una clave creada en el paso 1.
- Pasa el nombre del bucket a la marca
--bucket
cuando crees el clúster.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...
También puedes pasar los buckets habilitados por CMEK al comando “gcloud dataproc jobs submit” si tu trabajo toma argumentos de buckets, como se muestra en el siguiente ejemplo de “cmek-bucket”:
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 de REST
- Para encriptar datos del disco persistente de la VM del clúster con tu clave, incluye el archivo
ClusterConfig.EncryptionConfig.gcePdKmsKeyName
como parte de un
cluster.create
para cada solicitud.
Puedes verificar la configuración de la clave con gcloud CLI Comando
dataproc clusters describe
.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Fragmento del resultado del comando:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
- Encriptar los datos del disco persistente de la VM del clúster y los datos de los argumentos de trabajo mediante
tu clave, incluye el campo
Cluster.EncryptionConfig.kmsKey
como parte de una cluster.create para cada solicitud. Consulta Cluster.EncryptionConfig.kmsKey para obtener una lista de tipos de trabajos y argumentos que están encriptados con el campo--kms-key
.Puedes verificar la configuración de la clave con gcloud CLI Comando
dataproc clusters describe
. El ID del recurso de la clave se establece engcePdKmsKeyName
ykmsKey
para usar tu clave con la encriptación de el disco persistente del clúster y los datos de argumento del trabajo.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGION
Fragmento del resultado del comando:
... 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 ...
También puedes pasar los buckets habilitados por CMEK al comando “gcloud dataproc jobs submit” si tu trabajo toma argumentos de buckets, como se muestra en el siguiente ejemplo de “cmek-bucket”:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
- Para encriptar datos del disco persistente del clúster con tu clave, pasa
el ID de recurso de tu clave con la marca
Usa CMEK con datos de plantillas de flujo de trabajo
los datos de argumentos de trabajo de la plantilla de flujo de trabajo de Dataproc. como la cadena de consulta de un trabajo de Spark SQL, se pueden encriptar CMEK. Sigue los pasos 1, 2 y 3 de esta sección para usar CMEK con tu Plantilla de flujo de trabajo de Dataproc. Consulta WorkflowTemplate.EncryptionConfig.kmsKey para obtener una lista de argumentos y tipos de trabajos de plantillas de flujo de trabajo que se encriptan con CMEK cuando esta función está habilitada.
- Crea una clave con Cloud Key Management Service (Cloud KMS).
El nombre del recurso de la clave, que usarás en los próximos pasos
nombre se construye de la siguiente manera:
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
A fin de habilitar las cuentas de servicio de Dataproc para que usen tu clave, sigue estos pasos:
Asigna el rol
CryptoKey Encrypter/Decrypter
de Cloud KMS al Cuenta de servicio del agente de servicios de Dataproc. Puedes usar gcloud CLI para asignar el rol:gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Reemplaza lo siguiente:
KMS_PROJECT_ID
: Es el ID del proyecto de Google Cloud que ejecuta Cloud KMS. Este proyecto también puede ser el que ejecute los recursos de Dataproc.PROJECT_NUMBER
: Es el número del proyecto (no el ID del proyecto) de tu proyecto de Google Cloud que ejecuta los recursos de Dataproc.Habilitar la API de Cloud KMS en el proyecto que ejecuta los recursos de Dataproc
Si el rol de agente de servicios de Dataproc no está vinculado a la cuenta de servicio de agente de servicios de Dataproc, Luego, agrega el permiso
serviceusage.services.use
al archivo asignado a la cuenta de servicio del agente de servicio de Dataproc. Si el rol de agente de servicio de Dataproc adjunta a la cuenta de servicio del agente de servicio de Dataproc, puedes omitir este paso.
Puedes usar Google Cloud CLI o la API de Dataproc para configurar la clave que creaste en el Paso 1 en un flujo de trabajo. Una vez que se configura la clave en un flujo de trabajo, Todos los argumentos y las consultas de trabajo del flujo de trabajo se encriptan con la clave para cualquiera de los tipos de trabajo. y argumentos enumerados en WorkflowTemplate.EncryptionConfig.kmsKey.
gcloud CLI
Pasa el ID de recurso de tu clave a la La marca
--kms-key
cuando creas la plantilla de flujo de trabajo con el gcloud dataproc workflow-templates create.Ejemplo:
gcloud 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 ...
Puedes verificar la configuración de la clave desde la línea de comandos degcloud
herramienta.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 de REST
Usa WorkflowTemplate.EncryptionConfig.kmsKey como parte de una workflowTemplates.create.
Para verificar el parámetro de configuración de la clave, emite un workflowTemplates.get para cada solicitud. El JSON que se muestra contiene una lista de
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) (EKM) te permite proteger datos de Dataproc mediante claves administradas por un socio de administración de claves externo admitido. Los pasos que sigues para usar EKM en Dataproc son los mismos que se indican a continuación. que las que usas para configurar claves CMEK, con la siguiente diferencia: tus claves apuntan a un URI de la clave administrada de forma externa (consulta Descripción general de Cloud EKM).
Errores de Cloud EKM
Cuando usas Cloud EKM, un intento de crear un clúster puede fallar debido a errores asociados con las entradas, Cloud EKM, la clave externa de socios de administración, o las comunicaciones entre EKM y el sistema externo. Si usas la API de REST o la consola de Google Cloud, los errores se registran en Logging. Puedes examinar los clústeres con errores en la pestaña Ver registro.