Usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Informações gerais

Nesta página, descrevemos como as chaves de criptografia gerenciadas pelo cliente (CMEK) funcionam com o Datastream.

A CMEK é ideal para você?

As CMEKs são destinadas a organizações com dados sensíveis ou regulamentados que precisam gerenciar as chaves de criptografia.

Criptografia gerenciada pelo Google e criptografia gerenciada pelo cliente

O recurso CMEK permite que você use suas próprias chaves criptográficas para dados em repouso no Datastream. Depois de adicionar a CMEK, sempre que uma chamada de API for feita, o Datastream vai usar sua chave para acessar os dados.

O Datastream usa chaves de criptografia de dados (DEK) gerenciadas pelo Google e chaves de criptografia de chaves (KEK, na sigla em inglês) para criptografar o Datastream. Há dois níveis de criptografia:

  1. A DEK criptografa os dados.
  2. A KEK criptografa a DEK.

O Datastream armazena a DEK criptografada com os dados criptografados, e o Google gerencia a própria KEK. Com a CMEK, você cria uma chave que encapsula a KEK do Google. A CMEK permite criar, revogar e excluir a KEK.

As CMEKs, incluindo software, hardware e chaves externas, são gerenciadas pela API Cloud Key Management Service (KMS).

Quais locais são compatíveis com streams do Datastream ativados para CMEKs?

A CMEK está disponível em todos os locais do Datastream.

Entender as contas de serviço

Quando a CMEK está ativada nos seus streams do Datastream, você precisa usar uma conta de serviço para solicitar acesso à chave do Cloud Key Management Service.

Para usar uma CMEK em um projeto, você precisa ter uma conta de serviço e conceder o acesso de chave à conta de serviço. A conta de serviço precisa existir dentro do projeto. A conta de serviço fica visível em todas as regiões.

Se você usar o Console para criar um stream, o Datastream criará a conta de serviço automaticamente quando você escolher a opção Chave gerenciada pelo cliente (se ainda não tiver uma conta de serviço). Você não precisa ter permissões especiais na sua conta de usuário quando o Datastream cria a conta de serviço automaticamente.

Entender as chaves

No Cloud Key Management Service, crie um keyring com uma chave criptográfica definida com um local. Ao criar um novo fluxo no Datastream, você seleciona essa chave para criptografar o fluxo.

Você precisa saber o ID e a região da chave ao criar novos fluxos que usam a CMEK. Coloque os novos fluxos na mesma região que a CMEK associada a eles. É possível criar um projeto para as chaves e os streams ou projetos diferentes para cada um.

A CMEK usa o seguinte formato:

projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[RING_NAME]/cryptoKeys/[KEYNAME]

Se o Datastream não conseguir acessar a chave (por exemplo, se você desativar a versão da chave), ele mudará o estado do stream para FAILED, e uma mensagem de erro associada será exibida. Depois de solucionar os problemas associados à mensagem de erro para que a chave fique acessível novamente, o Datastream retoma a transmissão automaticamente.

Gerenciadores de chaves externas

É possível usar chaves armazenadas em gerenciadores de chaves externos, como Fortanix, Ionic ou Thales, como sua CMEK. Para saber como usar chaves externas com o Cloud Key Management Service, consulte Gerenciador de chaves externas do Cloud.

Como tornar os dados criptografados com CMEK inacessíveis permanentemente?

Pode haver situações em que você queira destruir permanentemente os dados criptografados com a CMEK. Para isso, destrói a versão da CMEK. Não é possível destruir o keyring ou a chave, mas você pode destruir versões da chave.

Restrições

As restrições a seguir se aplicam ao uso da CMEK:

  • Não é possível atualizar a CMEK em um fluxo em execução.

  • Embora seja possível usar a CMEK para criptografar linhas do banco de dados de origem, não é possível usar essas chaves para criptografar metadados de stream, como ID do fluxo, endereço IP do banco de dados de origem, nomes das tabelas do banco de dados de origem e assim por diante.

Usar CMEK

Agora que você entende a CMEK, está pronto para configurar uma conta de serviço e chaves para a CMEK. Além disso, você vai aprender a configurar o Datastream para usar a CMEK. Para saber mais sobre a CMEK, consulte a Visão geral.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  6. Instalar e inicializar o SDK do Cloud.
  7. Verifique se você tem o papel Administrador do Datastream atribuído à sua conta de usuário.

    Acessar a página IAM

  8. Ative a Cloud Key Management Service API.

    Ative a API

  9. Ative a API Datastream.

    Ativar a API

