Usar chaves de criptografia gerenciadas pelo cliente

Este guia descreve o uso da CMEK para o Dataform e mostra como ativar a criptografia da CMEK para repositórios do Dataform.

Por padrão, o Dataform criptografa o conteúdo do cliente em repouso. O Dataform processa a criptografia para você sem que você precise fazer nada. Essa opção é chamada de Criptografia padrão do Google.

Se você quiser controlar suas chaves de criptografia, use chaves de criptografia gerenciadas pelo cliente (CMEKs) no Cloud KMS com serviços integrados a CMEKs, incluindo o Dataform. O uso de chaves do Cloud KMS permite controlar o nível de proteção, o local, a programação de rotação, as permissões de uso e acesso e os limites criptográficos. O uso do Cloud KMS também permite a você monitorar o uso de chaves, visualizar registros de auditoria e controlar ciclos de vida importantes. Em vez de o Google ser proprietário e gerente de chaves de criptografia de chaves (KEKs) simétricas que protegem seus dados, você controla e gerencia essas chaves no Cloud KMS.

Depois de configurar os recursos com CMEKs, a experiência de acesso aos recursos do Dataform é semelhante à criptografia padrão do Google. Para mais informações sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

Criptografia CMEK dos dados do repositório

Quando você aplica a criptografia CMEK a um repositório do Dataform, todos os dados do cliente gerenciados pelo Dataform nesse repositório são criptografados em repouso usando a chave de proteção CMEK definida para o repositório. Esses dados incluem o seguinte:

  • Conteúdo do repositório Git do repositório do Dataform e dos espaços de trabalho
  • Consultas SQL compiladas e erros de compilação
  • Consultas SQL armazenadas de ações do fluxo de trabalho
  • Detalhes do erro das ações de fluxo de trabalho executadas

O Dataform usa chaves de proteção CMEK nos seguintes cenários:

  • Durante todas as operações que exigem a descriptografia dos dados do cliente armazenados em repouso. Essas operações incluem, entre outras:
  • Durante todas as operações que exigem o armazenamento de dados do cliente em repouso. Essas operações incluem, entre outras:

O Dataform gerencia a criptografia dos dados do cliente associados apenas aos recursos do Dataform. O Dataform não gerencia a criptografia dos dados do cliente criados no BigQuery pela execução de fluxos de trabalho do Dataform. Para criptografar dados criados e armazenados no BigQuery, configure a CMEK para o BigQuery.

Chaves compatíveis

O Dataform oferece suporte aos seguintes tipos de chaves CMEK:

A disponibilidade da chave varia de acordo com o tipo e a região. Para mais informações sobre a disponibilidade geográfica das chaves CMEK, consulte Locais do Cloud KMS.

Restrições

O Dataform oferece suporte a CMEK com as seguintes restrições:

  • O tamanho máximo de um repositório criptografado com CMEK é de 512 MB.
  • O tamanho máximo de um espaço de trabalho em um repositório criptografado por CMEK é de 512 MB.
  • Não é possível aplicar uma chave de proteção CMEK a um repositório depois que ele é criado. É possível aplicar a criptografia CMEK somente durante a criação do repositório.
  • Não é possível remover uma chave de proteção CMEK de um repositório.
  • Não é possível mudar uma chave de proteção CMEK de um repositório.
  • Se você definir uma chave de CMEK padrão do Dataform para seu projeto do Google Cloud, todos os novos repositórios criados no local do projeto do Google Cloud precisarão ser criptografados com a CMEK. Ao criar um novo repositório no local do projeto do Google Cloud, é possível aplicar a chave padrão do Dataform CMEK ou uma chave CMEK diferente, mas não é possível aplicar a criptografia padrão em repouso.
  • Se você mudar o valor de uma chave CMEK padrão do Dataform, o valor anterior será aplicado aos repositórios já existentes, e o valor atualizado será aplicado aos repositórios criados após a mudança.
  • Só é possível definir uma chave de CMEK padrão do Dataform por local dos repositórios de projetos do Google Cloud.
  • As políticas da organização de CMEK não estão disponíveis.
  • O uso das chaves do Cloud HSM e do Cloud EKM está sujeito à disponibilidade. Para mais informações sobre a disponibilidade de chaves em vários locais, consulte Locais do Cloud KMS.

Cotas do Cloud KMS e Dataform

