Usar chaves de criptografia gerenciadas pelo cliente (CMEK)

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

Com uma chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês), é possível criptografar dados em repouso com uma chave 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
  • vários coletores de dados, ações e origens do Cloud Storage, BigQuery, Pub/Sub e Spanner

Recursos do Cloud Data Fusion

Para ver uma lista dos plug-ins compatíveis com o Cloud Data Fusion compatíveis com CMEK, consulte os plug-ins compatíveis.

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. O CMEK protege os metadados do cluster gravados nos seguintes itens:

  • Discos permanentes (PDs) 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

Crie uma chave do Cloud KMS no projeto do Google Cloud que contém 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 a instância foi criada. Uma chave multirregional ou de região global não é permitida no nível da instância porque o Cloud Data Fusion está sempre associado a uma região específica.

Encontre 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

Substitua:

  • PROJECT_ID: o projeto do cliente que hospeda a instância do Cloud Data Fusion
  • REGION: uma região do Google Cloud que esteja perto do seu local, por exemplo, us-east1
  • KEY_RING_NAME: o nome do keyring que agrupa as chaves criptográficas.
  • KEY_NAME: o nome da cave do Cloud KMS

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 do recurso para a área de transferência.

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

Para configurar as contas de serviço do projeto para usar a chave, faça o seguinte:

  1. Obrigatório: conceda o papel de criptografador/descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) ao agente de serviço do Cloud Data Fusion (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 de 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 criptografador/descriptografador 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 este 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 riptografar metadados de disco permanente (PDs) gravados pelo cluster do Dataproc em execução no pipeline.

  3. Obrigatório: conceda o papel de criptografador/descriptografador 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 o CMEK para criptografar dados gravados no bucket de preparação do cluster do Dataproc e em outros recursos do Cloud Storage usados pelo pipeline.

  4. Obrigatório: conceda o papel criptografador/descriptografador de CryptoKey do Cloud KMS ao agente de serviço do Google Cloud Dataproc. Esse agente de serviço tem o formato:

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. Opcional: se o pipeline usar recursos do BigQuery, conceda o papel de criptografador/descriptografador de CryptoKey do Cloud KMS ao agente 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

  6. Opcional: se o pipeline usa recursos do Pub/Sub, conceda o papel de criptografador/descriptografador do Cloud KMS CryptoKey ao agente de serviço do Pub/Sub (consulte Como usar chaves de criptografia gerenciadas pelo cliente). O formato da conta é:

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

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

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

Criar uma instância do Cloud Data Fusion com CMEK

A CMEK está disponível em todas as edições do Cloud Data Fusion versão 6.5.0 e posterior.

API REST

  1. Para criar uma instância com uma chave de criptografia gerenciada pelo cliente, defina as seguintes variáveis de ambiente:

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    Substitua:

    • PROJECT_ID: o projeto do cliente que hospeda a instância do Cloud Data Fusion.
    • REGION: uma região do Google Cloud próxima da sua localização, por exemplo, us-east1
    • INSTANCE_ID: o nome da instância do Cloud Data Fusion
    • KEY_NAME: o nome completo do recurso da chave CMEK
  2. 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"} }'
    

Console

  1. Acesse a página do Cloud Data Fusion.

  2. Clique em Instâncias e depois em Criar uma instância.

    Acesse "Instâncias"

  3. Em Opções avançadas, selecione Usar uma chave de criptografia gerenciada pelo cliente (CMEK).

  4. No campo Selecionar uma chave gerenciada pelo cliente, selecione o nome do recurso da chave.

    Selecione o nome da chave de criptografia

  5. Depois de inserir todos os detalhes da instância, clique em Criar. Quando a instância estiver pronta para uso, ela será exibida na página Instâncias.

Verificar se a CMEK está ativada em uma instância

Console

Visualize os detalhes da instância:

  1. No console do Google Cloud, acesse a página do Cloud Data Fusion.

  2. Clique em Instâncias e no nome da instância para acessar a página Detalhes da instância.

    Acesse "Instâncias"

Se a CMEK estiver ativada, o campo Chave de criptografia será mostrado como Disponível.

Se a CMEK estiver desativada, o campo Chave de criptografia será mostrado como Não disponível.

Usar o CMEK com plug-ins compatíveis

Ao definir o nome da chave de criptografia, use o seguinte formato:

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

Nomes das chaves de criptografia

Na tabela a seguir, descrevemos o comportamento da chave nos plug-ins do Cloud Data Fusion compatíveis com CMEK.

Plug-ins compatíveis Comportamento da chave
Coletores do Cloud Data Fusion
Cloud Storage Criptografa dados gravados em qualquer bucket criado pelo plug-in. Se o bucket já existir, esse valor será ignorado.
Vários arquivos do Cloud Storage Criptografa dados gravados em qualquer bucket criado pelo plug-in.
BigQuery Criptografa dados gravados em qualquer bucket, conjunto de dados ou tabela criado pelo plug-in.
Várias tabelas do BigQuery Criptografa dados gravados em qualquer bucket, conjunto de dados ou tabela criado pelo plug-in.
Pub/Sub Criptografa dados gravados em qualquer tópico criado pelo plug-in. Se o tópico já existir, esse valor será ignorado.
Spanner Criptografa dados gravados em qualquer banco de dados criado pelo plug-in. Se o banco de dados já existir, esse valor será ignorado.
Ações do Cloud Data Fusion
Criação do Cloud Storage
Cópia do Cloud Storage
Migração do Cloud Storage
Arquivo de marcador concluído do Cloud Storage
Criptografa dados gravados em qualquer bucket criado pelo plug-in. Se o bucket já existir, esse valor será ignorado.
Execução do BigQuery Criptografa dados gravados no conjunto de dados ou na tabela que o plug-in cria para armazenar os resultados da consulta. Ele só será aplicável se você armazenar os resultados da consulta em uma tabela do BigQuery.
Origens do Cloud Data Fusion
Origem do BigQuery Criptografa dados gravados em qualquer bucket criado pelo plug-in. Se o bucket já existir, esse valor será ignorado.
Mecanismo SQL do Cloud Data Fusion
Mecanismo de pushdown do BigQuery Criptografa dados gravados em qualquer bucket, conjunto de dados ou tabela criado pelo plug-in.

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) e os metadados do bucket de preparo gravados pelo cluster do Dataproc em execução no 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 (somente para a edição Enterprise).
  • Edite um perfil de computação atual do Dataproc (edições Desenvolvedor, Basic ou Enterprise).

