Como usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Nesta página, você verá como usar uma chave de criptografia do Cloud Key Management Service (Cloud KMS) com o Cloud Data Fusion.

Uma chave de criptografia gerenciada pelo cliente (CMEK) permite a criptografia de dados em repouso com uma chave que pode ser controlada por meio do Cloud KMS. A CMEK fornece ao usuário controle sobre os dados gravados nos recursos internos do Google em projetos de locatário e dados gravados pelos pipelines do Cloud Data Fusion, incluindo:

  • Registros e metadados do pipeline
  • Metadados do cluster do Dataproc
  • Coletores de dados do Cloud Storage, BigQuery, Pub/Sub e Cloud Spanner

Recursos do Cloud Data Fusion

O Cloud Data Fusion é compatível com CMEK para os seguintes plug-ins do Cloud Data Fusion:

  • Coletores do Cloud Data Fusion:

    • Cloud Storage
    • Vários arquivos do Cloud Storage
    • BigQuery
    • Várias tabelas do BigQuery
    • Pub/Sub
    • Spanner
  • Ações do Cloud Data Fusion:

    • Criação do Cloud Storage
    • Execução do BigQuery

O Cloud Data Fusion é compatível com CMEK para clusters do Dataproc. O Cloud Data Fusion cria um cluster temporário do Dataproc para uso no pipeline e o exclui quando o pipeline é concluído. A CMEK protege os metadados do cluster gravados nas informações a seguir:

  • Discos permanentes (DP) anexados a VMs de cluster
  • Saída do driver do job e outros metadados gravados no bucket de preparação do Dataproc criado automaticamente ou pelo usuário.

Configurar o CMEK

Criar uma chave do Cloud KMS

Criar uma chave do Cloud KMS.

É possível criar a chave no mesmo projeto do Google Cloud que a instância do Cloud Data Fusion ou em um projeto de usuário separado. O local do keyring do Cloud KMS precisa corresponder à região em que você quer criar a instância. Uma chave de região global ou de várias regiões não é permitida.

Consiga o nome do recurso para a chave

API REST

Encontre o nome do recurso da chave que você criou com o seguinte comando:

projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name

Console

  1. Acesse a página Chaves criptográficas.

    Acessar chaves criptográficas

  2. Ao lado da sua chave, clique em Mais .

  3. Selecione Copiar nome do recurso para copiar o nome completo do recurso para a área de transferência.

Atualize as contas de serviço do seu projeto para usar a chave