É possível usar chaves do Cloud HSM e do Cloud EKM com o Dataform. Ao usar a CMEK no Dataform, os projetos podem consumir cotas de solicitações criptográficas do Cloud KMS. Por exemplo, os repositórios do Dataform criptografados por CMEK podem consumir essas cotas em cada alteração no conteúdo do repositório. As operações de criptografia e descriptografia que usam chaves CMEK só afetam as cotas do Cloud KMS se você usar chaves de hardware (Cloud HSM) ou externas (Cloud EKM). Para mais informações, consulte Cotas do Cloud KMS.

Como gerenciar chaves

Use o Cloud KMS para todas as operações de gerenciamento de chaves. O Dataform não pode detectar nem agir sobre nenhuma alteração de chave até que seja propagada pelo Cloud KMS. Algumas operações, como a desativação ou a destruição de uma chave, podem levar até três horas para serem propagadas. As alterações nas permissões geralmente são propagadas muito mais rápido.

Depois que o repositório é criado, o Dataform chama o Cloud KMS para garantir que a chave ainda seja válida durante cada operação nos dados criptografados do repositório.

Se o Dataform detectar que a chave do Cloud KMS foi desativada ou destruída, todos os dados armazenados no repositório correspondente serão inacessíveis.

Se as chamadas do Dataform para o Cloud KMS detectarem que uma chave desativada anteriormente foi reativada, o Dataform vai restaurar o acesso automaticamente.

Usar chaves externas com o Cloud EKM

Como alternativa ao uso de chaves que residem no Cloud KMS, você pode usar chaves que residem em um parceiro externo de gerenciamento de chaves com suporte. Para fazer isso, use o Cloud External Key Manager (Cloud EKM) para criar e gerenciar chaves externas, que são ponteiros para chaves que residem fora de Google Cloud. Para mais informações, consulte Gerenciador de chaves externo do Cloud.

Depois de criar uma chave externa com o Cloud EKM, você pode aplicá-la a um novo repositório do Dataform fornecendo o ID dessa chave ao criar o repositório. Esse procedimento é o mesmo que aplicar uma chave do Cloud KMS a um novo repositório.

Usar chaves CMEK padrão do Dataform

Para criptografar vários repositórios do Dataform com a mesma chave CMEK, defina uma chave CMEK padrão do Dataform para seu projeto do Google Cloud. É necessário especificar o local do projeto do Google Cloud para a chave CMEK padrão do Dataform. Só é possível definir uma chave CMEK padrão por projeto do Google Cloud.

Depois de definir uma chave de CMEK padrão do Dataform, o Dataform aplica a chave a todos os novos repositórios criados no local do projeto do Google Cloud por padrão. Ao criar um repositório, use a chave padrão ou selecione uma chave CMEK diferente.

Como um status de chave indisponível é tratado

Em cenários raros, como em períodos em que o Cloud KMS não está disponível, o Dataform talvez não consiga recuperar o status da sua chave do Cloud KMS.

Se o repositório do Dataform estiver protegido por uma chave ativada no momento em que o Dataform não conseguir se comunicar com o Cloud KMS, os dados do repositório criptografado serão inacessíveis.

Os dados do repositório criptografado permanecem inacessíveis até que o Dataform possa se reconectar com o Cloud KMS, e o Cloud KMS responder que a chave está ativa.

Por outro lado, se o repositório do Dataform estiver protegido por uma chave desativada durante o primeiro momento em que o Dataform não conseguir se comunicar com o Cloud KMS, os dados do repositório criptografado permanecerão inacessíveis até que seja possível se reconectar ao Cloud KMS e você reativar sua chave.

Logging

É possível auditar as solicitações que o Dataform envia para o Cloud KMS em seu nome no Cloud Logging, se você tiver ativado a geração de registros de auditoria para a API Cloud KMS no seu projeto. Essas entradas de registro do Cloud KMS são visíveis no Cloud Logging. Para mais informações, consulte Conferir registros.

Antes de começar

  • Decida se você vai executar o Dataform e o Cloud KMS em projetos diferentes ou no mesmo projeto. Recomendamos o uso de projetos separados para ter mais controle sobre as permissões. Para informações sobre os códigos de projeto e os números de projeto do Google Cloud, consulte Como identificar projetos.

  • Para o projeto do Google Cloud que executa o Cloud KMS:

    1. Ativar a API Cloud Key Management Service
    2. Crie um keyring e uma chave, conforme descrito em Como criar keyrings e chaves. Crie o keyring em um local que corresponda ao local do repositório do Dataform:
      • Os repositórios precisam usar chaves regionais correspondentes. Por exemplo, um repositório na região asia-northeast3 precisa ser protegido com uma chave de um keyring localizado em asia-northeast3.
      • A região global não pode ser usada com o Dataform.
      Para mais informações sobre os locais compatíveis com o Dataform e o Cloud KMS, consulte Locais do Cloud.

