Usar chaves de criptografia gerenciadas pelo cliente

Por padrão, o Google Cloud criptografa automaticamente os dados quando em repouso usando chaves de criptografia gerenciadas pelo Google. Se você tiver requisitos regulatórios ou de conformidade específicos relacionados às chaves que protegem seus dados, será possível usar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) para repositórios do Dataform.

Neste guia, descrevemos como usar a CMEK para o Dataform e mostramos como ativar a criptografia CMEK de repositórios do Dataform.

Para mais informações sobre a CMEK em geral, incluindo quando e por que ativá-la, consulte a documentação da CMEK.

Criptografia CMEK de 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 o conjunto de chaves de proteção CMEK 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 dele
  • Consultas SQL compiladas e erros de compilação
  • Consultas SQL armazenadas de ações do fluxo de trabalho
  • Detalhes do erro das ações do fluxo de trabalho executadas

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

O Dataform gerencia a criptografia de dados do cliente associados apenas aos recursos do Dataform. O Dataform não gerencia a criptografia de 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 com suporte

O Dataform oferece suporte aos seguintes tipos de chaves CMEK:

A disponibilidade da chave varia de acordo com o tipo de chave 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:

  • Não é possível aplicar uma chave de proteção CMEK a um repositório após a criação dele. Só é possível aplicar a criptografia da CMEK 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 alterar a chave de proteção CMEK de um repositório.
  • As políticas da organização de CMEK não estão disponíveis.
  • O uso das chaves do Cloud HSM está sujeito à disponibilidade. Para mais informações sobre a disponibilidade de chaves entre locais, consulte Locais do Cloud KMS.

Cotas do Cloud KMS e Dataform

É possível usar as chaves do Cloud HSM com o Dataform. Quando você usa CMEK no Dataform, seus 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 para 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

Usar o Cloud KMS para todas as operações de gerenciamento de chaves. O Dataform não pode detectar nem agir com base em alterações importantes até que elas sejam propagadas pelo Cloud KMS. Algumas operações, como a desativação ou destruição de uma chave, podem levar até três horas para serem propagadas. Em geral, mudanças nas permissões são propagadas com muito mais rapidez.

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 em dados do repositório criptografados.

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

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

Como um status de chave indisponível é tratado

Em cenários raros, como durante períodos em que o Cloud KMS está indisponível, o Dataform pode não conseguir 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 criptografados ficarão inacessíveis.

Os dados do repositório criptografados permanecem inacessíveis até que o Dataform possa se reconectar ao Cloud KMS e o Cloud KMS responda que a chave está ativa.

Por outro lado, se o repositório do Dataform estiver protegido por uma chave desativada no momento em que o Dataform não consegue se comunicar com o Cloud KMS, os dados do repositório criptografados permanecerão inacessíveis até que ele possa se reconectar ao Cloud KMS e você tenha reativado a chave.

Geração de registros

É possível auditar as solicitações que o Dataform envia ao 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 projeto. Essas entradas de registro do Cloud KMS são visíveis no Cloud Logging. Para mais informações, consulte Ver 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. Ative 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 seu 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 por 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 pode acessar a chave em seu nome depois que você concede o papel Criptografador/Descriptografador CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) do Cloud KMS à conta de serviço padrã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 criptografador/descriptografador da 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.

    Abra 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. Digite 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 do 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.

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, especifique uma chave do Cloud KMS ao criar o repositório. Para instruções, consulte Criar um repositório.

Não é possível alterar o mecanismo de criptografia de um repositório do Dataform após a criação dele.

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

A seguir