Console

  1. Abra a instância do Cloud Data Fusion:

    1. No console do Google Cloud, acesse a página do Cloud Data Fusion.

    2. Para abrir a instância na interface da Web do Cloud Data Fusion, clique em Instâncias e depois em Ver instância.

      Acesse "Instâncias"

  2. Clique em Administrador do sistema > Configuração.

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

  4. Clique em Criar novo perfil e selecione Dataproc.

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

  6. Por padrão, o Dataproc cria buckets de preparo e tempo sempre que um cluster temporário é criado pelo Cloud Data Fusion. O Cloud Data Fusion permite transmitir o bucket de preparo do Dataproc como um argumento no perfil de computação. Para criptografar o bucket de preparo, crie um bucket ativado para CMEK e transmita-o como um argumento para o Dataproc no perfil de computação.

  7. Por padrão, o Cloud Data Fusion cria automaticamente um bucket do Cloud Storage para organizar as dependências usadas pelo Dataproc. Para usar um bucket do Cloud Storage que já existe no 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.

  8. Encontre o ID do recurso da sua chave do Cloud KMS. Na seção Configurações gerais, insira o ID do recurso no campo Nome da chave de criptografia.

  9. Clique em Criar.

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

É 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 Salvar.

    O argumento de tempo de execução definido aqui se aplica somente a 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.