Para configurar as contas de serviço do seu projeto para usar a chave:

  1. Obrigatório: conceda o papel de criptografia/descriptografia de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) ao serviço Cloud Data Fusion agente (consulte Como conceder papéis a uma conta de serviço para recursos específicos). Essa conta está no seguinte formato:

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    Conceder o papel criptografador/descriptografador do Cloud KMS CryptoKey ao agente de serviço do Cloud Data Fusion permite que o Cloud Data Fusion use CMEKs para criptografar dados do cliente armazenados em projetos de locatários.

  2. Obrigatório: conceda o papel de criptografia/descriptografia de CryptoKey do Cloud KMS ao agente de serviço do Compute Engine. Consulte Atribuir uma chave do Cloud KMS a uma conta de serviço do Cloud Storage. Essa conta, que por padrão recebe o papel de agente de serviço do Compute Engine, tem o seguinte formato:

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    Conceder o papel criptografador/descriptografador do Cloud KMS CryptoKey ao agente de serviço do Compute Engine permite que o Cloud Data Fusion use CMEKs para criptografar metadados de disco permanente (PD, na sigla em inglês) gravados pelo Dataproc. cluster em execução no pipeline.

  3. Obrigatório: conceda o papel de criptografia/descriptografia de CryptoKey do Cloud KMS ao agente de serviço do Cloud Storage. Consulte Como atribuir uma chave do Cloud KMS a uma nuvem Agente de serviço de armazenamento. Este agente de serviço tem o seguinte formato:

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    Conceder o papel criptografador/descriptografador do Cloud KMS CryptoKey ao agente de serviço do Cloud Storage permite que o Cloud Data Fusion use CMEK para criptografar dados gravados no bucket de preparo do cluster do Dataproc e quaisquer outros recursos do Cloud Storage usados pelo Pipeline.

  4. Opcional: se o pipeline usar recursos do BigQuery, conceda o papel de criptografia/descriptografia de CryptoKey do Cloud KMS à conta de serviço do BigQuery Consulte Conceder permissão de criptografia e descriptografia. O formato da conta é:

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  5. Opcional: se o pipeline usar recursos do Pub/Sub, conceda o papel de criptografia/descriptografia de CryptoKey do Cloud KMS ao Pub. /Subconta de serviço. Consulte Como usar chaves de criptografia gerenciadas pelo cliente. O formato da conta é:

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  6. Opcional: se o pipeline usar recursos do Spanner, conceda o {papel de criptografia/descriptografia de Cloud KMS CryptoKey ao serviço do Spanner. . O formato da conta é:

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

Criar uma instância do Cloud Data Fusion com CMEK

Para criar uma instância com uma chave de criptografia gerenciada pelo cliente, exporte as seguintes variáveis ou substitua esses valores diretamente nos seguintes comandos.

export PROJECT=PROJECT_ID // the user project that will host the Data Fusion instance
export LOCATION=REGION
export INSTANCE=INSTANCE_ID
export DATA_FUSION_API_NAME=datafusion.googleapis.com
export KEY=CMEK_KEY // the full resource name of the CMEK key, which is of the form projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name

Execute o comando a seguir para criar uma instância do 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"} }'

Usar o CMEK com metadados de cluster do Dataproc

Os perfis de computação pré-criados usam a chave CMEK fornecida durante a criação da instância para criptografar o disco permanente (PD, na sigla em inglês) e os metadados do bucket de preparo gravados pelo cluster do Dataproc em execução. seu pipeline. Para modificar o uso de outra chave, realize uma das seguintes ações:

  • Recomendado: crie um novo perfil de computação do Dataproc (apenas na edição Enterprise).
  • editar um perfil de computação do Dataproc (edições Basic, Basic ou Enterprise);

Console

  1. Acesse a página Instâncias do Cloud Data Fusion.

    Acesse "Instâncias"

  2. Na coluna Ações da instância, clique em Ver instância.

  3. Na IU da Web do Cloud Data Fusion, clique em ADMINISTRADOR DO SISTEMA.

  4. Clique na guia Configuration.

  5. Clique na lista suspensa Perfis de computação do sistema.

  6. Clique em Criar novo perfil.

  7. Selecione Cloud Dataproc.

  8. Insira um Rótulo de perfil, Nome do perfil e Descrição.

  9. Por padrão, o Cloud Data Fusion cria automaticamente um bucket do Cloud Storage para ser usado como o bucket de preparação do Dataproc. Se preferir usar um bucket do Cloud Storage que já existe no seu projeto, siga estas etapas:

    1. Na seção Configurações gerais, insira o bucket do Cloud Storage no campo bucket do Cloud Storage.

    2. Adicione a chave do Cloud KMS ao bucket do Cloud Storage.

  10. Consiga o ID do recurso da sua chave do Cloud KMS. Na seção General Settings, insira o ID do recurso no campo Encryption Key Name.

  11. Clique em Criar.

  12. Se mais de um perfil estiver listado na seção Perfis de computação do sistema da guia Configuração, defina o novo perfil do Dataproc mantendo o ponteiro sobre o campo de nome do perfil e clicando na estrela exibida.

    Selecione o perfil padrão.

Usar o CMEK com outros recursos

A chave CMEK fornecida é definida com a preferência do sistema durante a criação da instância do Cloud Data Fusion. Ele é usado para criptografar dados gravados em recursos recém-criados por coletores de pipeline, como coletores do Cloud Storage, BigQuery, Pub/Sub ou Spanner.

Essa chave se aplica apenas a recursos recém-criados. Se o recurso já existir antes da execução do pipeline, aplique a chave CMEK manualmente a esses recursos.

O local do recurso precisa ser o mesmo da região da chave CMEK. Um recurso de região global ou multirregional não é permitido com CMEK. É possível alterar a chave CMEK fazendo uma das seguintes ações:

  • Use um argumento de tempo de execução.
  • Defina uma preferência de sistema do Cloud Data Fusion.

Argumento de tempo de execução

  1. Na página Pipeline Studio do Cloud Data Fusion, clique na seta suspensa à direita do botão Executar.
  2. No campo Nome, use gcp.cmek.key.name.
  3. No campo Valor, insira o ID do recurso da chave.
    Selecione a edição do Data Fusion.
  4. Clique em Save.

    O argumento do ambiente de execução que você define aqui se aplica apenas às execuções do pipeline atual.

Preferência

  1. Na IU do Cloud Data Fusion, clique em ADMINISTRADOR DO SISTEMA.
  2. Clique na guia Configuration.
  3. Clique na lista suspensa Preferências do sistema.
  4. Clique em Editar preferências do sistema.
  5. No campo Chave, digite gcp.cmek.key.name.
  6. No campo Valor, insira o ID do recurso da chave.
    Selecione a edição do Data Fusion.
  7. Clique em Salvar e fechar.