Ao usar o Dataproc, os dados do cluster e do job são armazenados em discos permanentes (DPs) associados às VMs do Compute Engine no cluster e em um bucket de preparo do Cloud Storage. Esses dados armazenados nos PDs e no bucket são criptografados com uma chave de criptografia de dados (DEK, na sigla em inglês) gerada pelo Google e com uma chave de criptografia de chaves (KEK, na sigla em inglês). O recurso CMEK permite que você crie, use e revogue a chave de criptografia de chaves (KEK). O Google ainda controla a chave de criptografia de dados (DEK). Para mais informações sobre chaves de criptografia de dados do Google, veja Criptografia em repouso.
Como usar a CMEK
É possível usar o CMEK para criptografar dados nos DPs associados às VMs no seu cluster do Dataproc e/ou nos metadados do cluster e na saída do job gravados no bucket de preparo do Dataproc. Siga estas etapas para usar a CMEK com os PDs do cluster, o bucket do Cloud Storage ou os dois respectivamente.
- Crie uma chave usando o Cloud Key Management Service (Cloud KMS).
Copie o nome do recurso para usá-lo nas próximas etapas. O nome do recurso é criado da seguinte maneira:
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
Para que as contas de serviço do Compute Engine e Cloud Storage utilizem sua chave, siga as etapas a seguir.
- Siga o item 5 em
Compute Engine → Como proteger recursos com chaves do Cloud KMS → Antes de começar
para atribuir o papel
CryptoKey Encrypter/Decrypter
do Cloud KMS ao agente de serviço do Compute Engine. - Atribua o papel
CryptoKey Encrypter/Decrypter
do Cloud KMS ao agente de serviço do Cloud Storage.
- Siga o item 5 em
Compute Engine → Como proteger recursos com chaves do Cloud KMS → Antes de começar
para atribuir o papel
Use a CLI do Google Cloud ou a API Dataproc para definir a chave criada na etapa 1 nos DPs associados às VMs no cluster do Dataproc.
Comando gcloud
Passe o código do recurso do Cloud KMS obtido na etapa 1 para a sinalização
--gce-pd-kms-key
ao criar o cluster com o comando gcloud dataproc clusters create.Exemplo:
gcloud dataproc clusters create my-cluster-name \ --region=region \ --gce-pd-kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \ other args ...
É possível verificar a configuração da chave na ferramenta de linha de comando
gcloud
.gcloud dataproc clusters describe cluster-name \ --region=region
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ...
API REST
Use ClusterConfig.EncryptionConfig.gcePdKmsKeyName como parte de uma solicitação cluster.create.
Verifique a configuração da chave emitindo uma solicitação clusters.get. O JSON retornado contém listas do
gcePdKmsKeyName
:... { "projectId": "project-id", "clusterName": "cluster-name", "config": { "encryptionConfig": { "gcePdKmsKeyName": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" } },
Crie um bucket com a CMEK e use-a no bucket do Cloud Storage utilizado pelo Dataproc para ler/gravar dados de cluster e job. Observação: use a chave criada na etapa 1 quando adicionar a chave no bucket. Em seguida, transfira o nome do bucket para o comando gcloud dataproc clusters create ao criar o cluster.
Exemplo:
gcloud dataproc clusters create my-cluster \ --region=region \ --bucket=name-of-CMEK-bucket \ other args ...
Também é possível passar buckets ativados para CMEK no comando
Exemplo:gcloud dataproc jobs submit
se o job aceitar argumentos de bucket. Consulte os argumentos de buckets...cmek-bucket...
no exemplo de envio de job do PySpark a seguir.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 usar a CMEK nos disco permanente de seu cluster e no bucket do Cloud Storage usado pelo Dataproc, passe as sinalizações
--gce-pd-kms-key
e--bucket
para o comandogcloud dataproc clusters create
, conforme explicado. nas etapas 3 e 4. Você pode criar e usar uma chave separada para dados de PD e do bucket.
Gerenciador de chaves externas do Cloud
O Cloud External Key Manager (EKM) permite proteger dados do Dataproc usando chaves gerenciadas por um parceiro de gerenciamento de chaves externo suportado. As etapas a serem seguidas para usar o EKM no Dataproc são as mesmas usadas para configurar chaves CMEK, com a seguinte diferença: sua chave aponta para um URI para a chave gerenciada externamente (consulte Visão geral do Cloud EKM).
Erros do Cloud EKM
Quando você usa o Cloud EKM, uma tentativa de criar um cluster pode falhar devido a erros associados a entradas, ao Cloud EKM, ao sistema externo de parceiros de gerenciamento de chaves ou a comunicações entre o EKM e o sistema externo. Se você usar a API REST ou o Console do Cloud, os erros serão registrados no Logging. É possível examinar os erros do cluster com falha na guia "Ver registros".