Ativar a CMEK

O Dataform poderá acessar a chave em seu nome depois que você conceder o papel Criptografador/Descriptografador do Cloud KMS CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) ao padrão da conta de serviço do Dataform.

O ID da conta de serviço padrão do Dataform tem o seguinte formato:

service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

Para conceder o papel de criptografador/descriptografador do CryptoKey à conta de serviço padrão do Dataform, siga estas etapas:

Console

  1. Abra a página Gerenciamento de chaves no console do Google Cloud.

    Abrir a página Gerenciamento de chaves

  2. Clique no nome do keyring que contém a chave.

  3. Clique na caixa de seleção da chave de criptografia à qual você quer adicionar o papel. A guia Permissões será aberta.

  4. Clique em Adicionar membro.

  5. Insira o endereço de e-mail da conta de serviço

    • Se já estiver na lista de membros, a conta de serviço tem papéis. Clique na lista suspensa do papel atual da conta de serviço.
  6. Clique na lista suspensa Selecionar um papel, clique em Cloud KMS e, depois, clique no papel Criptografador/Descriptografador de CryptoKey do Cloud KMS.

  7. Clique em Salvar para aplicar o papel à conta de serviço.

gcloud

Use a Google Cloud CLI para atribuir a função:

gcloud kms keys add-iam-policy-binding \
    --project=KMS_PROJECT_ID \
    --member serviceAccount:SERVICE_ACCOUNT \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
    --location=KMS_KEY_LOCATION \
    --keyring=KMS_KEY_RING \
    KMS_KEY

Substitua:

  • KMS_PROJECT_ID: o ID do projeto Google Cloud que está executando o Cloud KMS.
  • SERVICE_ACCOUNT: o endereço de e-mail da sua conta de serviço padrão do Dataform
  • KMS_KEY_LOCATION: o nome do local da chave do Cloud KMS.
  • KMS_KEY_RING: o nome do keyring da chave do Cloud KMS
  • KMS_KEY: o nome da chave do Cloud KMS.

Definir uma chave de CMEK padrão do Dataform

Ao definir uma chave de CMEK padrão do Dataform para seu projeto do Google Cloud, você pode criptografar vários repositórios com a mesma chave de CMEK. Para mais informações, consulte Usar uma chave padrão para repositórios do Dataform.

Para definir ou editar uma chave CMEK padrão, chame a API Dataform na seguinte solicitação:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":"projects/PROJECT_ID/locations/PROJECT_LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY"}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Substitua:

  • KMS_KEY_RING: o nome do keyring da chave do Cloud KMS.
  • KMS_KEY: o nome da chave do Cloud KMS.
  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • PROJECT_LOCATION: o nome do local do seu projeto do Google Cloud.

Remover uma chave CMEK padrão do Dataform

Para remover uma chave de CMEK padrão do Dataform do seu projeto do Google Cloud, chame a API Dataform na seguinte solicitação:

curl -X PATCH \
-H "Content-Type: application/json" \
-d '{"defaultKmsKeyName":""}' \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Substitua:

  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • PROJECT_LOCATION: o nome do local do seu projeto do Google Cloud em que você quer desativar a CMEK padrão.

Verificar se uma chave CMEK padrão do Dataform está definida

Para verificar se uma chave de CMEK do Dataform padrão está definida para seu projeto do Google Cloud, chame a API Dataform na seguinte solicitação:

curl -X GET \
-H "Content-Type: application/json" \
https://dataform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/PROJECT_LOCATION/config

Substitua:

  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • PROJECT_LOCATION: o nome do local do seu projeto do Google Cloud.

Aplicar a CMEK a um repositório

É possível aplicar a proteção CMEK a um repositório do Dataform durante a criação do repositório.

Para aplicar a criptografia CMEK a um repositório do Dataform, selecione a criptografia com a chave padrão do Dataform CMEK ou especifique uma chave exclusiva do Cloud KMS ao criar o repositório. Para instruções, consulte Criar um repositório.

Não é possível mudar o mecanismo de criptografia de um repositório do Dataform depois que ele é criado.

Para mais informações, consulte Restrições.

A seguir