Chaves de criptografia gerenciadas pelo cliente (CMEK)

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.

Usar a CMEK

É possível usar a 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 driver 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.

  1. 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
    
  2. Para que as contas de serviço do Compute Engine e Cloud Storage utilizem sua chave, siga as etapas a seguir.

    1. 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 à conta de serviço do Compute Engine.
    2. Atribua o papel CryptoKey Encrypter/Decrypter do Cloud KMS à conta de serviço do Cloud Storage.
  3. Você pode usar a ferramenta de linha de comando gcloud ou a API do Dataproc para definir a chave criada na etapa 1 nos PDs 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 ...
    

    Você pode verificar a configuração da chave a partir da 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.

    É possível verificar 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"
    }
    },
    

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

    Você também pode passar um bucket habilitados para CMEK para o comando gcloud dataproc jobs submit se o job aceitar argumentos de buckets. Consulte os argumentos de buckets ...cmek-bucket... no exemplo de envio de job do PySpark a seguir.

    Exemplo:
    gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \
        --region=region \
        --cluster=cluster-name \
        -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
    

  5. 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 comando gcloud 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.