Usar chaves de criptografia gerenciadas pelo cliente (CMEK)

Por padrão, o Datastream criptografa o conteúdo do cliente em repouso. O Datastream executa a criptografia, e você não precisa 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, como o Datastream. Ao usar chaves do Cloud KMS, é possível 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. Ao usar o Cloud KMS, é possível também monitorar o uso de chaves, ver registros de auditoria e controlar ciclos de vida de chaves. Em vez de o Google ser proprietário e responsável pelo gerenciamento das 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 Datastream é semelhante à criptografia padrão do Google. Para saber mais sobre suas opções de criptografia, consulte Chaves de criptografia gerenciadas pelo cliente (CMEK).

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

Uma CMEK é ideal para você?

A CMEK é destinada a organizações com dados sensíveis ou regulamentados que exigem o gerenciamento das próprias chaves de criptografia.

Criptografia gerenciada pelo Google e criptografia gerenciada pelo cliente

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

O Datastream usa chaves de criptografia de dados (DEK) e chaves de criptografia de chaves (KEK) gerenciadas pelo Google para criptografar o serviço. Há dois níveis de criptografia:

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

O Datastream armazena a DEK criptografada junto com os dados criptografados, e o Google gerencia a KEK do Google. Com a CMEK, você cria uma chave que encapsula a KEK do Google. Com a CMEK, é possível criar, revogar e excluir a KEK.

A CMEK, incluindo software, hardware e chaves externas, é gerenciada pela API Cloud Key Management Service (KMS).

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

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

Entender as contas de serviço

Quando os streams do Datastream têm a CMEK ativada, 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 acesso à chave para essa conta. 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ê usa o Console para criar um fluxo, o Datastream cria a conta de serviço automaticamente quando você escolhe a opção Chave gerenciada pelo cliente pela primeira vez (se uma conta de serviço ainda não existir). Não é necessário ter permissões especiais na conta de usuário quando o Datastream cria a conta de serviço automaticamente.

Noções básicas sobre chaves

No Cloud Key Management Service, é preciso criar um keyring com uma chave criptográfica definida com um local. Ao criar um fluxo no Datastream, você seleciona essa chave para criptografá-lo.

É preciso saber qual é o ID e a região da chave ao criar novos fluxos que usam CMEK. É necessário colocar novos streams na mesma região da CMEK associada a eles. É possível criar um projeto para chaves e 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 vai mudar o estado do stream para FAILED e uma mensagem de erro associada vai aparecer. Depois de resolver os problemas associados à mensagem de erro para que a chave fique acessível novamente, o Datastream retoma o stream automaticamente.

Gerenciadores de chaves externas

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

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

Pode haver casos em que você precise destruir permanentemente os dados criptografados com CMEK. Para isso, destrua 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 seguintes restrições 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 o ID do stream, o endereço IP do banco de dados de origem ou os nomes das tabelas do banco de dados de origem.

Usar CMEK

Agora que você entende a CMEK, já pode configurar uma conta de serviço e chaves para ela. Além disso, você vai aprender a configurar o Datastream para usar a CMEK.

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  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 API Cloud Key Management Service, se ela ainda não estiver ativada.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar a API

  9. Ative a API Datastream.

    Ativar a API

Fluxo de trabalho para criar um fluxo no Datastream com CMEK

  1. Somente usuários da gcloud e da API:verifique se você tem uma conta de serviço para cada projeto que exige a CMEK. Se não tiver, 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 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, além do ID (KMS_KEYRING_ID) do keyring. Você precisa dessas informações para conceder o acesso de chave à conta de serviço.
  5. Acesse um projeto e crie uma 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.

Criar uma conta de serviço

Você precisa 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 para visualizar ou alterar a política do Datastream em uma conta de serviço.

Só é possível usar comandos gcloud para criar o tipo de conta de serviço necessária para a CMEK. Se você estiver usando o console, o Datastream vai criar essa conta de serviço automaticamente.

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. Você usa esse nome de conta de serviço durante o procedimento em Conceder acesso à chave para a conta de serviço.

Crie uma chave

É possível criar a chave no mesmo projeto do Google Cloud que o fluxo 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 fluxo. Uma chave de região global ou de várias regiões não vai 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 à chave para a 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.

Conceder acesso à chave para a 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 CMEK

Ao criar um fluxo no Datastream, você pode usar sua CMEK para gerenciar a criptografia dos dados.

A seguir