Fluxo de trabalho para criar um stream no Datastream com a CMEK

  1. Somente usuários da gcloud e da API: verifique se você tem uma conta de serviço para cada projeto que exige CMEK. Caso não tenha, saiba como criar uma conta de serviço.
  2. Crie um keyring e uma chave e defina o local de cada chave. O local é a região do Google Cloud.
  3. Somente usuários da gcloud e da API: conceda o acesso de chave à conta de serviço.
  4. Copie ou anote o ID da chave (KMS_KEY_ID) e o local da chave e o ID (KMS_KEYRING_ID) do keyring. Você precisa dessas informações ao conceder o acesso de chave à conta de serviço.
  5. Acesse um projeto e crie um stream no Datastream com as seguintes opções:
    1. O mesmo local da CMEK
    2. A configuração da CMEK
    3. O ID da CMEK

Seu fluxo no Datastream agora está ativado com a CMEK.

Crie uma conta de serviço

É necessário criar uma conta de serviço para cada projeto que exige CMEK.

Para permitir que um usuário gerencie contas de serviço, conceda um dos seguintes papéis:

  • Usuário da conta de serviço (roles/iam.serviceAccountUser): inclui permissões para listar contas de serviço, acessar detalhes sobre uma conta de serviço e representar uma conta de serviço.
  • Administrador da conta de serviço (roles/iam.serviceAccountAdmin): inclui permissões para listar contas de serviço e acessar detalhes sobre uma conta de serviço. Também inclui permissões para criar, atualizar e excluir contas de serviço e visualizar ou alterar a política do Datastream em uma conta de serviço.

Atualmente, é possível usar apenas comandos gcloud para criar o tipo de conta de serviço necessário para a CMEK. Se você estiver usando o Console, o Datastream criará essa conta de serviço automaticamente para você.

Para criar uma conta de serviço com gcloud, execute o seguinte comando:

gcloud beta services identity create \
--service=datastream.googleapis.com \
--project=PROJECT_ID

O comando anterior retorna um nome de conta de serviço. Use esse nome de conta de serviço durante o procedimento em Conceder o acesso à chave à conta de serviço.

Criar uma chave

É possível criar a chave no mesmo projeto do Google Cloud que o stream no Datastream ou em um projeto de usuário separado. O local do keyring do Cloud KMS precisa corresponder à região em que você quer criar o stream. Uma chave de região global ou de várias regiões não funcionará. Se as regiões não corresponderem, não será possível criar o stream.

Para criar uma chave do Cloud KMS:

Console

  1. No console do Google Cloud, acesse a página Chaves criptográficas.
  2. Clique em Criar keyring.
  3. Adicione um nome do keyring. Anote esse nome porque você precisará dele para conceder o acesso de chave à conta de serviço.
  4. Adicione um local de keyring.
  5. Clique em Criar. A página Criar chave é aberta.
  6. Adicione um nome de chave.
  7. Selecione uma Finalidade (simétrica ou assimétrica).
  8. Selecione um Período de rotação e A partir da data.
  9. Clique em Criar.
  10. Na tabela Chaves, clique nos três pontos na última coluna e selecione Copiar ID do recurso. Se preferir, anote o ID. Este é o KMS_KEY_ID. Você precisa do KMS_KEY_ID ao conceder o acesso de chave à conta de serviço.

gcloud

  1. Crie um novo keyring.
    gcloud kms keyrings create KMS_KEYRING_ID \
    --location=GCP_REGION
      
    Anote esse nome porque você precisa dele para conceder o acesso de chave à conta de serviço.
  2. Crie uma chave no keyring.
    gcloud kms keys create KMS_KEY_ID \
    --location=GCP_REGION \
    --keyring=KMS_KEYRING_ID \
    --purpose=encryption
      
    Anote esse nome porque você precisa dele para conceder o acesso de chave à conta de serviço.

Conceda o acesso à chave à conta de serviço

Você só precisará executar este procedimento se estiver usando gcloud ou a API.

Para conceder acesso à conta de serviço, use o seguinte código:

gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
--location=GCP_REGION \
--keyring=KMS_KEYRING_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-datastream.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Criar um fluxo no Datastream com a CMEK

Como parte da criação de um fluxo no Datastream, é possível usar a CMEK para gerenciar a criptografia dos seus dados.

Desativar e reativar versões de chave

Veja os seguintes tópicos: